Spec-Zone.ru › Ansible

Создание инвентаризации

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

Для выполнения следующих шагов вам потребуется IP-адрес или полное доменное имя (FQDN) по крайней мере одного хост-системы. В демонстрационных целях хост может работать локально в контейнере или виртуальной машине. Вы также должны убедиться, что ваш открытый SSH-ключ добавлен в файл authorized_keys на каждом хосте.

Продолжайте знакомство с Ansible и создайте инвентаризацию следующим образом:

  1. Создайте файл с именем inventory.ini в каталоге ansible_quickstart, который вы создали на предыдущем шаге.
  2. Добавьте новую группу [myhosts] в файл inventory.ini и укажите IP-адрес или полное доменное имя (FQDN) каждой хост-системы.

    [myhosts]
    192.0.2.50
    192.0.2.51
    192.0.2.52
    
  3. Проверьте вашу инвентаризацию.

    ansible-inventory -i inventory.ini --list
    
  4. Отправьте запрос пинга группе 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API