#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"
]
}