26

Ansible. Network-scripts. RHEL8

Ansible. Network-scripts. RHEL8

Приветствую!


Практически завершил работу над ansible-хелпером "conf_int_ipv4_via_network_scripts" (репозиторий "ansible_helpers"), но "практически" означает, что совокупность скриптов и сценариев уже можно использовать в работе.


Краткая инструкция.

1. Клонируем репозиторий - git clone "https://github.com/vladimir-chursin000/ansible_helpers".

2. Переходим в директорию ".../ansible_helpers/conf_int_ipv4_via_network_scripts/rhel8_based".

3. Заполняем inventory-файл "conf_network_scripts_hosts" (не забываем про ssh-ключи на удалённых хостах).

4. Заполняем основной файл конфигурации "config" (такой вот незамысловатый нейминг). Каждая линия - настройка конкретного сетевого интерфейса на конкретном хосте. Присутствует файл со всеми возможными примерами конфигурации - "config_examples".

5. Правим дополнительные файлы конфигурации, расположенные в директории "additional_configs":

а) dns_settings (настройки DNS). По умолчанию содержит только доменные сервера Google (8.8.8.8, 8.8.4.4) в качестве общих NS (nameservers/сервера имён) для всех хостов из inventory-файла. Также присутствует возможность для отдельных хостов выставить уникальные сервера имён;

б) config_del_not_configured_ifcfg. Файл конфигурации, определяющий действия в отношении сетевых интерфейсов, отсутствующих в основном файле конфигурации (который "config"). Для inventory-хостов, вписанных в этот конфиг, действует правило - отключать сетевые интерфейсы (и удалять соответствующие ifcfg-файлы), не сконфигурированные в файле "config".

6. Запускаем скрипт "install_network_scripts_and_configure_network.sh" (если "network-scripts" не установлен) или "apply_immediately_ifcfg.sh".


Что произойдёт после запуска (если опустить часть с установкой "network-scripts"), если кратко:

1. Бэкап ifcfg-файлов с сохранением в директорию (и поддиректории) ".../playbooks/ifcfg_backup_from_remote": "history" - для хранения, "now" - для дальнейшего сравнения с ifcfg-файлами, генерация которых (на основе config-а) произойдёт на следующем этапе.

2. Запуск perl-скрипта "generate_dynamic_ifcfg.pl", которые создаёт:

а) ifcfg-файлы для каждого inventory-хоста (на основе основного конфига). Размещаются в ".../playbooks/dyn_ifcfg_playbooks/dyn_ifcfg";

б) файлы resolv-conf (на основе "dns_settings"). Директория ".../playbooks/dyn_ifcfg_playbooks/dyn_resolv_conf";

в) task-файл для каждого inventory-хоста, содержащий ansible-инструкции для реконфигурации сети (директория ".../playbooks/dyn_ifcfg_playbooks"). Важный момент - если сгенерированные ifcfg-файлы не отличаются от текущих (скопированных на первом этапе исполнения), то task-файл будет содержать только ansible-код для взаимодействия с "resolv.conf".

3. Исполнение сформированных task-файлов.


P.S. №1. Осталась самая малость - реализовать механизм временного применения сетевых настроек (о чём писал ранее).


P.S. №2. Надеюсь, кому-то результат моих изысканий поможет сэкономить время.

Лига Сисадминов

2.4K постов18.9K подписчика

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

Вы смотрите срез комментариев. Показать все
5
Автор поста оценил этот комментарий
Какой трэш я увидел. Мне интересно посмотреть на результат работы тех людей что ставили плюсы.
раскрыть ветку (8)
Автор поста оценил этот комментарий

"Какой трэш" - это слишком абстрактно. Есть конкретика?

раскрыть ветку (7)
2
Автор поста оценил этот комментарий
Где роли, где джинджа, где структура?
раскрыть ветку (5)
Автор поста оценил этот комментарий

Если Вы не заметили, то концепция у репозитория не относится к каноничной.
Каждый раздел (см. скрин) - это приложение, которое можно смело использовать отдельно от репозитория.

+ Вот задачу с интерфейсами (о которой речь в публикации) как бы Вы решили, используя исключительно каноничный подход? Знаете примеры реализации?)

Иллюстрация к комментарию
раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Используйте модуль nmcli https://docs.ansible.com/ansible/latest/collections/communit...

У вас везде трэш посмотрите на lxc роль и посмотрите на роль lxc в galaxy с рейтингом  3 (я не говорю про 5). У вас везде антипатерны и трэш и вы ещё это кому-то советуете. Прочтите лучше доку для начала.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Как в каноничном виде сконфигурировать хотя бы десяток хостов, если условие такое
===
"(хотя бы) поднять/перенастроить несколько бриджей (для одного бриджа используется сетевой интерфейс с назначенным со стороны коммутатора транковым коннектом для доступа к разным vlan-ам c разных бриджей, для другого - обычный коннект), несколько бонд-коннектов (с вланами и без оных) и пару сетевых интерфейсов. При этом каждый хост может/должен содержать различное кол-во сетевых интерфейсов/бондов/бриджей."

Покажете готовое решение?
===
Про nmcli
Публикация имеет имя "Ansible. Network-scripts. RHEL8", а не "Ansible. NetworkManager. RHEL8"

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Готовое решение это хост варс и джинджа. То что вы делаете это какой-то трэш.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Буду благодарен, если Вы реализуете описанный случай каноничными средствами ansible и опубликуете ссылку на репозиторий в своём профиле (отправив публикацию в сообщество "Лига сисадминов") со ссылкой на эту публикацию.

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий
Начните с документации ансибл https://docs.ansible.com/ansible/2.8/user_guide/playbooks_be...
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку