Как расшифровать пароль администратора Windows в Terraform? - PullRequest
0 голосов
/ 29 июня 2018

Я предоставляю один сервер Windows для тестирования с помощью terraform в AWS. Каждый раз, когда мне нужно расшифровать мой пароль Windows с моим файлом PEM для подключения. Вместо этого я выбрал аргумент terraform get_password_data и сохранил мой password_data в файле tfstate. Теперь, как мне расшифровать то же самое с синтаксисом интерполяции rsadecrypt

Пожалуйста, найдите мой нижеприведенный код terraform

### Resource for EC2 instance creation ###

resource "aws_instance" "ec2" {
  ami                   =   "${var.ami}"
  instance_type         =   "${var.instance_type}"
  key_name              =   "${var.key_name}"
  subnet_id             =   "${var.subnet_id}"
  security_groups       =  ["${var.security_groups}"]
  availability_zone     =   "${var.availability_zone}"
  private_ip            =   "x.x.x.x"
  get_password_data     =   "true"

  connection {
    password            =   "${rsadecrypt(self.password_data)}"
    }

  root_block_device {
              volume_type = "${var.volume_type}"
              volume_size = "${var.volume_size}"
    delete_on_termination = "true"
    }

  tags {
        "Cost Center"  =  "R1"
        "Name"         =  "AD-test"
        "Purpose"      =  "Task"
        "Server Name"  =  "Active Directory"
        "SME Name"     =  "Ravi"
    }

}


output "instance_id" {
  value = "${aws_instance.ec2.id}"
}


### Resource for EBS volume creation ###

  resource "aws_ebs_volume" "additional_vol" {
    availability_zone =  "${var.availability_zone}"
    size              =  "${var.size}"
    type              =  "${var.type}"
}

### Output of Volume ID ###

  output "vol_id" {
    value = "${aws_ebs_volume.additional_vol.id}"
}

### Resource for Volume attachment ###

   resource "aws_volume_attachment" "attach_vol" {
     device_name       = "${var.device_name}"
     volume_id         = "${aws_ebs_volume.additional_vol.id}"
     instance_id       = "${aws_instance.ec2.id}"
     skip_destroy      = "true"
}

1 Ответ

0 голосов
/ 02 июля 2018

Пароль зашифрован с использованием пары ключей, которую вы указали при запуске экземпляра, вам все равно нужно использовать ее для расшифровки, поскольку password_data - это всего лишь кодированная base64 зашифрованная данные пароля.

Вы должны использовать ${rsadecrypt(self.password_data,file("/path/to/private_key.pem"))}

Это не зря. Вы действительно не хотите, чтобы пароль в кодировке base64 находился в состоянии.

Короткая версия: Вам не хватает второго аргумента в функции интерполяции.

...