terraform:在 gitlab CI 环境中找不到命令
terraform: command not found in gitlab CI environment
我有以下 CI 配置:
variables:
TF_ROOT: ${CI_PROJECT_DIR}
TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${CI_PROJECT_NAME}
TF_CLI_CONFIG_FILE: $CI_PROJECT_DIR/.terraformrc
default:
image: hashicorp/terraform:light
cache:
key: ${CI_PROJECT_NAME}
paths:
- ${TF_ROOT}/.terraform
before_script:
- echo -e "credentials \"$CI_SERVER_HOST\" {\n token = \"$CI_JOB_TOKEN\"\n}" > $TF_CLI_CONFIG_FILE
- cd ${TF_ROOT}
- export TF_LOG_CORE=TRACE
- export TF_LOG_PATH=terraform_logs.txt
stages:
- prepare
init:
stage: prepare
script:
- terraform -v
- terraform init
但在 prepare
阶段我得到:
$ terraform -v
bash: line 135: terraform: command not found
我的理解是通过使用 hashicorp/terraform:light
作为基础图像,我在整个运行器环境中获得 terraform
可用,但情况似乎并非如此。
任何人都可以纠正我我做错了什么吗?
我猜你必须使用 'latest' 图像而不是 'light'。使用以下内容更新 'default' 部分。它具有已初始化 PATH 的入口点详细信息。
default:
image:
name: hashicorp/terraform:latest
entrypoint:
- /usr/bin/env
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
参考:https://matavelli.io/posts/2020/01/setup-gitlab-ci-with-terraform/
My understanding is by using hashicorp/terraform:light as base image,
i get terraform available throughout the runner environment but that
doesn't seems to be the case
但是在您使用的代码中 gitlab-terraform
并且在 hashicorp/terraform:light
图像中似乎不可用。
尝试下图,来自 gitlab 注册表
default:
image: registry.gitlab.com/gitlab-org/terraform-images/stable:latest
如果您想使用 terraform
命令,请添加以下内容
default:
image:
name: hashicorp/terraform:light
entrypoint:
- /usr/bin/env
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
问题是 gitlab-runner 被配置为 shell
执行器。这使得整个 image: hashicorp/terraform:light
部分变得多余,并且 terraform
应该安装在运行运行程序的主机本身上。
我有以下 CI 配置:
variables:
TF_ROOT: ${CI_PROJECT_DIR}
TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${CI_PROJECT_NAME}
TF_CLI_CONFIG_FILE: $CI_PROJECT_DIR/.terraformrc
default:
image: hashicorp/terraform:light
cache:
key: ${CI_PROJECT_NAME}
paths:
- ${TF_ROOT}/.terraform
before_script:
- echo -e "credentials \"$CI_SERVER_HOST\" {\n token = \"$CI_JOB_TOKEN\"\n}" > $TF_CLI_CONFIG_FILE
- cd ${TF_ROOT}
- export TF_LOG_CORE=TRACE
- export TF_LOG_PATH=terraform_logs.txt
stages:
- prepare
init:
stage: prepare
script:
- terraform -v
- terraform init
但在 prepare
阶段我得到:
$ terraform -v
bash: line 135: terraform: command not found
我的理解是通过使用 hashicorp/terraform:light
作为基础图像,我在整个运行器环境中获得 terraform
可用,但情况似乎并非如此。
任何人都可以纠正我我做错了什么吗?
我猜你必须使用 'latest' 图像而不是 'light'。使用以下内容更新 'default' 部分。它具有已初始化 PATH 的入口点详细信息。
default:
image:
name: hashicorp/terraform:latest
entrypoint:
- /usr/bin/env
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
参考:https://matavelli.io/posts/2020/01/setup-gitlab-ci-with-terraform/
My understanding is by using hashicorp/terraform:light as base image, i get terraform available throughout the runner environment but that doesn't seems to be the case
但是在您使用的代码中 gitlab-terraform
并且在 hashicorp/terraform:light
图像中似乎不可用。
尝试下图,来自 gitlab 注册表
default:
image: registry.gitlab.com/gitlab-org/terraform-images/stable:latest
如果您想使用 terraform
命令,请添加以下内容
default:
image:
name: hashicorp/terraform:light
entrypoint:
- /usr/bin/env
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
问题是 gitlab-runner 被配置为 shell
执行器。这使得整个 image: hashicorp/terraform:light
部分变得多余,并且 terraform
应该安装在运行运行程序的主机本身上。