J'essaye d'écrire un livre de jeu qui vérifie les fonctionnalités de Windows installées. Si elles sont installées, il devrait les ignorer, sinon les installer à partir de ma liste de vars.Ansible with_items vérification conditionnelle contre json
- name: win command
win_command: 'powershell.exe "Get-WindowsFeature | Where Installed | Select -exp Name | ConvertTo-Json"'
register: result
- name: Register vars
set_fact:
featureinstalled: '{{ result.stdout | from_json }}'
- name: Installing features
win_feature:
name: '{{ item }}'
state: Present
with_items:
'{{features_to_install}}'
when: '{{ item }} != {{ featureinstalled }}'
Mon features_to_install vars dans un document distinct/vars/fichier:
---
features_to_install: [FileAndStorage-Services,File-Services,.....]
Je veux que le PlayBook pour sauter l'installation de la fonction si la fonction est présente dans le JSON. L'erreur Im obtenir:
{ "a échoué": true, "msg":. « Le chèque conditionnel '{{item}} = {{featureinstalled}}' a échoué L'erreur est: erreur de modèle en chaîne de template: jeton attendu ',', 'chaîne': {% si FileAndStorage-Services! = [u'FileAndStorage-Services ', u'Storage-Services', u'FS-SMB1 ', u 'WoW64-Support']%} Vrai {% else%} False {% endif%} \ n \ nL'erreur semble avoir été dans '/tmp/worldengine/src/roles/webserver/tasks/windows_features.yml' : ligne 31, colonne 3, mais peut-être \ nêtre ailleurs dans le fichier en fonction du problème de syntaxe exacte . \ N \ nT il offenser ligne semble être: \ n \ n \ n- Nom: caractéristiques Installation \ n^
Comment lire le document [docs on 'when'] (http://docs.ansible.com/ansible/latest/playbooks_conditionals.html#the-when-statement) avant d'écrire le code? De plus, l'opérateur '! =' Est carrément faux - "pas égal" n'est pas ce que vous avez l'intention de vérifier - dites l'expression à voix haute dans le langage humain et vous comprendrez. – techraf
lol qui a fonctionné – firebolt