2017-10-05 2 views
0

J'essaie d'exécuter une commande en utilisant mon playbook sous condition. La commande dépend de la valeur "PBSTP" d'un client donné. Si le type est défini sur autre chose, le jeu ne doit pas être exécuté. J'essaie actuellement d'utiliser cette configuration mais elle me dit que le conditionnel échoue parce que l'objet dict ne contient pas de valeur pour 'type'. Y a-t-il un moyen de le faire?Dépend de certaines variables dans le fichier YAML

- command: cp -r /home/pb/scripts /home/{{ item }}/scripts 
    with_items: "{{ customers }}" 
    when: customers['type'] == "PBSTP" 

Dans l'exemple donné, je souhaite que le client « SESH » ne reçoit pas une copie de répertoire des scripts où en tant que client le « test-BANK » ne. Merci!

TEST-BANK: 
    type: PBSTP 
    accept: 32506 
    connect: 33506 
    ipaddr: 
     - 192.167.203.92 
    subtype: INBOUND 
SESH: 
    type: SPOT 
    accept: 32508 
    connect: 33508 
    ipaddr: 
     - 192.167.203.63 
    subtype: TIERED 

Répondre

1

Vous essayez d'appliquer when condition customers dict (il a des touches TEST-BANK, SESH, etc.).

Vous souhaitez appliquer la condition au point courant dans la boucle itération:

- command: cp -r /home/pb/scripts /home/{{ item.key }}/scripts 
    with_dict: "{{ customers }}" 
    when: item.value['type'] == "PBSTP" 

Notez également que vous devez utiliser with_dict, comme with_items vous donnera seulement les clés et non ses valeurs.

+0

Merci Konstantin. Vous êtes très utile pour toutes mes queries anonymes! –