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.
Back to list