Я пытаюсь запустить Terraform с шага PowerShell в YAML-настроенном конвейере DevOps, но я не могу заставить его принять мое заклинание: вместо инициализации состояния он печатаетинструкции по использованию и выходы.
Я пробовал несколько комбинаций с / без кавычек для параметра -backend-config
, но, похоже, ничего не работает.
Если я вырезал и вставлялсценарий в файл ps1
локально и запустите его, все работает как положено.
Что не так с моим заклинанием ./terraform.exe init
здесь?
Вот конфигурация конвейера в полном объеме:
pool:
vmImage: 'win1803'
steps:
- powershell: |
# Download the Terraform executable into the current directory
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$url = 'https://releases.hashicorp.com/terraform/0.11.8/terraform_0.11.8_windows_amd64.zip'
$output = "$PSScriptRoot\terraform.zip"
Write-Host "Downloading from $url to $output"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)
Expand-Archive $output -DestinationPath . -Force
Get-ChildItem
displayName: 'Download Terraform executable'
- powershell: |
# Create a config file with secrets, and initialize Terraform
"storage_account_name = `"$env:TerraformStateAccountName`"" | Out-File "./terraform-state.secrets.tfvars" -Append
"access_key = `"$env:TerraformStateAccountKey`"" | Out-File "./terraform-state.secrets.tfvars" -Append
"container_name = `"$env:TerraformStateContainer`"" | Out-File "./terraform-state.secrets.tfvars" -Append
./terraform.exe init -backend-config=./terraform-state.secrets.tfvars -input=false
env:
TerraformStateAccountName: $(Terraform.State.StorageAccountName)
TerraformStateAccountKey: $(Terraform.State.StorageAccountKey)
TerraformStateContainer: $(Terraform.State.ContainerName)
displayName: 'Initialize Terraform'