Назад | Перейти на главную страницу

Регистрируйте фильтрацию списка хранения переменных вместо set_fact

filtered факт в приведенном ниже коде содержит отфильтрованную строку и может использоваться во всех сценариях воспроизведения во время выполнения:

- hosts: localhost
  tasks:
    - set_fact:
         filtered: " {{ some_arg }} | regex_search(...)"

Тем не мение, filtered нужен только внутри playbook. Как зарегистрировать переменную, содержащую то же самое filtered результат, чтобы избежать ненужного создания фактов ...

Вы создаете хорошие ценности set_fact на самом деле не хранятся где-либо по умолчанию, они просто существуют в памяти на время выполнения playbook. Так что вам действительно не нужно ничего делать.

Игнорируя этот момент, я могу упомянуть, что, безусловно, можно определять переменные на уровне игры, уровне блока или уровне задачи. Во многих случаях вы можете использовать их для определения переменных без «задачи», просто для определения значения.

- hosts: localhost
  gather_facts: no
  vars:
    play_filtered: "a play variable"
  tasks:
  - debug:
      var: play_filtered
  - debug:
      var: task_filtered
    vars:
      task_filtered: " a task variable"
  - vars:
      block_filtered: "a block variable"
    block:
    - debug:
        var: block_filtered


# PLAY [localhost] *********************************************************************

# TASK [debug] *************************************************************************
# ok: [localhost] => {
#     "play_filtered": "a play variable"
# }

# TASK [debug] *************************************************************************
# ok: [localhost] => {
#     "task_filtered": " a task variable"
# }

# TASK [debug] *************************************************************************
# ok: [localhost] => {
#     "block_filtered": "a block variable"
# }

Ссылка: Ключевые слова Playbook