Я пытаюсь добавить 2 экземпляра в файл с именем aws_worker_nodes_IP. Это код ниже ... снова ... Мне не нужен только один рабочий IP-адрес, мне нужны оба или все, если мои переменные должны измениться.
Мне сказали использовать self.public_IP, но это всего лишь список. Мне это нужно для обоих.
#-----key pair for Workernodes-----
resource "aws_key_pair" "k8s-node_auth" {
key_name = "${var.key_name2}"
public_key = "${file(var.public_key_path2)}"
}
#-----Workernodes-----
resource "aws_instance" "nodes-opt-us1-k8s" {
instance_type = "${var.k8s-node_instance_type}"
ami = "${var.k8s-node_ami}"
count = "${var.NodeCount}"
tags {
Name = "nodes-opt-us1-k8s"
}
key_name = "${aws_key_pair.k8s-node_auth.id}"
vpc_security_group_ids = ["${aws_security_group.opt-us1-k8s_sg.id}"]
subnet_id = "${aws_subnet.opt-us1-k8s.id}"
#-----Link Terraform worker nodes to Ansible playbooks-----
provisioner "local-exec" {
command = <<EOD
cat <<EOF > aws_worker_nodes_IP
[workers]
${self.public_ip} <------need both here not just one
EOF
EOD
}
}
#----this has two nodes----- "count = "${var.NodeCount}"
Извините, если я неправильно объяснил в своем первом вопросе, и я ценю помощь. Я работаю с terraform всего несколько месяцев. Кроме того, я сетевой инженер, учусь писать код.
Если local-exec выполняется один раз для каждого счетчика, тогда, когда вы входите в файл, вы используете >, который будет перезаписывать, а не добавлять его.
Ах ... такой нубский вопрос, но какой символ тогда добавился бы вместо перезаписи?
>> будет добавлен к существующему файлу (создание нового при первом выполнении)
>> добавит в файл, если он существует, или создаст его, если он еще не существует, поэтому при каждом запуске он будет добавляться после первого.
Спасибо чувак. Я ценю помощь ... которая сработала
Хорошо, просто имейте в виду, что он может продолжать добавляться после каждого запуска, если файл уже существует, создавая повторяющиеся записи.





${self.*.public_ip}работает? Я знаю, что с помощью count вы можете использовать их синтаксис splat.