2016-11-21 3 views
0

Ich sammle Fakten auf meinem localhost.Ansible Playbook Syntax Problem - wenn: Liste

localhost | SUCCESS => { 
    "ansible_facts": { 
     "ansible_dns": { 
      "nameservers": [ 
       "192.168.1.2", 
       "192.168.1.3" 
      ], 
      "search": [ 
       "example.com", 
      ] 
     } 
    }, 
    "changed": false 
} 

Ich muss in der Lage sein, die Name-Server zuzugreifen: 192.168.1.2 und 192.168.1.3

Ich habe versucht, die folgenden und noch einen Fehler in der Syntax erhalten. Ich sehe keine Online-Dokumente, die mir zeigen, wie man auf verschachtelte Werte zugreift.

# Method 1 
- name: Allow httpd access to files on CIFS volumes that are labeled with the cifs_t type 
    seboolean: name=httpd_use_cifs state=true persistent=yes 
    when: ansible_dns == nameservers == '192.168.1.2' and ansible_dns == nameservers == '192.168.1.3' 

# Method 2 
- name: Allow httpd access to files on CIFS volumes that are labeled with the cifs_t type 
    seboolean: name=httpd_use_cifs state=true persistent=yes 
    when: nameservers == '192.168.1.2' and nameservers == '192.168.1.3' 

Antwort

0

können Sie verschachtelte Elemente mit Punkt zugreifen: ansible_dns.nameservers.

nicht sicher, welche Bedingung Sie bauen wollen, aber eine der Möglichkeiten:
when: "'192.168.1.2' in ansible_dns.nameservers and '192.168.1.3' in ansible_dns.nameservers"

+0

habe ich eigentlich 'ansible_dns.nameservers ==‚192.168.1.7''. Ich bin sicher, deine Methode hätte auch funktioniert! Als ich 'ansible local -m setup -a' filter = ansible_dns.nameservers 'filterte und der. (Dot) nicht funktionierte, ging ich davon aus, dass es in einem Playbook nicht funktionieren würde. –

+0

EDIT: Nur Spaß. Deine "in" -Anweisung funktioniert und meine nicht :) –