В этой статье блога мы расскажем вам, как использовать переменные в плейбуке Ansible.
Если вы раньше занимались программированием или писали код, то концепция переменных должна быть вам знакома. Как и в любом другом языке программирования, в Ansible переменная — это заполнитель, хранящий значение, на которое впоследствии можно ссылаться в YAML-файле плейбука или в командной строке.
Правила, регулирующие именование переменных
В Ansible при именовании переменных применяются следующие правила:
- Имя переменной должно начинаться со строчного или прописного символа. Оно не может начинаться с символа подчеркивания, пробела, цифры или специального символа.
- Имя переменной должно содержать только алфавитно-цифровые символы, символы подчеркивания и целые числа.
- Некоторые зарезервированные ключевые слова не могут быть присвоены переменной. К ним относятся ключевые слова Python и параметры плейбука Ansible.
Существуют различные способы использования переменных Ansible в плейбуках. Давайте разберемся в этом.
Использование переменных в плейбуке Ansible
На самом базовом уровне вы можете определить имя переменной с помощью одного значения внутри плейбука, используя «vars» параметр. Вот пример простого плейбука.-
- hosts: server1 vars: salute: Hey guys! tasks: - name: Ansible Simple Variable Example Usage debug: msg: "{{ salute }}. Welcome to Linuxtechi."
В этом YAML-файле блок ‘vars’ начинает определение переменной. Переменная ‘salute’ хранит строковое значение ‘Hey guys’. Затем переменная вызывается и обращается к ней с помощью ‘msg‘ модуль в последней строке.
Во время выполнения плейбука вызывается переменная ‘salute’, и ее значение выводится в stdout.
Список и словарь переменных
Переменные также могут принимать расширенные формы, такие как списки и словари. Вы можете создать переменную с несколькими значениями, используя следующий синтаксис списка.
vars: variable_name: - item - item - item
Например, здесь приведен плейбук, содержащий список из трех студентов:
--- - hosts: server1 vars: students: - Alice - Mike - Sophie tasks: - name: Ansible lists Variable Example Usage debug: msg: " Our students are {{ students }}."
При выполнении этого плейбука на терминал выводятся все имена студентов, которые, по сути, являются элементами списка.
Кроме того, вы можете ссылаться на конкретный элемент списка, используя квадратные скобки. Например, {{ студенты[1] }} ссылается на второй элемент списка. В следующем примере студент ‘Майк ‘распечатывается.
На переменные элементы также можно ссылаться как на словари, используя пары ключ-значение, как показано на рисунке.
vars: variable_name: - key1: value 1 - key2: value2
В следующем примере плейбука словарь учеников представлен в виде пар ключ-значение.
--- - hosts: server1 vars: students: - student_1: Alice - student_2: Mike - student_3: Sophie tasks: - name: Ansible dictionary Variable Example Usage debug: msg: " Our students are {{ students }}."
Как и в случае со списками, вы можете ссылаться на конкретные элементы внутри словаря, используя квадратные скобки. Например, {{ студенты[1] }} ссылается на второй элемент пары ключ-значение в словаре.
Специальные переменные
В Ansible специальные переменные — это зарезервированные переменные, которые содержат информацию об инвентаре, системе или информацию о книге воспроизведения. Это предопределенные переменные, которые не могут быть явно заданы или определены пользователем.
К специальным переменным относятся магические переменные, ansible facts и переменные подключения.
Магические переменные
Магические переменные не могут быть установлены или определены пользователем и всегда представляют собой внутреннее состояние хост-системы или Ansible. В приведенном ниже плейбуке выводится версия Ansible, определенная именем переменной {{ ansible_version }} и имя хоста системы, определенное в инвентаре Ansible с помощью {{ ansible_version }}.
--- - hosts: Server1 tasks: - name: Ansible Magic variable example debug: msg: - "You are running Ansible version {{ ansible_version }} " - "This is running on {{ inventory_hostname }}"
Факты об Ansible
Факты Ansible — это специальные переменные, которые предоставляют информацию о системных и аппаратных данных хоста во время выполнения плейбука. Полученные данные в основном используются для принятия решений при выполнении конкретной задачи на хосте. К такой информации относятся IP-адрес, операционная система, архитектура системы и т. д.
Чтобы собрать сведения о конкретном хосте, можно выполнить следующую команду:
$ ansible -m setup <hostname>
Команда выводит факты в формате JSON.
Вы можете отфильтровать конкретные факты, используя следующий синтаксис:
$ ansible -m setup <hostname> -a "filter=<fact_name>"
В следующей команде Ansible мы отображаем информацию об ОС на удаленном хосте с помощью параметра ansible_lsb факт
Переменные подключения
Переменные соединения определяют, как управляющий узел Ansible подключается к удаленным узлам во время выполнения плейбука. Они обеспечивают гибкость при работе с различными типами соединений.
Рассмотрим приведенный ниже файл плейбука.
--- - hosts: server1 remote_user: root become: true become_method: sudo tasks: - name: Install Apache webserver apt: name: apache2 state: latest
Файл стать и стать_методом Переменные подключения включают эскалацию привилегий и позволяют запускать сборник пьес от имени пользователя root на удаленном хосте. Во время выполнения книги пьес -ask-become-pass параметр запрашивает пароль пользователя root.