商用機としてインスタンスを作成する場合、2台以上の冗長構成にするのが普通なので、アベイラビリティーゾーンを分けてインスタンスを作成するplaybookを作成。
インベントリファイルにて、サーバ名とアベイラビリティーゾーンを指定するだけで、同じ種別の複数台作成する事が可能。
hosts
#localhost ansible_python_interpreter=/usr/local/bin/python [servers] hoge-01 hoge-02 [zone-a] hoge-01 [zone-c] hoge-02 [all:vars] service=test keypair=hoge instance_type=t2.micro instance_tags="Name='[{{ service }}]{{ inventory_hostname }}'" security_group=sg-xxxx image=ami-374db956 region=ap-northeast-1 [zone-a:vars] vpc_subnet_id=subnet-xxxxx [zone-c:vars] vpc_subnet_id=subnet-xxxxx
playbook.yml
- name: Create a sandbox instance hosts: servers gather_facts: False tasks: - name: Launch instance local_action: module: ec2 key_name: "{{ keypair }}" group_id: "{{ security_group }}" instance_type: "{{ instance_type }}" instance_tags: "{{ instance_tags }}" image: "{{ image }}" wait: true region: "{{ region }}" vpc_subnet_id: "{{ vpc_subnet_id }}" register: ec2 - name: Add new instance to host group local_action: add_host hostname={{ item.public_ip }} groupname=launched with_items: ec2.instances - name: Wait for SSH to come up local_action: wait_for host={{ item.public_dns_name }} port=22 delay=60 timeout=320 state=started with_items: ec2.instances