Как отобразить значения двух разных переменных регистра задачи в ansible - PullRequest
0 голосов
/ 01 августа 2020

Ниже мой сценарий,

---
- hosts: all
  tasks:
  - name: asyn task 1 use time command to see diff use when hostname to get faster output
    command: sleep 15
    async: 2
    poll: 0
    register: result1

  - name: asyn task
    command: sleep 2
    register: result2

  - name: showing result1
    debug:
     var: result1
     var1: result2

  - name: debugging output
    debug: msg=this is the {‌{ result1 }} and {‌{ result2 }}
#   with_items:
#   - {‌{ result1 }}
#   - {‌{ result2 }}

ошибка ниже,

changed: [vishwa]



TASK [showing result1] **************************************************************************************************

fatal: [rudra]: FAILED! => {"changed": false, "msg": "'var1' is not a valid option in debug"}

fatal: [arya]: FAILED! => {"changed": false, "msg": "'var1' is not a valid option in debug"}

fatal: [vishwa]: FAILED! => {"changed": false, "msg": "'var1' is not a valid option in debug"}

        to retry, use: --limit @/home/admin/ansibledemo/asynch.retry

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Возможно, приведенный ниже файл playbook может помочь вам выполнить ваше требование. Если нет, то у меня есть и другие альтернативы.

---
- hosts: all
  gather_facts: false
  name: "[ Debug Senario Test ]"
  become: true
  become_method: sudo
  tasks:
          - name: "[[ Command Task 1 ]]"
            command: "echo Command Task 1"
            register: register1
          - name: "[[ Command Task 2 ]]"
            command: "echo Command Task 2"
            register: register2
          - name: "[[ Display Registers ]]"
            command: "echo {{ item.stdout }}"
            with_items:
                    - "{{ register1 }}"
                    - "{{register2}}"
            register: register3
          - debug:
                  msg: "{{ register3 }}"
0 голосов
/ 01 августа 2020
  1. debug не имеет параметра var1 или var. Вы не можете просто создать параметр для модуля. Сообщение об ошибке ясное.
  2. Если вы хотите сохранить результат1 или результат2, используйте модуль set_fact.
  3. Вы выполняете задачу в asyn c в фоновом режиме. Задача Asyn c следует за огнем и забыть о выполнении. Эта задача будет запущена и находится в рабочем состоянии, в то время как другая будет запущена. Используйте 2 https://docs.ansible.com/ansible/latest/modules/async_status_module.html для получения результата задачи asyn c.

Ссылка: https://docs.ansible.com/ansible/2.7/user_guide/playbooks_async.html

0 голосов
/ 01 августа 2020

Первая точка, модуль debug не имеет опции var1, поэтому ошибка из задачи showing result1. Вы, вероятно, догадались об этом и написали задачу debugging output с опцией msg.

Это подводит ко второму пункту, регистрации статуса асинхронной задачи. Поскольку вы используете poll: 0, задача будет выполняться в асинхронном режиме, поэтому результат может быть не сразу доступен для зарегистрированной переменной. Введите async_status, чтобы проверить результат, как описано здесь . Кроме того, в вашем сценарии вы должны использовать значение async больше, чем sleep период.

Например,

- name: Wait for asynchronous job to end
  async_status:
    jid: '{{ result1.ansible_job_id }}'
  register: job_result
  until: job_result.finished
  retries: 5
...