0

我想为不同的环境参数化工作。

例如:

  resources:
  - name: prod
    type: terraform
    icon: terraform
    source: 
      backend_type: s3
      backend_config: 
        env_name: prod
        bucket: 
        key: 
      env:
        AWS_ACCESS_KEY_ID: ((aws-sts:prod.access_key))
        AWS_SECRET_ACCESS_KEY: ((aws-sts:prod.secret_key))
        AWS_SESSION_TOKEN: ((aws-sts:prod.security_token))
        AWS_REGION: ((vault:kv/my-vault.region))

jobs: 
    - name: terraform plan prod 
      disable_manual_trigger: true
      plan:
        - get: git-repo-prod
          trigger: true
        - put: prod
          params:
            env_name: prod
            terraform_source: git-repo-prod/terraform
            plan_only: true
            vars:
              region: ((vault:kv/my-vault.region))
      

2个问题:

  1. 我如何为这项工作创建模板。例如,现在我有工作terraform plan prod,我想为具有不同环境的不同工作提供 1 个模板。terraform plan *(产品/ppe/qa/dev)
  2. 如何使用文件管理变量?
vars:
    region: ((vault:kv/my-vault.region))

我可以使用vars_file,但在这种情况下,大厅将变量作为刺痛转移到 terraform(region: ((vault:kv/my-vault.region))类似这样的东西)

有没有可能在大厅里这样做?

4

1 回答 1

1

尝试改变

vars:
  region: ((vault:kv/my-vault.region))

vars: ((vault:kv/my-vault))

当 concourse 遇到带有子字段的字段时(value在 Vault 中不是这样),它会将它们视为要在 yaml 中呈现的对象类型。祝你好运!

于 2020-09-09T13:04:51.273 回答