Как сослаться на переменную в файле Terraform для DevOps / VSTS Azure - PullRequest
0 голосов
/ 18 января 2019

Я создал простой конвейер. Репозиторий Github с Azure DevOps Сборка конвейер.

Я определил указанные ниже переменные в файле ax.tf, который находится в частном репозитории Github:

ARM_CLIENT_ID
ARM_CLIENT_SECRET
ARM_SUBSCRIPTION_ID
ARM_TENANT_ID

Конвейер сборки имеет простое задание командной строки, как показано ниже:

sudo apt install wget

wget https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip

sudo apt-get install unzip

unzip terraform_0.11.11_linux_amd64.zip

terraform init

terraform plan -var-file=terraform.tfvars -out=ax.plan

terraform apply ax.plan

terraform destroy -auto-approve

Я хочу знать, как ссылаться на эти переменные сборки в файле Terraform ax.tf?

Я сделал что-то похожее на приведенное ниже в документации по Azure DevOps, но оно не работает:

variable "ARM_SUBSCRIPTION_ID" {
    default="$(Build.ARM_SUBSCRIPTION_ID)"
}

К сожалению, он не работает должным образом и останавливается на уровне выполнения ниже:

[0m[1m[32mTerraform has been successfully initialized![0m[32m[0m
[0m[32m
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.[0m
[0m[1mvar.ARM_CLIENT_ID[0m

Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Согласно документации Terraform , вам необходимо создать переменные окружения с именем TF_VAR_x для Terraform, чтобы автоматически подобрать их. Итак, в вашем определении сборки создайте переменную с именем TF_VAR_ARM_SUBSCRIPTION_ID. Несекретные переменные сборки автоматически превращаются в переменные среды.

Другой вариант - передать значение переменной в скрипт Terraform, указав -var 'ARM_SUBSCRIPTIONID=$(ARM_SUBSCRIPTION_ID)' в командной строке

...