J'essaie d'écrire un livre de lecture Ansible qui compile uniquement Nginx s'il n'est pas déjà présent et à la version actuelle. Cependant, il compile à chaque fois ce qui est indésirable.
Voici ce que j'ai
- Shell: /usr/local/nginx/sbin/nginx -v 2>&1
register: nginxVersion
- debug:
var=nginxVersion
- name: install nginx
Shell: /var/local/ansible/nginx/makenginx.sh
when: "not nginxVersion == 'nginx version: nginx/1.8.0'"
become: yes
Le script fonctionne indépendamment du fait qu’il exécute le script Shell à chaque fois pour compiler Nginx. La sortie de débogage pour nginxVersion est la suivante:
ok: [server] => {
"var": {
"nginxVersion": {
"changed": true,
"cmd": "/usr/local/nginx/sbin/nginx -v 2>&1",
"delta": "0:00:00.003752",
"end": "2015-09-25 16:45:26.500409",
"invocation": {
"module_args": "/usr/local/nginx/sbin/nginx -v 2>&1",
"module_name": "Shell"
},
"rc": 0,
"start": "2015-09-25 16:45:26.496657",
"stderr": "",
"stdout": "nginx version: nginx/1.8.0",
"stdout_lines": [
"nginx version: nginx/1.8.0"
],
"warnings": []
}
}
}
D'après la documentation, je suis sur la bonne voie, quel truc simple me manque-t-il?
Essayer:
when: nginxVersion.stdout != 'nginx version: nginx/1.8.0'
ou
when: '"nginx version: nginx/1.8.0" not in nginxVersion.stdout'
Puisque var est une chaîne json, vous pouvez l’analyser en json et accéder à ses clés.
set_fact:
var_json: "{{ var.stdout|from_json }}"
Accédez ensuite au json et obtenez la valeur souhaitée.
when: var_json.nginxVersion.stdout == 'nginx version: nginx/1.8.0'
checkout this link: https://Gist.github.com/justinhennessy/28e82c2ec05f9081786a