2017-08-26 2 views
0

Von: Best way to launch aws ec2 instances with ansibleansible.vars.unsafe_proxy.AnsibleUnsafeText Objekt‘hat kein Attribut 'private_ip'

- name: Add the newly created EC2 instance(s) to the local host group (located inside the directory) 
    local_action: lineinfile 
        dest="/etc/ansibles/aws/hosts" 
        regexp={{ item.private_ip }} 
        insertafter="[webserver]" line={{ item.private_ip }} 
    with_items: "{{ ec2.instances }}" 

erzeugt diesen Fehler:

fatal: [localhost]: failed! => { "failed": true, "msg": "Das Feld 'args' hat einen ungültigen Wert, der scheinbar eine Variable enthält, die undefiniert ist. Der Fehler war: 'ansible.vars.unsafe_proxy.AnsibleUnsafeText object' kein Attribut ‚private_ip‘ habe \ n \ n

ich habe variable private_ip definiert: unter vars, mit einem Wert

Antwort

0

ich denke, dass die private_ip Eigenschaft im Code über Verweise auf die Eigenschaft des EC2-Variable, die verwendet werden um die zurückgegebenen Werte vom ec2-Modul abzufangen (vom letzten Schritt), nicht von dem, das Sie an anderer Stelle definiert haben

- name: Launch the new EC2 Instance 
    local_action: ec2 
        group={{ security_group }} 
        instance_type={{ instance_type}} 
        image={{ image }} 
        wait=true 
        region={{ region }} 
        keypair={{ keypair }} 
        count={{count}} 
    register: ec2 (this is where the variable is defined!!!) 

Wesentlichen ansible beschwert, dass das EC2 Variable den

erhielt hasen't

attribute 'private_ip'

, so überprüfen den obigen Code und sehen, wie diese Variable definiert wird. Im obigen Beispiel versuchen Sie, die private_ip Adresse von aws zu bekommen. Willst du das wirklich? Die meiste Zeit möchten Sie die öffentliche IP-Adresse, denn das ist, was Sie verwenden werden, um sich mit dem ec2-Gerät zu verbinden, es bereitzustellen, Ihre App zu implementieren etc ...

Verwandte Themen