我正在使用下面的GitLab管道在Azure上部署一个Kubernetes集群
image:
name: hashicorp/terraform:1.2.3
entrypoint:
- '/usr/bin/env'
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
variables:
TF_ROOT: ${CI_PROJECT_DIR}/infrastructure
TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${CI_PROJECT_NAME}
cache:
key: my-services
paths:
- ${TF_ROOT}/.terraform
before_script:
- cd ${TF_ROOT}
- rm -rf .terraform
- terraform --version
- terraform init
stages:
- terraform_validate
- terraform_plan
- terraform_apply
terraform_validate_dev:
stage: terraform_validate
environment:
name: development
script:
- terraform validate
rules:
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
terraform_plan_dev:
stage: terraform_plan
environment:
name: development
script:
- terraform plan
- terraform plan-json
dependencies:
- terraform_validate_dev
artifacts:
name: plan deployment
paths:
- ${TF_ROOT}/plan.cache
reports:
terraform: ${TF_ROOT}/plan.json
rules:
- if: $CI_COMMIT_BRANCH == "development"
terraform_apply_dev:
stage: terraform_apply
environment:
name: development
script:
- terraform apply
dependencies:
- terraform_plan_dev
rules:
- if: $CI_COMMIT_BRANCH == "development"
when: manual但是在terraform_plan阶段,我收到以下错误:
"Error: building AzureRM Client: please ensure you have installed Azure CLI version 2.0.79 or newer. Error parsing json result from the Azure CLI: launching Azure CLI: exec: "az": executable file not found in $PATH."有什么想法吗?
发布于 2022-06-19 07:37:34
最后,我找到了问题所在。
不幸的是,@sytech提出的解决方案并没有解决问题,而是帮助我发现了真正的问题。
作为一种良好的实践,希望部署或使用Azure服务的自动化工具应该始终使用服务主体。因此,我在Azure中创建了一个服务主体,并试图将它与Terraform代码一起使用。正如文档所说,要使用服务主体,我们需要创建以下环境变量:
ARM_CLIENT_ID
ARM_CLIENT_SECRET
ARM_SUBSCRIPTION_ID
ARM_TENANT_ID一旦我添加了这些环境变量,terraform_plan阶段就能够完成它的工作。
发布于 2022-06-18 19:36:06
正如错误消息所解释的,您必须使用安装天蓝色CLI。
例如:
# ...
before_script:
- curl -L https://aka.ms/InstallAzureCli | bash
# ...https://stackoverflow.com/questions/72671683
复制相似问题