Расшифровка Windows Пароль в терраформе - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь настроить скрипт Terraform для развертывания сервера windows. При запуске terraform apply появляется сообщение об ошибке со ссылкой ниже

Error: Invalid reference

  on main.tf line 44, in resource "aws_instance" "server":
  44:       password = "${rsadecrypt(aws_instance.server[0].password_data, file(KEY_PATH))}"

A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.

AFAIK. Ресурс - «aws_instance», имя - «server [0]», а атрибут - «password_data». Я знаю, что что-то упустил, но не знаю что. Любая помощь будет оценена.

Полный модуль ресурсов приведен ниже на случай, если в нем есть что-то, чего мне не хватает. Спасибо

resource "aws_instance" "server" {
  ami                      = var.AMIS[var.AWS_REGION]
  instance_type            = var.AWS_INSTANCE
  vpc_security_group_ids  = [module.networking.security_group_id_out]
  subnet_id               = module.networking.subnet_id_out

  ## Use this count key to determine how many servers you want to create.
  count                   = 1
  key_name                = var.KEY_NAME
  tags = {
    # Name                  = "Server-Cloud"
    Name = "Server-${count.index}"
  }

  root_block_device {
    volume_size           = var.VOLUME_SIZE
    volume_type           = var.VOLUME_TYPE
    delete_on_termination = true
  }

  get_password_data = true

  provisioner "remote-exec" {
    connection {
      host = coalesce(self.public_ip, self.private_ip)
      type = "winrm"

      ## Need to provide your own .pem key that can be created in AWS or on your machine for each provisioned EC2.
      password = ${rsadecrypt(aws_instance.server[0].password_data, file(KEY_PATH))}
    }
    inline = [
      "powershell -ExecutionPolicy Unrestricted C:\\Users\\Administrator\\Desktop\\installserver.ps1 -Schedule",
    ]
  }

  provisioner "local-exec" {
    command = "echo ${self.public_ip} >> ../public_ips.txt"
  }
}

1 Ответ

0 голосов
/ 26 марта 2020

Используйте password = "${rsadecrypt(self.password_data, file("/root/.ssh/id_rsa"))}" без user = "admin", как показано ниже:

resource "aws_instance" "windows_server" {

   get_password_data      =   "true"
   connection {
     host     = "${self.public_ip}"
     type     = "winrm"
     https    = false
     password = "${rsadecrypt(self.password_data, file("/root/.ssh/id_rsa"))}"
     agent    = false
     insecure = "true"
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...