Установить массив как значение по умолчанию в Ansible

Я хотел бы установить массив по умолчанию, если переменная пуста. Установка пустого массива в фильтр по умолчанию описана здесь. Установка массива, который хранится в переменной, - нет.

В примере run_targets является undefined, targets следует использовать вместо этого.

- name: Set vars
  vars:
    targets: [target1, target2, target3]

- name: Include run sql task
      include: tasks/sql.yml
      with_items: "{{ run_targets | defult(targets) }}"

Есть какой-либо способ сделать это?

1 ответ

Ваш playbook недействителен. varsэто не модуль, который можно запустить в задаче. Вы либо используете set_fact или объявить varsна игровом уровне. Следующий полный пример демонстрирует, что он работает без проблем:

---
- name: Demo of default from var
  hosts: localhost
  gather_facts: false

  vars:
    default_targets:
      - target1
      - target2
      - target3

  tasks:
    - name: Show run targets else defaults
      debug:
        msg: "{{ run_targets | default(default_targets) }}"

Который дает:

$ ansible-playbook playbook.yml 

PLAY [Demo of default from var] ************************************************

TASK [Show run targets else defaults] ******************************************
ok: [localhost] => {
    "msg": [
        "target1",
        "target2",
        "target3"
    ]
}

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

$ ansible-playbook playbook.yml -e "{run_targets: [a,b,c]}"

PLAY [Demo of default from var] ************************************************

TASK [Show run targets else defaults] ******************************************
ok: [localhost] => {
    "msg": [
        "a",
        "b",
        "c"
    ]
}

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
Другие вопросы по тегам