В этой статье я покажу вам, как использовать формат конфигурации JSON для создания файлов инвентаризации Ansible. Итак, приступим.
Предпосылки:
Если вы хотите попробовать примеры из этой статьи,
1) На вашем компьютере должен быть установлен Ansible.
2) У вас должно быть не менее 6 хостов Linux, настроенных для автоматизации Ansible.
На LinuxHint есть много статей, посвященных установке Ansible и настройке хостов для автоматизации Ansible. Вы можете проверить их при необходимости.
Создание каталога проекта:
В этой статье я собираюсь использовать код Visual Studio для редактирования файла конфигурации Ansible, файла инвентаризации и плейбуков. Вы можете использовать любой редактор или IDE, какие захотите.
Прежде чем вы начнете, давайте создадим каталог проекта, чтобы мы могли организовать наши файлы проекта.
Я создал новую директорию проекта json-inventory / в моем ДОМ каталог, как вы можете видеть на скриншоте ниже.
После того, как вы создали новый каталог проекта, откройте его в своем любимом текстовом редакторе или IDE.
В Visual Studio Code перейдите к Файл > Открыть папку… как отмечено на скриншоте ниже.
Теперь выберите каталог проекта json-inventory / и нажмите на ОК.
Каталог проекта должен быть открыт с помощью Visual Studio Code.
Теперь нажмите на Новый файл и создайте новый файл анзибль.cfg.
Затем введите следующие строки в анзибль.cfg файл.
[по умолчанию]inventory = hosts.json
host_key_checking = Ложь
Когда вы закончите, нажмите
Таким же образом создайте хозяева.json файл. Это файл инвентаризации JSON. Пока оставьте поле пустым. Мы будем работать над этим позже.
Теперь нажмите на Новая папка и создайте новый каталог пьесы как показано на скриншоте ниже.
Добавление хостов в файл инвентаризации JSON:
В этом разделе я покажу вам, как добавить хосты в файл инвентаря в формате JSON.
в хозяева.json файл инвентаря, вы добавляете все раздел.
"все":
В все раздел, вы добавляете хозяин раздел и добавьте своих хостов.
"все":
"hosts":
"host1": ноль,
"host2": ноль
Например, вы можете добавить хосты vm1.нодекит.ком а также vm2.нодекит.ком в хозяева.json инвентарный файл следующим образом.
"все":
"hosts":
"vm1.нодекит.com ": null,
"vm2.нодекит.com ": null
Когда вы закончите, нажмите
Вы можете проверить, какие хосты доступны в вашем файле инвентаризации, с помощью следующей команды:
$ ansible --list-hosts все
Как видите, хосты, которые я добавил в свой файл инвентаря (vm1.нодекит.ком а также vm2.нодекит.ком) перечислены.
Группировка хостов в файле инвентаризации JSON:
В этом разделе я покажу вам, как группировать хосты в вашем файле инвентаризации JSON.
Группа хостов по умолчанию в Ansible: все. В все в группе есть все хосты из каждой группы (включая хосты из все группа).
Вы добавляете группы узлов сети в дети раздел вашего инвентарного файла JSON.
"все":
…
"дети":
"группа 1":
,
"group2":
Например, чтобы добавить хосты vm3.нодекит.ком а также vm4.нодекит.ком в сеть группа, и добавить хосты vm5.нодекит.ком а также vm6.нодекит.ком в db group, введите следующие строки в свой файл инвентаризации JSON.
"все":
"hosts":
"vm1.нодекит.com ": null,
"vm2.нодекит.com ": null
,
"дети":
"web":
"hosts":
"vm3.нодекит.com ": null,
"vm4.нодекит.com ": null
,
"db":
"hosts":
"vm5.нодекит.com ": null,
"vm6.нодекит.com ": null
Когда вы закончите, нажмите
Здесь отмеченные линии добавляют хосты vm3.нодекит.ком а также vm4.нодекит.ком в сеть группа.
Отмеченные линии добавляют хосты vm5.нодекит.ком а также vm6.нодекит.ком в db группа.
Теперь вы можете перечислить все доступные хосты в вашем файле инвентаризации JSON с помощью следующей команды:
$ ansible --list-hosts все
Как видите, все хосты из каждой группы (сеть, db, а также все) отображаются.
Чтобы вывести список доступных хостов из сеть только для группы, выполните следующую команду:
$ ansible --list-hosts веб-сайт
Как видите, все хосты в сеть группы отображаются.
Таким же образом вы можете перечислить все доступные хосты из db group с помощью следующей команды:
$ ansible --list-hosts БД
Как видите, все хосты в db группы отображаются.
Добавление глобальных фактов в файл инвентаризации JSON:
В Ansible переменные также называются фактами. Глобальные факты или глобальные переменные доступны с каждого хоста каждой группы в вашем файле инвентаризации JSON. В этом разделе я покажу вам, как добавить глобальные факты или глобальные переменные в доступный.
Вы можете добавить глобальные факты или глобальные переменные в варс раздел внутри все раздел вашего инвентарного файла JSON следующим образом:
"все":
"hosts":
…
,
"vars":
"переменная1": "значение1",
"переменная2": "значение2"
,
"дети":
"web":
…
,
"db":
…
Например, вы можете добавить глобальные факты / переменные webroot а также индекс в варс раздел вашего инвентарного файла JSON следующим образом:
"все":
"hosts":
"vm1.нодекит.com ": null,
"vm2.нодекит.com ": null
,
"vars":
"webroot": "/ var / www / html",
"index": "index.php "
,
"дети":
"web":
"hosts":
"vm3.нодекит.com ": null,
"vm4.нодекит.com ": null
,
"db":
"hosts":
"vm5.нодекит.com ": null,
"vm6.нодекит.com ": null
Когда вы закончите, нажмите
Чтобы проверить, работают ли глобальные факты / переменные, я собираюсь создать новую книгу print_vars1.ямл. Цель этого пособия - распечатать факты / переменные с помощью отлаживать модуль Ansible. Это также поможет нам позже понять приоритет фактов / переменных.
Итак, создайте новую пьесу print_vars1.ямл в твоей пьесы / каталог и введите следующие строки в свой print_vars1.ямл файл.
- хосты: всепользователь: ansible
задачи:
- имя: Распечатать корневой каталог и индекс
отлаживать:
msg: 'WebRoot webroot и индекс index'
Когда вы закончите, нажмите
Чтобы проверить, работают ли глобальные факты / переменные, запустите print_vars1.ямл playbook следующим образом:
$ ansible-playbook плейбуки / print_vars1.ямл
Плейбук должен успешно работать.
Вернитесь к ЗАДАЧА раздел. Как видите, webroot а также индекс факты / переменные применяются к каждому хосту в моем файле инвентаризации JSON. Итак, глобальные факты / переменные работают.
Добавление групповых фактов в файл инвентаризации JSON:
Вы также можете добавить факты / переменные для конкретной группы хостов. В этом разделе я покажу вам, как добавить групповые факты / переменные в ваш файл инвентаризации JSON.
Я собираюсь добавить то же самое webroot а также индекс факты в сеть группа хостов моего инвентарного файла JSON. Ценность этих фактов будет разной. Я сделал это, чтобы вы также могли понять, как работает приоритет фактов / переменных в Ansible.
Чтобы добавить факты webroot а также индекс в сеть группа узлов, добавьте варс раздел в сеть раздел вашего инвентарного файла JSON следующим образом:
"все":
"hosts":
"vm1.нодекит.com ": null,
"vm2.нодекит.com ": null
,
"vars":
"webroot": "/ var / www / html",
"index": "index.php "
,
"дети":
"web":
"hosts":
"vm3.нодекит.com ": null,
"vm4.нодекит.com ": null
,
"vars":
"webroot": "/ web / public_html",
"index": "index.html "
,
"db":
"hosts":
"vm5.нодекит.com ": null,
"vm6.нодекит.com ": null
Когда вы закончите, нажмите
Чтобы проверить факты, запустите print_vars1.ямл playbook следующим образом:
$ ansible-playbook плейбуки / print_vars1.ямл
Как видите, групповые факты webroot а также индекс доступны только для хозяев vm3.нодекит.ком а также vm4.нодекит.ком, хозяева в сеть группа.
Также обратите внимание, что групповые факты (webroot а также индекс) заменили глобальные факты (webroot а также индекс). Итак, вы можете сказать, что групповые факты имеют более высокий приоритет, чем глобальные.
Добавление фактов хоста в файл инвентаризации JSON:
Вы также можете добавить специфичные для хоста факты / переменные в свой файл инвентаризации JSON. В этом разделе я покажу вам, как добавить специфичные для хоста факты / переменные в ваш файл инвентаризации JSON.
Для глобальных или групповых фактов мы сохранили значение хостов ноль.
Чтобы добавить факты о хосте, замените ноль с фактами вашего хоста в файле инвентаризации JSON следующим образом:
"hosts":"host1":
"var1": "значение1",
"var2": "значение2",
,
"host2":
"var2": "значение3",
"var3": "значение4",
Например, чтобы добавить индекс факт размещения vm5.нодекит.ком хост, заменить ноль с фактами хозяина следующим образом.
"все":
"hosts":
"vm1.нодекит.com ": null,
"vm2.нодекит.com ": null
,
"vars":
"webroot": "/ var / www / html",
"index": "index.php "
,
"дети":
"web":
"hosts":
"vm3.нодекит.com ": null,
"vm4.нодекит.com ": null
,
"vars":
"webroot": "/ web / public_html",
"index": "index.html "
,
"db":
"hosts":
"vm5.нодекит.com ":
"index": "index.ру "
,
"vm6.нодекит.com ": null
Когда вы закончите, нажмите
Чтобы проверить доступные факты, запустите print_vars1.ямл playbook следующим образом:
$ ansible-playbook плейбуки / print_vars1.ямл
Как видите, индекс факт доступен только для vm5.нодекит.ком хозяин.
Также обратите внимание, что основной факт заменил глобальный факт. Факты / переменные хоста имеют наивысший приоритет в Ansible. Таким образом, основные факты / переменные заменят групповые факты / переменные и глобальные факты / переменные.
Заключение:
В этой статье я показал вам, как создать файл инвентаризации Ansible в формате JSON. Я показал вам, как добавлять хосты, добавлять группы хостов, добавлять глобальные факты, добавлять факты групп и добавлять факты хостов в ваш файл инвентаризации в формате JSON.