Как раскрутить несколько экземпляров EC2 в разных соответствующих подсетях, используя ANSIBLE?

Я пытаюсь раскрутить несколько экземпляров EC2, используя Ansible, в другой зоне доступности и, следовательно, в подсетях. Что меня смущает, так это как я могу передать правильную подсеть, соответствующую правой зоне?

Предположим, я передаю свои переменные подсети как:

subnet_id_a: "subnet-9c3e38f8"
subnet_id_b: "subnet-88d171ff"

теперь эти подсети находятся в разных азимутах, мне нужно создать несколько n экземпляров, которые нужно вращать в разных азимутах

Я пытаюсь использовать:

  - name: Create ES Master Node instances
    ec2:
      key_name: "{{ aws_key_name }}"
      instance_type: "{{ aws_instance_type }}"
      image: "{{ aws_ami }}"
      wait: yes
      wait_timeout: 500
      count: "{{ master_instance_count }}"
      instance_tags:
        Name: "{{ master_tag_name }}"
      volumes:
        - device_name: /dev/sda1
          volume_type: gp2
          volume_size: 100
      vpc_subnet_id: "{{ subnet_id }}"
      zone: "{{ aws_region }}{{ item.0 }}"
      region: "{{ aws_region }}"
      group: "{{ aws_sec_group_name }}"
    with_items:
      - [ 'a' , 'b']
    register: ec2_details

Но я не уверен, как можно передать соответствующие подсети в соответствии с этим, чтобы каждый экземпляр вращался в разных аз? пожалуйста помоги

1 ответ

Решение

Вы можете реорганизовать переменную следующим образом:

subnet_ids:
  a: subnet-9c3e38f8
  b: subnet-88d171ff

И в твоей задаче:

...
vpc_subnet_id: "{{ subnet_ids[item] }}"
...
with_items: [a, b]

Я полагаю zone не является необходимым, потому что подсеть уже связана с некоторым AZ.
И вам не нужно вкладывать свой список петель, как это - [a, b], используйте только [a, b] избежать item.0,

Другие вопросы по тегам