Как передать переменную списка PowerShell в terraform с помощью Azure Devops? - PullRequest
1 голос
/ 25 мая 2020

У меня есть список, который заполнен адресными префиксами, например 192.168.1.0 / 24

$listOfSubnetsToBeCreated = @() 
Write-Host "##vso[task.setvariable variable=availableSubnetList]$listOfSubnetsToBeCreated"

, созданный в PowerShell и переданный в переменную конвейера azure DevOps, которую у меня уже есть определяется в Azure Devops. enter image description here Я использую эту переменную, которая устанавливается при запуске с помощью

terraform apply -var="availableSubnetList=$(availableSubnetList)" 

в моей задаче Terraform для создания su bnet. Ниже приведен сценарий tf:

variable "availableSubnetList" {
  type = list(string)
  default = [""]
}
resource "azurerm_subnet" "Subnet-lab" {
    count = var.project_subnet_number
    name = join("-", ["${var.LabRGName}","subnet", "${count.index + 1}"])
    resource_group_name = var.AdminRGName
    virtual_network_name = var.lab_vnet
    address_prefix = var.availableSubnetList[count.index]
}

Когда я запускал конвейер, у меня возникает следующая ошибка в terraform apply task:

2020-05-25T14:39:52.5509261Z [0m  on <value for var.availableSubnetList> line 1:
2020-05-25T14:39:52.5510090Z   (source code not available)
2020-05-25T14:39:52.5510378Z 
2020-05-25T14:39:52.5510814Z This character is not used within the language.
2020-05-25T14:39:52.5511149Z [0m[0m
2020-05-25T14:39:52.5511412Z [31m
2020-05-25T14:39:52.5512135Z [1m[31mError: [0m[0m[1mInvalid expression[0m
2020-05-25T14:39:52.5512438Z 
2020-05-25T14:39:52.5512833Z [0m  on <value for var.availableSubnetList> line 1:
2020-05-25T14:39:52.5513301Z   (source code not available)
2020-05-25T14:39:52.5513582Z 
2020-05-25T14:39:52.5513977Z Expected the start of an expression, but found an invalid expression token.
2020-05-25T14:39:52.5514566Z [0m[0m

Afaik, переменные в Azure Devops - это строки. Есть ли у вас идеи, как правильно перенести список PowerShell в терраформ с помощью Azure Devops?

1 Ответ

3 голосов
/ 25 мая 2020

Вывести из сценария PowerShell строку подсетей, разделенных запятыми:

Write-Host "##vso[task.setvariable variable=availableSubnetList]$($listOfSubnetsToBeCreated -join ',')"

Затем снова разделить ее на список при вызове terraform:

terraform apply -var='availableSubnetList=${split(",", $(availableSubnetList))}'

Или измените способ разрешить каждый su bnet в терраформе:

address_prefix = split(",", var.availableSubnetList)[count.index]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...