Я пытаюсь динамически получать список виртуальных машин из 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}")}"])
}
)
}