带有“ hashicorp / terraform:full”的Gitlab CICD管道,带有“ terraform:找不到命令”的图像错误

时间:2019-06-13 14:02:13

标签: docker gitlab terraform gitlab-ci gitlab-ci-runner

我有一个Gitlab管道来使用Terraform部署AWS基础设施。当我使用hashicorp/terraform:light图像时,一切正常。但是,当我使用hashicorp/terraform:full时,显然找不到terraform

下面是我拥有的.gitlab-ci.yml文件:

image:
  name: hashicorp/terraform:light
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

before_script:
  - rm -rf .terraform
  - export AWS_ACCESS_KEY
  - export AWS_SECRET_KEY
  - terraform init

stages:
  - validate
  - plan
  - apply

validate:
  stage: validate
  script:
    - terraform validate

plan:
  stage: plan
  script:
    - terraform plan -out "planfile"
  dependencies:
    - validate
  artifacts:
    paths:
      - planfile

apply:
  stage: apply
  script:
    - terraform apply -input=false "planfile"
  dependencies:
    - plan
  when: manual

使用hashicorp/terraform:light时:

enter image description here

使用hashicorp/terraform:full时:

enter image description here

因此,即使没有其他更改,使用hashicorp/terraform:full我也会遇到command not found错误。

我如何使用hashicorp/terraform:full Docker映像来完成这项工作?

1 个答案:

答案 0 :(得分:3)

为什么要更改图像中的路径?

hashicorp/terraform:full中? terraform二进制文件位于该图像的/go/bin/下,而它位于/bin/图像的light下。

如果您不弄乱路径,那应该没问题。或者,在您的路径中包含/go/bin/,这也应该解决该问题。

另外,导出这样的变量实际上并没有实现任何目的。