В этой части 4 части статей по Ansible мы объясним, как использовать статический и динамический файл inventory ( далее инвентори ) для определения групп хостов в Ansible.

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

Файл инвентари — это текстовый файл, который состоит из имен хостов или IP-адресов управляемых хостов или удаленных серверов.

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

В Ansible есть два типа файлов инвентари: статический и динамический.

Давайте посмотрим на каждый из них и разберем, как мы можем управлять ими в действии.

Итак, мы предполагаем, что вы уже установили Ansible на своем узле управления и настроили SSH-соединение без пароля с управляемыми хостами.

Статический файл invetory для Ansible

В Ansible статической файл инвентар — это простой текстовый файл, который содержит список управляемых хостов, объявленных в группе хостов с использованием имен хостов или IP-адресов.

Имя группы хостов заключено в квадратные скобки, то есть [group name]

Записи управляемого хоста позже перечислены под именем группы, каждая в отдельной строке.

Как обсуждалось ранее, хосты перечислены с использованием имен хостов или IP-адресов.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address
В целях иллюстрации мы создадим статический файл инвентари.
# mkdir test_lab && cd test_lab
# vim hosts
Сам файл
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Сохраните файл и выйдите.

Как вы можете видеть выше, мы создали 2 группы хостов: webservers и базы database_servers. К

Кроме того, мы создали дополнительную группу с именем datacenter, которая включает группу групп хостов, обозначенную суффиксом «: children», как показано выше.

Ansible также позволяет размещать группы хостов под именем группы.

В приведенном выше файле инвента группы webservers и database_servers размещены в datacenter.

ПРИМЕЧАНИЕ. Необязательно размещать управляемые хосты в группе хостов. Вы можете просто перечислить их, используя их имена хостов или IP-адреса, например.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Давайте теперь используем несколько команд Ansible с ссылкой на файл инвентаризации хостов.

Основной синтаксис для управления файлом inventory показано далее:

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Например:

$ ansible all -i /root/test_labs/hosts --list-hosts

Кроме того, вы можете использовать подстановочный знак * для замены аргумента «all».

$ ansible * -i /root/test_labs/hosts --list-hosts
Чтобы вывести список хостов в группе, укажите группу хостов вместо host-pattern
$ ansible webservers -i /root/test_labs/hosts --list-hosts

Динамический файл invetory для Ansible

В конфигурации, особенно в облачной, такой как AWS, где файл инвентари постоянно меняется при добавлении или выводе из эксплуатации серверов, хранение вкладок о хостах, определенных в файле инвентари, становится реальной проблемой.

Возвращаться к файлу хоста и обновлять список хостов с их IP-адресами становится неудобно.

И тут вступает в игру динамический инвентари.

Так что же такое динамический файл инвентари?

Динамический файл инвентари — это скрипт оболочки, написанный на Python, PHP или любом другом языке программирования.

Это удобно в облачных средах, таких как AWS, где IP-адреса меняются после остановки и повторного запуска виртуального сервера.

Ansible уже разработал скрипты инвентаризации для общедоступных облачных платформ, таких как Google Compute Engine, Amazon EC2, OpenStack, RackSpace, cobbler и других.

Каковы преимущества динамического файла хостов по сравнению со статическим?

  • Динамический файл inventory отлично справляются с задачей уменьшения человеческих ошибок, поскольку информация собирается с помощью скриптов
  • Требуются мимальные усилия для управления хостами.
Вы можете написать свой собственный динамический файл inventory на языке программирования по вашему выбору.
Скрипт должен возвращать формат в JSON, когда передаются соответствующие параметры.

Использование  динамического скрипта inventory

Скрипт, который используется для создания динамического инвентари, должен быть исполняемым, чтобы Ansible мог его использовать.

Чтобы получить информацию о хостах внутри скрипт динамической инвентаризации, просто запустите:

# ./script --list
Как указывалось ранее, вывод должен быть в формате JSON, как показано ниже.
  • Директива, состоящий из групп (т.е. webservers, database_Servers)
  • Директива со значениями
Мета директория
  • Хосты hostvars
Пример вывода
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}

Заключение

В этой статье мы продемонстрировали, как создавать статический и динамический файл inventory для Ansible.

Таким образом, статический файл inventory — это простой текстовый файл, содержащий список управляемых хостов или удаленных узлов, чьи номера и IP-адреса остаются постоянными.

С другой стороны, динамический файл inventory постоянно меняется по мере добавления новых хостов или вывода из эксплуатации старых.

IP-адреса хостов также являются динамическими при остановке и запуске новых хост-систем.

Мы надеемся, что вы нашли этот учебник информативным.

 

Please follow and like us:

Добавить комментарий