2015-12-21 17 views

risposta

6

Leggi http://www.ansible.com/blog/ansible-ec2-tags Descrive come centrifugare un'istanza di ec2 (o più) e quindi eseguire le attività su di esso (I.e installa nginx).

I'f si desidera passare direttamente alla esempio playbook https://github.com/chrismeyersfsu/playbook-ec2_properties/blob/master/new_group.yml

  • Portare istanza EC2
  • Attendere ssh
  • aggiungere istanza EC2 di Ansible creato in modo dinamico gruppo di host w/PEM EC2 associato File (in modo da poter ssh ad esso)
  • chiamata un esempio giocare con un compito ping per mostrare tutto funziona

Nota: si dovrebbe sostituire il compito ping con il set di attività per installare nginx

@Bidyut come fare riferimento all'indirizzo IP EC2

sguardo Line 27 Nota l'uso di register: ec2 Poi alla Line 46 l'EC2 l'indirizzo IP è "estratto" {{ ec2.results[item.0]['instances'][0]['public_ip'] }}. Si noti che l'esempio chiama register all'interno di un ciclo. Se si sta creando un'istanza ec2, il riferimento di indirizzo ip ec2 sarà simile a {{ ec2.results['instances'][0]['public_ip'] }}

+0

Puoi spiegare come ottenere/ottenere campi particolari dal risultato JSON restituito da AWS nel registro Ansible. Ho provato a google, ma non ho trovato nessuno. – Bidyut

+0

Che cos'è 'articolo' in quella linea? – Bidyut

+0

In 'public_ip' il suo valore è None – Bidyut

0

Sì, è possibile utilizzare un singolo playbook per avviare un'istanza e installare nginx. Utilizzare il modulo ansable add_host per aggiungere l'ip dell'istanza appena avviata. Quindi scrivi un gioco per il nuovo host.

  1. lancio un'istanza EC2 utilizzando EC2 modulo e registrare l'istanza
  2. Usa add_host modulo per aggiungere la nuova istanza per l'inventario ospite
  3. Scrivi un nuovo gioco con host come l'host appena registrato e chiamare apt installare nginx

Provatelo e se avete bisogno di frammento di codice, fatemelo sapere.

+0

Attualmente sto esplorando Ansible. Affronto il problema durante il recupero di un particolare campo dall'output JSON che AWS restituisce ad Ansible. Ho bisogno di spiegazioni su come ottenere un campo particolare dal risultato JSON e su come accedere al set di risultati. – Bidyut

+0

Posso ottenere lo snippet di codice. Voglio passare attraverso il tuo snippet di codice. – Bidyut

2

Ecco un esempio pratico che potrebbe essere di aiuto.

--- 
- hosts: localhost 
    connection: local 
    gather_facts: no 
    tasks: 
    - name: Create the EC2 Instance 
     ec2: 
     region: us-east-1 
     group: sg-xxxxx # Replace your Security Group here 
     keypair: test-key # Replace Key here 
     instance_type: t2.mirco 
     image: ami-xxxxx # Replace AMI here 
     vpc_subnet_id: subnet-xxxxx # Replace Subnet here 
     assign_public_ip: yes 
     wait: yes 
     wait_timeout: 600 
     instance_tags: 
      Name: "My-EC2-Instance" 
     register: ec2 

    - name: Create SSH Group to login dynamically to EC2 Instance 
     add_host: 
     hostname: "{{ item.public_ip }}" 
     groupname: ec2_server 
     with_items: ec2.instances 

    - name: Wait for SSH to come up 
     wait_for: 
     host: "{{ item.public_ip }}" 
     port: 22 
     state: started 
     with_items: ec2.instances 

- hosts: ec2_server 
    become: yes 
    # Use ec2_user if you are using CentOS/Amazon server 
    remote_user: ubuntu # for Ubuntu server 
    gather_facts: yes 
    roles: 
    - webserver 
Problemi correlati