#windows #terraform #azure-cli
#Windows #terraform #azure-cli
Вопрос:
Я сохранил ключ хранилища Azure в хранилище ключей, и я хочу получить ключ с помощью Azure cli и установить его как env. переменную в window cmd, прежде чем запускать сценарий terraform.
Приведенная ниже команда не работает, кто-нибудь может сказать мне, что нужно изменить?
set ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault)
Ошибка при инициализации
Main.tf
variable "count" {}
variable "prefix" {
default="RG"
}
terraform {
backend "azurerm" {
container_name = "new"
storage_account_name = "mfarg"
key = "terraform.tfstate"
}}
resource "azurerm_resource_group" "test" {
count ="${var.count}"
name = "${var.prefix}-${count.index}"
location = "West US 2"
}
Вывод командной строки
Комментарии:
1. Если вы не получили достаточно ответов здесь, вы также можете задать аналогичный вопрос по ошибке сервера или суперпользователю .
2. вы присваиваете многострочный документ JSON переменной, которая, вероятно, завершается ошибкой. используйте «—путь запроса —вывод tsv», чтобы получить именно то свойство, которое вам нужно.
Ответ №1:
Чтобы задать переменную среды в Windows, я предлагаю вам использовать команду PowerShell для достижения этой цели. В PowerShell вы можете просто сделать это следующим образом:
$env:ACCESS_KEY=$(az keyvault secret show -n terraform-backend-key --vault-name myKeyVault --query value -o tsv)
Кроме того, в вашей командной строке вы не смогли показать секрет напрямую, она выводит весь секрет, а не только ключ доступа, как вы хотите. Посмотрите на разницу между двумя командами.
Комментарии:
1. Я попытался установить env. переменную, как предложено вами, но после ее установки я получаю сообщение об ошибке при инициализации terraform (с использованием хранилища terraform remote state azure) для сохранения файла состояния в azure, связана ли ошибка с модулем AzureRM? потому что я работаю над новым модулем AZ
2. @user2549572 Сохраняйте состояние в хранилище Azure, вам следует экспортировать переменную среды
ARM_ACCESS_KEY
, а неACCESS_KEY
. Я просто покажу вам, как установить переменную среды через PowerShell.3. Извините, я виноват. это сработало после изменения имени. Можете ли вы также рассказать мне, как установить env. variable с помощью командной строки?
4. @user2549572 Вы можете использовать предоставленную вами команду
set var=''
. Но, похоже, вы можете установить переменную с помощью вывода команды CLI напрямую.5. @user2549572 Как я уже сказал, похоже, вы не можете установить вывод команды в виде переменной напрямую. Я также не нахожу способ.
Ответ №2:
Поздний ответ, но, возможно, полезный для тех, у кого все еще есть та же проблема. Этот метод будет работать в командной строке Windows, cmd.
For /f %%i in ('az keyvault secret show --vault-name "Your-KeyVault-Name" --name "Your-Secret-Name" --query "value"') do set "password=%%i"
Теперь, если вы просто запустите «echo % password%», вы увидите свое секретное значение.
Помните, что команда az должна находиться между ‘ ‘, например ‘az keyvault secret и т.д.’.