#python #linux #ansible #rhel7
#python #linux #ansible #rhel7
Вопрос:
В настоящее время у меня есть playbook, который создает файл .xml и скрипт python, который принимает файл .xml и обрабатывает его. Я намерен использовать шаблоны use j2 для создания файла в форме {{ ansible_date_time.iso8601_basic_short }}.xml, чтобы я мог отслеживать новые файлы. Однако прямо сейчас playbook действительно статичен, поскольку путь жестко закодирован в команде оболочки и скрипте python.
Есть предложения?
---
- name: testing
hosts: localhost
tasks:
- name: execute some shell command that produces an xml output file in current dir
shell: XXX
- name: Takes in xml output file produced earlier and passes into script.py
script: python_script.py
Комментарии:
1. В чем именно заключается ваш вопрос?
2. Как мне 1) сохранить выходной файл xml из команды командной оболочки для использования скриптом python 2) передать сохраненный вывод (если возможно) в скрипт python
3. Пожалуйста, не распространяйте необходимую информацию для ответа на ваш вопрос в комментариях, вместо этого отредактируйте свой вопрос.
4. используйте
chdir
arg для оболочки, чтобы ваша команда выполнялась в указанном каталоге и там создавался ваш файл xmll. Отредактируйте свой скрипт python, чтобы он мог принимать аргумент для указания пути к файлу xml в целевом файле.5. если я понимаю, что вы говорите (надеюсь, я понял это правильно), это требует жесткого кодирования пути, верно? в сценарии — попытка избежать этого, если это возможно
Ответ №1:
Если я понимаю, о чем вы спрашиваете, почему бы не использовать сценарий оболочки, который печатает в стандартном выводе содержимое XML, чтобы вы могли зарегистрировать его в переменной и использовать его после с помощью variable.stdout ? Нравится:
- name: generate xml
shell:
echo '<xml></xml>'
register: myxml
- name: create xml file
copy:
content: "{{ myxml.stdout }}"
dest: "{{ ansible_date_time.iso8601_basic_short }}.xml"
Комментарии:
1. Привет, спасибо за ваш ответ. Я забыл указать, команда оболочки создает XML-файл с помощью указанного флага, а стандартный вывод имеет формат, который отличается от того, что мне нужно.
2. Хорошо, но как насчет «cat» сразу после генерации XML в оболочке?
3. команда оболочки может создавать только XML-файл, а не вывод XML. Без указания флага я получаю другую форму вывода
4. И это нормально, но если вы позволите своей команде создать XML (поместив все выходные данные в /dev / null) и после этого вы запустите созданный XML, разве вы не в порядке?