增加 Terraform 中的 EC2 资源计数并应用 Ansible
Increase EC2 Resource Count in Terraform and applying Ansible
在为 terraform 增加 EC2 资源和将更改应用到 Ansible 时遇到一些问题。我目前有一个基本模板:
resource "aws_instance" "linux_node" {
count = 2
ami = "ami-6df1e514"
instance_type = "t2.micro"
key_name = ""
vpc_security_group_ids = [""]
iam_instance_profile = ""
user_data = "${file("userdata.sh")}"
tags {
Name = "linux-node"
}
provisioner "local-exec" {
command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${aws_instance.linux_node.public_ip},' ../install_packages.yml"
}
}
当我将计数增加到超过 1 时的问题,我在 aws_instance.linux_node.public_ip
上收到错误消息,其中错误内容为:
* aws_instance.linux_node[1]: 1 error(s) occurred:
* Resource 'aws_instance.linux_node' not found for variable 'aws_instance.linux_node.public_ip'
我认为它源于括号 [1]。我想知道如何编写一个可靠的命令来在我进行更改以添加 EC2 实例时获取更改。
当资源已 count
设置时,需要以不同的方式对其进行寻址以指定您希望使用的实例。
特别是对于供应商来说,通常情况下希望根据供应商 运行 所针对的 "current" 实例采取行动,因此 shorthand 随 self
变量类型:
provisioner "local-exec" {
command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${self.public_ip},' ../install_packages.yml"
}
在为 terraform 增加 EC2 资源和将更改应用到 Ansible 时遇到一些问题。我目前有一个基本模板:
resource "aws_instance" "linux_node" {
count = 2
ami = "ami-6df1e514"
instance_type = "t2.micro"
key_name = ""
vpc_security_group_ids = [""]
iam_instance_profile = ""
user_data = "${file("userdata.sh")}"
tags {
Name = "linux-node"
}
provisioner "local-exec" {
command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${aws_instance.linux_node.public_ip},' ../install_packages.yml"
}
}
当我将计数增加到超过 1 时的问题,我在 aws_instance.linux_node.public_ip
上收到错误消息,其中错误内容为:
* aws_instance.linux_node[1]: 1 error(s) occurred:
* Resource 'aws_instance.linux_node' not found for variable 'aws_instance.linux_node.public_ip'
我认为它源于括号 [1]。我想知道如何编写一个可靠的命令来在我进行更改以添加 EC2 实例时获取更改。
当资源已 count
设置时,需要以不同的方式对其进行寻址以指定您希望使用的实例。
特别是对于供应商来说,通常情况下希望根据供应商 运行 所针对的 "current" 实例采取行动,因此 shorthand 随 self
变量类型:
provisioner "local-exec" {
command = "sleep 120; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook --private-key ~/.ssh/aws-patrick-oregon.pem -i '${self.public_ip},' ../install_packages.yml"
}