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