ansible: я не получаю полное сообщение об ошибке для задачи

#ansible

#ansible

Вопрос:

У меня есть ansible playbook для подобного тестирования

 ---
- name: "test"
  hosts: localhost

  tasks:
    - name: "list files"
      block:
        - name: "list files"
          command: /usr/bin/example-command -x -y -z
          register: output

      rescue:
        - script: test.py {{ output.msg }}
          args:
            executable: python3
  

и это не удастся, я хочу зафиксировать сообщение об ошибке и отправить его в скрипт python, test.py (на данный момент я просто записываю сообщение в файл

 import sys

with open("/tmp/workfile", "w") as f:
    f.write(sys.argv[1])
  

выполнив playbook, и я посмотрел на /tmp/workfile, я получил

 [Errno
  

Почему я не получаю полное сообщение об ошибке?

Спасибо

Ответ №1:

Вам нужно указать аргумент в вашем скрипте. Рассмотрим следующий сборник задач:

 ---
- name: test
  hosts: localhost
  gather_facts: false
  vars:
    output:
      msg: This is a test.
  tasks:
    - script: test.py {{ output.msg }}
      args:
        executable: python3
      register: script1

    - script: test.py "{{ output.msg }}"
      args:
        executable: python3
      register: script2

    - debug:
        msg:
          - "{{ script1.stdout }}"
          - "{{ script2.stdout }}"
  

Где test.py просто:

 import sys

print('argv[1]: ', sys.argv[1])
  

Конечная задача выводит:

 TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "argv[1]:  Thisn",
        "argv[1]:  This is a test.n"
    ]
}