Создание инвентаризации
Инвентаризации организуют управляемые узлы в централизованных файлах, которые предоставляют Ansible информацию о системе и сетевых расположениях. Используя файл инвентаризации, Ansible может управлять большим количеством хостов одной командой.
Для выполнения следующих шагов вам потребуется IP-адрес или полное доменное имя (FQDN) по крайней мере одного хост-системы. В демонстрационных целях хост может работать локально в контейнере или виртуальной машине. Вы также должны убедиться, что ваш открытый SSH-ключ добавлен в файл authorized_keys на каждом хосте.
Продолжайте знакомство с Ansible и создайте инвентаризацию следующим образом:
- Создайте файл с именем
inventory.iniв каталогеansible_quickstart, который вы создали на предыдущем шаге. -
Добавьте новую группу
[myhosts]в файлinventory.iniи укажите IP-адрес или полное доменное имя (FQDN) каждой хост-системы.[myhosts] 192.0.2.50 192.0.2.51 192.0.2.52
-
Проверьте вашу инвентаризацию.
ansible-inventory -i inventory.ini --list
-
Отправьте запрос пинга группе
myhostsв вашей инвентаризации.ansible myhosts -m ping -i inventory.ini
Примечание
Используйте опцию
-uс командойansible, если имя пользователя отличается на контрольном узле и управляемом узле(ах).192.0.2.50 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } 192.0.2.51 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } 192.0.2.52 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Поздравляем, вы успешно создали инвентаризацию. Продолжайте знакомство с Ansible, создав playbook.
Инвентаризации в формате INI или YAML
Вы можете создавать инвентаризации в файлах формата INI или в YAML. В большинстве случаев, например, в примере на предыдущих шагах, файлы INI просты и легко читаются для небольшого количества управляемых узлов.
Создание инвентаризации в формате YAML становится разумным выбором по мере увеличения количества управляемых узлов. Например, следующее является эквивалентом inventory.ini, которое объявляет уникальные имена для управляемых узлов и использует поле ansible_host:
myhosts:
hosts:
my_host_01:
ansible_host: 192.0.2.50
my_host_02:
ansible_host: 192.0.2.51
my_host_03:
ansible_host: 192.0.2.52
Советы по созданию инвентаризации
- Убедитесь, что имена групп содержательны и уникальны. Имена групп также чувствительны к регистру.
- Избегайте пробелов, дефисов и предшествующих чисел (используйте
floor_19, а не19th_floor) в именах групп. -
Логически группируйте хосты в вашей инвентаризации в соответствии с их Что, Где и Когда.
- Что
-
Группируйте хосты в соответствии с топологией, например: db, web, leaf, spine.
- Где
-
Группируйте хосты по географическому расположению, например: дата-центр, регион, этаж, здание.
- Когда
-
Группируйте хосты по стадии, например: разработка, тестирование, препродакшн, продакшн.
Использование метагрупп
Создайте метагруппу, которая организует несколько групп в вашей инвентаризации с помощью следующего синтаксиса:
metagroupname: children:
Следующая инвентаризация демонстрирует базовую структуру дата-центра. Эта инвентаризация содержит метагруппу network, которая включает все сетевые устройства, и метагруппу datacenter, которая включает группу network и все веб-серверы.
leafs:
hosts:
leaf01:
ansible_host: 192.0.2.100
leaf02:
ansible_host: 192.0.2.110
spines:
hosts:
spine01:
ansible_host: 192.0.2.120
spine02:
ansible_host: 192.0.2.130
network:
children:
leafs:
spines:
webservers:
hosts:
webserver01:
ansible_host: 192.0.2.140
webserver02:
ansible_host: 192.0.2.150
datacenter:
children:
network:
webservers:
Создание переменных
Переменные устанавливают значения для управляемых узлов, такие как IP-адрес, FQDN, операционная система и SSH-пользователь, так что вам не нужно передавать их при выполнении команд Ansible.
Переменные могут применяться к определенным хостам.
webservers:
hosts:
webserver01:
ansible_host: 192.0.2.140
http_port: 80
webserver02:
ansible_host: 192.0.2.150
http_port: 443
Переменные также могут применяться ко всем хостам в группе.
webservers:
hosts:
webserver01:
ansible_host: 192.0.2.140
http_port: 80
webserver02:
ansible_host: 192.0.2.150
http_port: 443
vars:
ansible_user: my_server_user
См. также
- Как создать вашу инвентаризацию
-
Узнайте больше об инвентаризациях в формате
YAMLилиINI. - Добавление переменных в инвентаризацию
-
Узнайте больше о переменных инвентаризации и их синтаксисе.
- Ansible Vault
-
Узнайте, как шифровать конфиденциальные данные в вашей инвентаризации, такие как пароли и ключи.
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/getting_started/get_started_inventory.html