В этой статье блога мы расскажем вам, как использовать переменные в плейбуке 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.

Ansible-Playbook-Execution-Variable-debug-module

Список и словарь переменных

Переменные также могут принимать расширенные формы, такие как списки и словари. Вы можете создать переменную с несколькими значениями, используя следующий синтаксис списка.

  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 }}."

При выполнении этого плейбука на терминал выводятся все имена студентов, которые, по сути, являются элементами списка.

List-Dictionary-Ansible-Variables

Кроме того, вы можете ссылаться на конкретный элемент списка, используя квадратные скобки. Например, {{ студенты[1] }} ссылается на второй элемент списка. В следующем примере студент ‘Майк ‘распечатывается.

02-varaible-list-example-playbook-execution

На переменные элементы также можно ссылаться как на словари, используя пары ключ-значение, как показано на рисунке.

  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 }}."

03-varaible-list-example-playbook-execution

Как и в случае со списками, вы можете ссылаться на конкретные элементы внутри словаря, используя квадратные скобки. Например, {{ студенты[1] }} ссылается на второй элемент пары ключ-значение в словаре.

03-varaible-list-example2-playbook-execution

Специальные переменные

В 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 }}"

Magic-Variables-Ansible-Playbook

Факты об Ansible

Факты Ansible — это специальные переменные, которые предоставляют информацию о системных и аппаратных данных хоста во время выполнения плейбука. Полученные данные в основном используются для принятия решений при выполнении конкретной задачи на хосте. К такой информации относятся IP-адрес, операционная система, архитектура системы и т. д.

Чтобы собрать сведения о конкретном хосте, можно выполнить следующую команду:

$ ansible -m setup <hostname>

Команда выводит факты в формате JSON.

Ansible-Facts-Output

Вы можете отфильтровать конкретные факты, используя следующий синтаксис:

$ ansible -m setup <hostname> -a "filter=<fact_name>"

В следующей команде Ansible мы отображаем информацию об ОС на удаленном хосте с помощью параметра ansible_lsb факт

Ansible-Facts-With-Filters

Переменные подключения

Переменные соединения определяют, как управляющий узел 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.

Connection-Variables-Ansible-Playbook