簡體   English   中英

在廚房使用 terraform output terraform 測試

[英]Using terraform output in kitchen terraform tests

我正在使用 Kitchen terraform 在 GCP 上部署/測試環境。

我正在努力讓 kitchen/inspec 部分使用 terraform output 值,所以我可以在我的測試中使用它們。

這就是我所擁有的

我的 inspec.yml

name: default
depends:
  - name: inspec-gcp
    url: https://github.com/inspec/inspec-gcp/archive/master.tar.gz
supports:
  - platform: gcp
attributes:
- name: gcloud_project
  required: true
  description: gcp project
  type: string

我的廚房 Yaml

driver:
  name: terraform
  root_module_directory: test/fixtures/tf_module

provisioner:
  name: terraform

verifier:
  name: terraform
  format: documentation
  systems:
    - name: default
      backend: gcp
      controls:
        - instance

platforms:
  - name: terraform

suites:
  - name: kt_suite

我的單元測試

gcloud_project = attribute('gcloud_project', 
  { description: "The name of the project where resources are deployed." })

  control "instance" do
    describe google_compute_instance(project: "#{gcloud_project}",  zone: 'us-central1-c', name: 'test') do
        its('status') { should eq 'RUNNING' }
      its('machine_type') { should match 'n1-standard-1' }
    end
  end

我的 output.tf

output "gcloud_project" {
  description = "The name of the GCP project to deploy against. We need this output to pass the value to tests."
  value       = "${var.project}"
}

我得到的錯誤是

  ×  instance: /mnt/c/Users/Github/terra-test-project/test/integration/kt_suite/controls/default.rb:4
     ×  Control Source Code Error /mnt/c/Users/Github/terra-test-project/test/integration/kt_suite/controls/default.rb:4
     bad URI(is not URI?): "https://compute.googleapis.com/compute/v1/projects/Input 'gcloud_project' does not have a value. Skipping test./zones/us-central1-c/instances/test"

如果我直接在控制循環中聲明項目名稱,一切都會正常,但顯然不想這樣做。

我怎樣才能讓 kitchen/inspec 使用 terraform 輸出?

看起來這可能只是由於打字錯誤。 您已在gcp_projectattributes下列出了inspec.yml ,但在其他任何地方都列出了gcloud_project

不確定這是否已修復,但我正在使用類似下面的東西並且效果很好。 我認為這可能是您使用 google_project 屬性的方式。

單元測試

dataset_name   = input('dataset_name')
account_name = input('account_name')
project_id = input('project_id')

control "gcp" do
  title "Google Cloud configuration"

  describe google_service_account(
    name: account_name,
    project: project_id
  ) do
    it { should exist }
  end
  describe google_bigquery_dataset(
    name: dataset_name,
    project: project_id
  ) do
    it { should exist }
  end
end

檢查.yml

name: big_query
depends:
  - name: inspec-gcp
    git: https://github.com/inspec/inspec-gcp.git
    tag: v1.8.0
supports:
  - platform: gcp
inputs:
  - name: dataset_name
    required: true
    type: string
  - name: account_name
    required: true
    type: string
  - name : project_id
    required: true
    type: string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM