1

Ich benutze Ansible, um eine neue EC2-Instanz zu erstellen und versuche, einige Pakete darauf zu installieren. Das Problem ist, dass ich einen neuen Host zu einer Hostgruppe hinzufüge, aber ich kann diese Hostgruppe in einem anderen Spiel nicht sehen. Wenn es "Configure EC2-Instanz" erreicht er sagt:Ansible add_host funktioniert nicht, es überspringt Hosts

PLAY [Configure EC2-Instanz] *************************** ************************************ Skipping: keine Hosts angepasst

Hier wird der Code:

--- 
    - name: Provision an EC2 Instance 
    hosts: localhost 
    connection: local 
    gather_facts: False 
    tags: provisioning 
    # Necessary Variables for creating/provisioning the EC2 Instance 
    vars_files: 
     - vars/variables.yml 
     - vars/aws_auth.yml 

# Task that will be used to Launch/Create an EC2 Instance 
tasks: 
    - name: Create security group 
     ec2_group: 
      aws_access_key: "{{ec2_access_key}}" 
      aws_secret_key: "{{ec2_secret_key}}" 
      name: "{{ project_name }}_security_group" 
      description: "{{ project_name }} security group" 
      region: "{{ aws_region }}" 
      rules: 
       - proto: tcp 
       from_port: 22 
       to_port: 22 
       cidr_ip: 0.0.0.0/0 
       - proto: tcp 
       from_port: 80 
       to_port: 80 
       cidr_ip: 0.0.0.0/0 
       - proto: tcp 
       from_port: 443 
       to_port: 443 
       cidr_ip: 0.0.0.0/0 
      rules_egress: 
       - proto: all 
       cidr_ip: 0.0.0.0/0 
     register: basic_firewall 

    - name: Create an EC2 key 
     ec2_key: 
      aws_access_key: "{{ec2_access_key}}" 
      aws_secret_key: "{{ec2_secret_key}}" 
      name: "{{ project_name }}-{{ env }}-key" 
      region: "{{ aws_region }}" 
     register: ec2_key 

    - name: save private key 
    copy: 
     content: "{{ ec2_key.key.private_key }}" 
     dest: "private_keys/aws-{{ env }}-private.pem" 
     mode: 0600 
    when: ec2_key.changed 

    - name: Create an EC2 instance 
     ec2: 
      aws_access_key: "{{ec2_access_key}}" 
      aws_secret_key: "{{ec2_secret_key}}" 
      key_name: "{{ project_name }}-{{ env }}-key" 
      region: "{{ aws_region }}" 
      group_id: "{{ basic_firewall.group_id }}" 
      instance_type: "{{ instance_type }}" 
      image: "{{ ami }}" 
      wait: yes 
      instance_tags: 
       env: "{{ env }}" 
      count_tag: env 
      exact_count: 1 
     register: ec2 

    - name: Add new instance to host group 
    add_host: 
     name: "{{ item.public_dns_name }}" 
     groups: launched 
    with_items: "{{ ec2.tagged_instances }}" 

    - name: Wait for SSH to come up 
    wait_for: 
     host: "{{ item.public_dns_name }}" 
     port: 22 
     delay: 60 
     timeout: 320 
     state: started 
    with_items: "{{ ec2.tagged_instances }}" 

    - name: Refresh inventory to ensure new instaces exist in inventory 
    meta: refresh_inventory 

    - name: Configure EC2 instance 
    hosts: launched 
    gather_facts: False 
    tasks: 
     - debug: var=group_names 
     - debug: msg="{{ inventory_hostname }}" 
     - debug: var=hostvars[inventory_hostname]   
     - debug: msg="groups={{groups}}" 
     run_once: true 


     - name: install drush 
     yum: name=drush state=present 

     - name: install git 
     yum: name=git state=present 

     - name: download Drupal 
     shell: drush dl drupal-7 

Hier ist die Ausgabe von add_host:

"add_host": { 
    "groups": [ 
     "launched" 
    ], 
    "host_name": "xxx.us-east-2.compute.amazonaws.com", 
    "host_vars": {} 
}, 

ist hier der Wert der ec2.tagged_instances:

"tagged_instances": [ 
    { 
     "ami_launch_index": "0", 
     "architecture": "x86_64", 
     "block_device_mapping": { 
      "/dev/sda1": { 
       "delete_on_termination": true, 
       "status": "attached", 
       "volume_id": "vol-0a095bd6e62ca6xxx" 
      } 
     }, 
     "dns_name": "xxx.us-east-2.compute.amazonaws.com", 
     "ebs_optimized": false, 
     "groups": { 
      "sg-90a9bxxx": "xxx_automation_security_group" 
     }, 
     "hypervisor": "xen", 
     "id": "i-0f39cd12657aad100", 
     "image_id": "ami-11aa8c74", 
     "instance_type": "t2.micro", 
     "kernel": null, 
     "key_name": "xxx_automation-staging-key", 
     "launch_time": "2017-07-19T00:12:52.000Z", 
     "placement": "us-east-2b", 
     "private_dns_name": "xxx.us-east-2.compute.internal", 
     "private_ip": "172.31.24.xxx", 
     "public_dns_name": "xxx.us-east-2.compute.amazonaws.com", 
     "public_ip": "18.220.52.xxx", 
     "ramdisk": null, 
     "region": "us-east-2", 
     "root_device_name": "/dev/sda1", 
     "root_device_type": "ebs", 
     "state": "running", 
     "state_code": 16, 
     "tags": { 
      "env": "staging" 
     }, 
     "tenancy": "default", 
     "virtualization_type": "hvm" 
    } 
+0

Bitte geben Sie die gesamte Ausgabe Ihrer ansible Ausführung an. Problem scheint in vorherigen Aufgaben zu sein. – zigarn

+0

Hi techraf, Ich habe den Wert der ec2.tagged_instances und die Ausgabe von add_host hinzugefügt. Vielen Dank. –

+0

Bitte korrigieren Sie den Einzug, es verursacht unnötige Verwirrung (es gibt ein Spiel auf der Aufgaben-Ebene, aber da die Fehlermeldung richtig ist, ist es nur in der Frage). – techraf

Antwort

0

meta: refresh_inventory Aufgabe aus Ihrem Spiel entfernen.

Sie ist nicht für die In-Memory-Bestandsliste erforderlich und bewirkt, dass Ansible das Inventar basierend auf Dateien und dynamischen Inventarscripts aktualisiert. Es löscht tatsächlich das speicherinterne Inventar, das im vorherigen Schritt erstellt wurde.

+0

Ja, Sie haben Recht. Ich weiß nicht, was ich letzte Nacht gemacht habe. Es war 3 Uhr morgens und ich denke, ich habe nicht richtig gedacht. Danke für die Antwort! –

Verwandte Themen