Назад | Перейти на главную страницу

Как просмотреть список объектов в Terraform?

Я пытаюсь динамически получать список виртуальных машин из Azure с использованием внешнего источника данных и отображать виртуальную машину индивидуально.

Ниже приведен сценарий Powershell:

$rgroup = [Console]::In.ReadLine()
$json = ConvertFrom-Json $rgroup
$name = $json.rg
$vms=(Get-AzVM -ResourceGroupName $name ).name
foreach ($vm in $vms){
$vmname= $vm |convertTo-json
Write-Output  "{""Name"" : $vmname}"}

Main.tf

variable "resourcegroup" {}
data "external" "test" {
program = ["Powershell.exe", "./vm.ps1"]
query = {
rg = "${var.resourcegroup}"
}}
output "value" {
value = "${data.external.test.result.name}}

Однако я получаю сообщение об ошибке:

"команда" Powershell.exe "создала недопустимый JSON: недопустимый символ '{' после значения верхнего уровня"

Может ли кто-нибудь сказать мне, как просмотреть список виртуальных машин и отобразить его по отдельности?

Я написал модуль terraform, чтобы помочь с добавлением ключей ssh ​​в метаданные gcp. это не прямой ответ на ваш вопрос, но он должен вам помочь.

variable "ssh_keys" {
  type = list(object({
    user = string
    key = string
  }))
  default = [
    {
      user = "terraform"
      key = "~/.ssh/google_compute_engine.pub"
    },
    {
      user = "user"
      key = "~/.ssh/id_rsa.pub"
    }
  ]
}
resource "google_compute_project_metadata" "default" {
  metadata = merge(
    {
      ssh-keys = join("\n", [for k,v in var.ssh_keys : "${var.ssh_keys[k].user}:${file("${var.ssh_keys[k].key}")}"])
    }
  )
}