使用playbooks创建一个带有2个子网的EC2实例

时间:2017-05-15 09:19:38

标签: ansible

尝试使用以下playbook创建包含2个子网的单个实例时:

# Basic provisioning example
- name: Create AWS resources
  hosts: localhost
  connection: local
  vars:
    subnets:
      - { zone: "us-west-2c", vpc_pvt_subnet: "subnet-ff9f89325"}
      - { zone: "us-west-2c", vpc_pvt_subnet: "subnet-7f9df6832"}

  gather_facts: False

  tasks:

  - name: create an EC2 instance
    with_items: "{{ subnets }}"
    ec2:
      key_name: testkey
      region:  us-west-2
      instance_type: r3.xlarge
      vpc_subnet_id: "{{ item.vpc_pvt_subnet }}"
      zone: "{{ item.zone }}"
      image: ami-efd0428f
      wait: yes
      instance_tags:
          Name: "testinstance"
      exact_count: 1
      count_tag:
          Name: "testistance"
    register: ec2

对于第一个子网,它表示"已更改"作为回应,但对于第二个子网,它只是发送了一个响应" OK"

第一个子网:已更改:[localhost] => (item = {u' vpc_pvt_subnet':u' subnet-ff9f89325',u' zone':u' us-west-2c'})=> {

第二个子网:

ok:[localhost] => (item = {u' vpc_pvt_subnet':u' subnet-7f9df6832',u' zone':u' us-west-2a'})=> {

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果查看EC2模块的文档

  

count_tag:与' exact_count'一起使用确定基于多少个节点   在特定标签上应该运行标准。这可以表达为   多种方式,并在示例部分中显示。例如,一个   可以请求25个标有" class = webserver"的服务器。该   指定的标记必须已存在或作为传入   ' instance_tags'选项。

     

exact count:一个整数值,表示该实例的数量   匹配' count_tag'参数应该正在运行。实例是   根据此值创建或终止。

由于您将count_tag:testinstance和exact_count设置为1,因此Ansible不会启动辅助实例。将计数更改为2应该可以解决此问题。