Ansible - Как пропустить регистрацию переменной, если условие когда не выполняется - PullRequest
0 голосов
/ 19 марта 2020
-  shell: "echo 'hi'"
   register: output
-  shell: "ps -ef"
   register: output
   when: output.stdout =="hello"
 - debug: var=output

Окончательная выходная переменная определяется следующим образом:

TASK [Display output] **********************************************************

    ok: [localhost] => 
{
    "output": 
   {
        "changed": false,
        "skip_reason": "Conditional check failed",
        "skipped": true
    }
}

Даже если задача 2 пропущена, переменная регистрируется. Как я могу пропустить регистр, если условие не выполняется?

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Зарегистрируйте оба результата как output1 и output2. Используйте 'set_fact', чтобы установить новую переменную 'output' в соответствии с вашими условиями.

- shell: "echo 'hi'"
  register: output1
- shell: "ps -ef"
  register: output2
- set_fact:
    output: "{{ output2 if output2.stdout =='hello' | default(output1)}}"
- debug: var=output
0 голосов
/ 19 марта 2020

Q: «Как я могу пропустить регистр, если условие не выполняется?»

A: Вы не можете. Цитирование из Регистрация переменных

"Примечание. Если задание не выполнено или пропущено, переменная по-прежнему регистрируется с ошибкой или пропущенным статусом, единственный способ избежать Для регистрации переменной используются теги. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...