Как получить ошибки в чистой строке из анзибля

Я запускаю простой доступный сценарий как

---
- 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: требуется пароль» в качестве вывода из приведенной выше команды.

Заранее спасибо .

Более общий вопрос здесь - это оптимальный метод синтаксического анализа вывода JSON для задач Ansible после обнаружения ошибки для одной из задач. Есть ли известное решение для этого?

Matt Schuchard 25.10.2018 15:34
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
1
1
252
1

Ответы 1

Не совсем уверен, что вы хотите, но вы можете установить 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

Это лучшее, что вы можете очистить.

Другие вопросы по теме