Я пытаюсь изолировать вывод доступной пьесы, но он говорит "output.stdout": "VARIABLE IS NOT DEFINED!"
Мой код плейбука: ---
- hosts: localhost
tasks:
- name: Register variable
shell: "echo {{ item }}"
loop:
- "one"
- "two"
register: output
- debug:
var: output.stdout
Интересно, что вывод отладки работает нормально, если я не изолирую его с помощью stdout
ключ.
TASK [Register variable] ***********************************************************************************************************************************************
changed: [localhost] => (item=one)
changed: [localhost] => (item=two)
TASK [debug] ***********************************************************************************************************************************************************
ok: [localhost] => {
"output": {
"changed": true,
"msg": "All items completed",
"results": [
{
"ansible_loop_var": "item",
"changed": true,
"cmd": "echo one",
"delta": "0:00:00.002986",
"end": "2020-01-24 00:20:57.226744",
"failed": false,
"invocation": {
"module_args": {
"_raw_params": "echo one",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
Что я делаю не так ?
Более простой способ - создать отдельный файл .yml (через include), который будет выполнять мягкую операцию + вывод. Например:
main.yml:
- name: RUN start.yml
include: start.yml
vars:
app: "{{ item.name }}"
static: false
with_items: "{{ list_items }}"
start.yml в той же роли:
- name: "Run {{ app }}"
command: './runapp.sh {{ app }}'
register: start_app_register
no_log: True
- debug:
msg: '{{ start_app_register.stdout }}'
Когда вы используете регистр с циклом, структура данных, помещенная в переменную, будет содержать атрибут результатов, который представляет собой список всех ответов от модуля.
Таким образом:
output.results[0].stdout
output.results[1].stdout