Условный set_fact не оценивает - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь установить переменную на основе результатов следующей оценки: ({{ found_files.files|length > 0 }}), однако, она не оценивается полностью. В чем может быть проблема?

Желаемый результат: found_files2: /dev/null

Результат:

TASK [debug] ********************************************************************************************************************************************************************************
ok: [localhost] => {
    "found_files2": "{'files': [], 'changed': False, 'msg': '', 'matched': 0, 'examined': 0, 'failed': False} if (False) else '/dev/null'"
}

Playbook:

---
- hosts: localhost
  gather_facts: no
  vars:
    backup_dir: /home/user1/projects/ansible/modules/backups/router2
  tasks:

    - name: get files in backups/<router name>/
      delegate_to: localhost
      find:
        paths: "{{ backup_dir }}"
      register: found_files

    - set_fact:
        found_files2: "{{ found_files }} if ({{ found_files.files|length > 0 }}) else '/dev/null'"

    - debug: var=found_files2

1 Ответ

0 голосов
/ 07 апреля 2020

Правильный синтаксис ниже

- set_fact:
    found_files2: "{{ found_files if (found_files.files|length > 0) else '/dev/null' }}"

Троичный фильтр дает тот же результат

- set_fact:                                                                                         
    found_files2: "{{ (found_files.files|length > 0)|ternary(found_files, '/dev/null') }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...