大厅 ci 作业参数化

concourse ci job parameterization

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

例如:

  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 * (prod/ppe/qa/dev)
  2. 如何用文件管理变量?
vars:
    region: ((vault:kv/my-vault.region))

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

是否有可能在大厅中执行此操作?

尝试改变

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

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

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