代码之家  ›  专栏  ›  技术社区  ›  Patrick

增加Terraform中的EC2资源数量并应用Ansible

  •  1
  • Patrick  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  2
  •   Martin Atkins    7 年前

    当资源已 count 设置时,需要以不同的方式对其进行处理,以指定要使用的实例。

    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"
    }