Size: a a a

2020 February 12

A

Andor in terraform_ru
Английским текстом
источник

DG

Dimitri Goldshtein in terraform_ru
ok
источник

DG

Dimitri Goldshtein in terraform_ru
k кажеться  догнал
источник

DG

Dimitri Goldshtein in terraform_ru
Спасибо  !!!!!
источник

IB

Igor Bronovskyi in terraform_ru
data "template_file" "sample_instance" {
 template = file("files/install.tpl")

 vars = {
   tf_aws_access_key = var.access_key
   tf_aws_secret_key = var.secret_key
   tf_aws_region     = var.aws_region
 }
}

resource "aws_instance" "sample_instance" {
 ami           = "ami-0a7d051a1c4b54f65"
 instance_type = "t2.micro"
 key_name      = aws_key_pair.sample_key.key_name

 provisioner "remote-exec" {
   inline = [
     data.template_file.sample_instance.rendered
   ]
 }

 connection {
   type        = "ssh"
   user        = "ubuntu"
   host        = aws_instance.sample_instance.public_ip
   private_key = file("${var.private_key}")
 }

 tags = {
   Name = "sample-instance"
 }
}

Поднимаю инстанс, все из files/install.tpl выполняется, а вот переменные tf_aws_access_key, tf_aws_secret_key, tf_aws_region не передаются
источник

IB

Igor Bronovskyi in terraform_ru
как их передать? Почемуто не рендерит =(
источник

A

Andor in terraform_ru
А как используешь?
источник

AV

Alexander V in terraform_ru
Igor Bronovskyi
как их передать? Почемуто не рендерит =(
как ты их передаешь ?

-var-file ?
-var ?
источник

IB

Igor Bronovskyi in terraform_ru
да. В vars.tf все записываю
источник

IB

Igor Bronovskyi in terraform_ru
files/install.tpl
#!/bin/bash
sudo apt update
echo "[default]
region = $tf_aws_region" >> /home/ubuntu/.aws/config

echo "[default]
aws_access_key_id = $tf_aws_access_key
aws_secret_access_key = $tf_aws_secret_key" >> /home/ubuntu/.aws/credentials
источник

IB

Igor Bronovskyi in terraform_ru
вместо $tf_aws_region - пустота
источник

A

Andor in terraform_ru
А переменные в vars.tf у тебя обязательные?
источник

IB

Igor Bronovskyi in terraform_ru
ну они там есть
источник

IB

Igor Bronovskyi in terraform_ru
variable "aws_region" {
 type    = string
 default = "us-west-2"
}

variable "access_key" {
 type    = string
 default = "XXX"
}

variable "secret_key" {
 type    = string
 default = "YYY"
}
источник

IB

Igor Bronovskyi in terraform_ru
если я отправлю как user_data то переменные все подставятся. Но тогда я не буду знать когда все завершилось. Потому мне нужно через remote-exec
источник

AK

Andrey Kartashov in terraform_ru
Igor Bronovskyi
data "template_file" "sample_instance" {
 template = file("files/install.tpl")

 vars = {
   tf_aws_access_key = var.access_key
   tf_aws_secret_key = var.secret_key
   tf_aws_region     = var.aws_region
 }
}

resource "aws_instance" "sample_instance" {
 ami           = "ami-0a7d051a1c4b54f65"
 instance_type = "t2.micro"
 key_name      = aws_key_pair.sample_key.key_name

 provisioner "remote-exec" {
   inline = [
     data.template_file.sample_instance.rendered
   ]
 }

 connection {
   type        = "ssh"
   user        = "ubuntu"
   host        = aws_instance.sample_instance.public_ip
   private_key = file("${var.private_key}")
 }

 tags = {
   Name = "sample-instance"
 }
}

Поднимаю инстанс, все из files/install.tpl выполняется, а вот переменные tf_aws_access_key, tf_aws_secret_key, tf_aws_region не передаются
проверь в tf console вывод data.template_file.sample_instance.rendered
источник

AK

Andrey Kartashov in terraform_ru
Igor Bronovskyi
data "template_file" "sample_instance" {
 template = file("files/install.tpl")

 vars = {
   tf_aws_access_key = var.access_key
   tf_aws_secret_key = var.secret_key
   tf_aws_region     = var.aws_region
 }
}

resource "aws_instance" "sample_instance" {
 ami           = "ami-0a7d051a1c4b54f65"
 instance_type = "t2.micro"
 key_name      = aws_key_pair.sample_key.key_name

 provisioner "remote-exec" {
   inline = [
     data.template_file.sample_instance.rendered
   ]
 }

 connection {
   type        = "ssh"
   user        = "ubuntu"
   host        = aws_instance.sample_instance.public_ip
   private_key = file("${var.private_key}")
 }

 tags = {
   Name = "sample-instance"
 }
}

Поднимаю инстанс, все из files/install.tpl выполняется, а вот переменные tf_aws_access_key, tf_aws_secret_key, tf_aws_region не передаются
а, у тебя неправильный формат для inline - это список комманд, а не скрипт
источник

AK

Andrey Kartashov in terraform_ru
замени на
inline = [
     "sudo apt update",
     "bash -c 'echo \"[default]\" >> /home/ubuntu/.aws/config'",
     "bash -c 'echo \"region = ${var.aws_region}\" >> /home/ubuntu/.aws/config'",
...
   ]
источник

AK

Andrey Kartashov in terraform_ru
кавычки возможно надо будет по другому за-escape'ить
источник

AK

Andrey Kartashov in terraform_ru
либо делай local_file и используй script вместо inline - но тогда у тебя в локальном файле креды будут
источник