Ansible - Configurando a instância do AWS EC2 após sua criação

1

Eu tenho um manual do Ansible que cria uma instância do AWS EC2 por meio de um modelo do CloudFormation. Depois que ele é criado, eu gostaria de configurá-lo também através do Ansible.

Aqui está o que eu tenho agora:

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

Agora o que? Como posso executar o resto do playbook contra o host recém-criado?

Por exemplo, eu gostaria de criar o usuário 'blah', mas não no localhost (com o qual o módulo cloudformation está sendo executado), mas obviamente na nova instância do EC2. Como eu faço isso?

Obrigado!

    
por MLu 29.08.2016 / 00:38

1 resposta

2

Você deve poder adicionar a instância a um grupo com add_host e criar um inventário na memória.

   - 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 -------
    
por 02.10.2016 / 05:09

Tags