Я запускаю простой доступный сценарий как
---
- hosts: "{{ host }}"
remote_user: "{{ ansible_user }}"
tasks:
# - name: Move Network for peer
# copy:
# src: ./../network/
# dest: /home/{{ user }}/network/
- name: Set JAVA_HOME
blockinfile:
path: /etc/environment
backup: yes
state: present
block: |
Match User ansible-agent
PasswordAuthentication 4
become: yes
Итак, при запуске этого доступного файла с помощью команды
ansible-playbook -i ./inventory_yaml/single_host_inventory.yaml ./playlist/mytest.yaml --extra-vars "{\"host\":\"192.168.0.39\"}"
Я получаю результат ошибки как
PLAY [192.168.0.39] ************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.0.39]
TASK [Set JAVA_HOME] ***********************************************************
fatal: [192.168.0.39]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 192.168.0.39 closed.\r\n", "module_stdout": "sudo: a password is required\r\n", "msg": "MODULE FAILURE", "rc": 1}
to retry, use: --limit @/home/pankaj/go/src/ConfigTool/Go/playlist/mytest.retry
PLAY RECAP *********************************************************************
192.168.0.39 : ok=1 changed=0 unreachable=0 failed=1
Итак, как я могу получить сообщение «sudo: требуется пароль» в качестве вывода из приведенной выше команды.
Заранее спасибо .
Не совсем уверен, что вы хотите, но вы можете установить ignore_errors
, зафиксировать результаты и добавить задачу fail
:
- name: Set JAVA_HOME
blockinfile:
path: /etc/environment
backup: yes
state: present
block: |
Match User ansible-agent
PasswordAuthentication 4
become: yes
register: command_result
ignore_errors: true
- name: fail if the previous command did not succeed
fail:
msg: "{{ command_result.module_stdout }}"
when: command_result.failed == true
Это лучшее, что вы можете очистить.
Более общий вопрос здесь - это оптимальный метод синтаксического анализа вывода JSON для задач Ansible после обнаружения ошибки для одной из задач. Есть ли известное решение для этого?