CloudFormation 템플릿에서 AWS EC2 인스턴스를 생성하는 Ansible 플레이북이 있습니다. 일단 생성되면 Ansible을 통해 구성하고 싶습니다.
이것이 내가 지금 가지고 있는 것입니다:
---
- name: Create Amazon Linux Instance
hosts: localhost
connection: local
gather_facts: no
vars_files:
- config.yml
tasks:
- name: Create CloudFormation Stack
cloudformation:
stack_name: "{{ stack_name }}"
state: present
template: basic-ec2-stack.json
template_parameters:
KeyName: "{{ key_name }}"
VpcId: "{{ vpc_id }}"
SubnetId: "{{ subnet_id }}"
...
register: stack
# The new instance name is in stack.stack_outputs.DnsName ...
- debug: var=stack.stack_outputs.DnsName
무엇을 해야 할까요? 새로 생성된 호스트에 대해 플레이북의 나머지 부분을 어떻게 실행합니까?
예를 들어, 사용자 "blah"를 생성하고 싶지만 localhost(cloudformation 모듈이 실행 중인 위치)가 아닌 새 EC2 인스턴스에서 생성하려고 합니다. 어떻게 해야 하나요?
감사해요!
답변1
그룹에 인스턴스를 추가할 수 있어야 합니다.호스트 추가메모리 인벤토리를 생성합니다.
- name: Add instance to host group
add_host: hostname={{ item.DnsName }} groups=cloud_formation
with_items: stack.stack_outputs
- name: Wait for SSH to come up
wait_for: host={{ item.DnsName }} port=22 delay=60 timeout=320 state=started
with_items: stack.stack_outputs
- name: Run your play
hosts: cloud_formation
----- your play here -------