TrashNotes

2025-02-18 13:23:34
В Ansible Playbook переменные можно передавать различными способами:

Через командную строку:

С помощью параметра --extra-vars при вызове ansible-playbook. Можно передавать переменные в формате JSON или YAML, либо указывать путь к файлу с переменными1.

bash
ansible-playbook example.yml --extra-vars "foo=bar"
ansible-playbook example.yml --extra-vars "@even_more_vars.json"
ansible-playbook generate_report.yml -e "report_start_date=2021-02-15 report_end_date=2021-02-16"
Переменные, переданные через extra vars, имеют самый высокий приоритет и перезаписывают любые другие переменные с тем же именем2.

Внутри playbook:

Непосредственно в playbook, в разделе vars156:

text
---
- hosts: example
  vars:
    foo: bar
  tasks:
    - debug: msg="Variable 'foo' is set to {{ foo }}"
Из отдельного файла, указанного в разделе vars_files1:

text
- hosts: example
  vars_files:
    - vars.yml
  tasks:
    - debug: msg="Variable 'foo' is set to {{ foo }}"
Условно, используя vars_files и переменную ansible_os_family для выбора файла с переменными в зависимости от операционной системы1.

Другие способы:

vars_prompt: Предлагает ввести значение переменной вручную перед выполнением задач4.

text
- hosts: all
  vars_prompt:
    - name: my_var
      prompt: Write here
      private: no
  tasks:
    - debug:
        msg: "Value is {{ my_var }}"
Inventory files: Переменные можно определять в файле inventory на уровне хоста или группы хостов5.

Роли: Переменные можно определять в ролях, в каталогах vars или defaults (последние имеют самый низкий приоритет)5.

Системные переменные: Можно использовать системные переменные с помощью плагина lookup и модуля env5.

text
- name: Show Value of System Variable
  debug:
    var: lookup('env', 'HOME')
Для использования переменной, её необходимо вызвать в нужном месте, поместив в "{{ }}"46.

При определении переменных, важно учитывать приоритет, чтобы избежать неожиданных перезаписей24. Самый высокий приоритет имеют extra vars, затем переменные, определенные в task, play vars_prompt, и так далее24. Переменные из role vars имеют самый низкий приоритет2.
← Previous Next →
Back to list