Używam niestandardowego polecenia, ponieważ nie znalazłem działającego modułu robiącego to, czego potrzebuję, i chcę dostosować flagę changed
, aby odzwierciedlić rzeczywiste zachowanie:Ansible i `changed_when` na podstawie` stdout` wartości
- name: Remove unused images
shell: '[ -n "$(docker images -q -f dangling=true)" ] && docker rmi $(docker images -q -f dangling=true) || echo Ignoring failure...'
register: command_result
changed_when: "command_result.stdout == 'Ignoring failure...'"
- debug: var="1 {{ command_result.stdout }}"
when: "command_result.stdout != 'Ignoring failure...'"
- debug: var="2 {{ command_result.stdout }}"
when: "command_result.stdout == 'Ignoring failure...'"
(wiem komenda powłoki jest brzydki i można poprawić przez bardziej złożony scenariusz, ale nie chcą na razie)
Uruchomienie tego zadania na hoście gdzie nie Docker obraz może być usunięty daje następujące wyjście:
TASK: [utils.dockercleaner | Remove unused images] ****************************
changed: [cloud-host] => {"changed": true, "cmd": "[ -n \"$(docker images -q -f dangling=true)\" ] && docker rmi $(docker images -q -f dangling=true) || echo Ignoring failure...", "delta": "0:00:00.064451", "end": "2015-07-30 18:37:25.620135", "rc": 0, "start": "2015-07-30 18:37:25.555684", "stderr": "", "stdout": "Ignoring failure...", "stdout_lines": ["Ignoring failure..."], "warnings": []}
TASK: [utils.dockercleaner | debug var="DIFFERENT {{ command_result.stdout }}"] ***
skipping: [cloud-host]
TASK: [utils.dockercleaner | debug var="EQUAL {{ command_result.stdout }}"] ***
ok: [cloud-host] => {
"var": {
"EQUAL Ignoring failure...": "EQUAL Ignoring failure..."
}
}
Tak, mam tę wartość wyjściową zwrotną "stdout": "Ignoring failure..."
, a zadanie debugowania pokazuje, że łańcuchy są równe, czyli , dlaczego zadanie jest nadal wyświetlane jako "zmienione"?
Używam ansible 1.9.1
.
Dokumentacja ja refering jest to jedno: http://docs.ansible.com/ansible/playbooks_error_handling.html#overriding-the-changed-result
Czuję się teraz tak głupi ... Wielkie dzięki! –