2016-10-21 4 views
0

Ich versuche, eine eindeutige Nummer zu jedem Server, den ich habe, mit Ansible einfügen.Der Fehler war: Fehler beim Auswerten der Bedingung

Wie unten möchte ich diese ist:

"1" in 192.168.60.6 des myid.txt

"2" in 192.168.60.7 des myid.txt

- hosts: all 
    gather_facts:True 
    vars: 
    servers: 
     host1: 
     ip: 192.168.60.6 
     num: 1 
     host2: 
     ip: 192.168.60.7 
     num: 2 
     host3: 
     ip: 192.168.60.8 
     num: 3 

    tasks: 
    -name: write a unique number in myid.txt 
    lineinfile: 
     dest: "/home/user/myid.txt" 
     line: "{{ item.value.num }}" 
    when: "{{ item.value.ip }} == {{ ansible_all_ipv4_addresses[1] }}" 
    `enter code here`with_dict: "{{ servers }}" 

Leider habe ich diesen Fehler:

TASK [write unique number in myid] 

********************************************* 
fatal: [192.168.60.6]: FAILED! => {"failed": true, "msg": "The conditional check '{{item.value.ip}} == {{ ansible_all_ipv4_addresses[1] }}' failed. 
The error was: error while evaluating conditional ({{item.value.ip}} == {{ ansible_all_ipv4_addresses[1] }}): float object has no element 60 

The error appears to have been in '/home/shihhao/Desktop/BlueTech/ansible/kafka_playbook.yml': line 101, column 7, 
but may be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 
    - name: write unique number in myid 
    ^here\n"} 

Es scheint, wenn ich diese Zeile hinzufügen, werde ich den Fehler.

when: "{{item.value.ip}} == {{ ansible_all_ipv4_addresses[1] }}" 

BTW: {{ansible_all_ipv4_addresses [1]}} ist 192.168.60.6

Antwort

0

sollten Sie bare Variablen in Ihrer when: Aussage:

when: item.value.ip == ansible_all_ipv4_addresses[1] 

Vom documentation:

This is easy to do in Ansible with the when clause, which contains a raw Jinja2 expression without double curly braces

Rohe Ausdrücke werden in when: Anweisung, wi verwendet th assert Modul und mit debug: var=varname (aberdebug: msg="{{varname}}").

+0

Dank Konstantin. – LImoritakeU

+0

Danke Kumpel, aber jetzt bin ich so verwirrt, in welchem ​​Fall sollte ich nackte Variablen verwenden, und welchen anderen Fall sollte ich Variablen in "{{}}" verwenden, könnten Sie mir einen Rat geben? – LImoritakeU

Verwandte Themen