Серия «ИТ»

Ansible. Network-scripts. RHEL8. Сбор информации о MAC-адресах

Ansible. Network-scripts. RHEL8. Сбор информации о MAC-адресах Linux, Разработка, Программирование, IT, Perl, Командная оболочка bash

Нихао!


Очередная доработка хелпера "conf_int_ipv4_via_network_scripts" подъехала ( предыдущая публикация - Ansible. Network-scripts. RHEL8. Временное применение сетевой конфигурации ).

Как и обещал, реализовал сбор MAC-адресов (а также сведений о соседствах/neighbours) с удалённых хостов, на основе чего добавлена следующая функциональность:
1) дополнительные проверки на соответствие interface_name+hwaddr из "config" реальным интерфейсам удалённых хостов. Например, если на хосте А используется MAC-адрес "A1:A2:A3:A4:A5:A6", то попытка прописать такой же MAC-адрес на хосте B приведёт к ошибке и остановке сценария. Или, например, если в файле конфигурации для хоста А прописано, что за интерфейсом eth0 закреплён адрес "B1:B2:B3:B4:B5:B6", но в реальности eth0 = "C1:C2:C3:C4:C5:C6", то скрипт предложит исправить "config";
2) функционал проверки конфигурации без её применения ('check_ifcfg_without_apply.sh');
3) анализ сети (в пределах inventory-файла "conf_network_scripts_hosts") на предмет дублирования MAC-адресов. Если после запуска сценариев (бэкап ifcfg, проверка конфигурации, применение конфигурации) в директории ".../playbooks/ifcfg_backup_from_remote/network_data" был создан файл "WARNINGS.txt", то стоит обратить внимание на его содержание.


Также в директории "network_data" присутствует информация (файл "inv_hosts_interfaces_info.txt") об используемых на том или ином хосте MAC-адресах, что полезно при первоначальном заполнении файла "config" (дабы не собирать вручную информацию). В общем, если config на этапе заполнения, то просто запустите, например, скрипт бэкапа "just_run_ifcfg_backup.sh" и загляните в ".../playbooks/ifcfg_backup_from_remote/network_data".


Ссылка на репозиторий: https://github.com/vladimir-chursin000/ansible_helpers

Показать полностью

Ansible. Network-scripts. RHEL8. Временное применение сетевой конфигурации

Ansible. Network-scripts. RHEL8. Временное применение сетевой конфигурации Linux, Разработка, IT, Программирование, Perl, Командная оболочка bash, Open Source

Бонжур!


Доработал недавно (как и обещал в предыдущей публикации - Ansible. Network-scripts. RHEL8) функционал ansible-хелпера "conf_int_ipv4_via_network_scripts". Теперь изменения сетевых настроек возможно применить временно (например, на период тестирования). Для этого достаточно:

1) сконфигурировать целевые интерфейсы посредством правки файла "config";

2) задать время отката настроек на предыдущие через конфиг "additional_configs/config_temporary_apply_ifcfg" (по умолчанию = 10 минут);

3) запустить скрипт "apply_temporary_ifcfg.sh". Выполняет действия, аналогичные "apply_immediately_ifcfg.sh" (т.е. реконфигурирует сеть в соответствии с файлом "config"), но перед рестартом сервиса "network" запускает на удалённом хосте bash-скрипт "rollback_ifcfg_changes.sh", который возвращает сетевые настройки к виду до модификации через временной промежуток, определённый в файле "config_temporary_apply_ifcfg";

4) протестировать сетевые связанности целевых хостов (вероятно, когда-нибудь реализую утилиту на основе стека "ansible + bash + perl");

5) если всё в порядке, то запустить скрипт "apply_immediately_ifcfg.sh", который остановит исполнение сценария "rollback_ifcfg_changes.sh".


Итого, два варианта на выбор пользователя - либо применить новые настройки незамедлительно (just run "apply_immediately_ifcfg.sh"), либо применить их временно (run "apply_temporary_ifcfg.sh") до осуществления тестирования и отмены возврата к предыдущей конфигурации сети хоста (run "apply_immediately_ifcfg.sh").


Конечно, неплохо бы добавить централизованный сбор наименований сетевых интерфейсов и соответствующих им MAC-адресов, дабы в автоматическом режиме (при попытке применить конфигурацию) сверять с тем, что пользователь напишет в конфиге (и прекращать выполнение софта, если, например, для интерфейса задан некорректный MAC), но эту фичу, думаю, реализую позже.


P.S. На очереди небольшой сюрприз для любителей разрешать доступ только к тем сетевым портам, которые необходимы для конкретного сервиса.

===

Ссылка на репозиторий: https://github.com/vladimir-chursin000/ansible_helpers

Показать полностью

Ansible. Network-scripts. RHEL8

Ansible. Network-scripts. RHEL8 Разработка, Программирование, IT, Perl, Linux, Shell, Командная оболочка bash

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


Практически завершил работу над 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. Надеюсь, кому-то результат моих изысканий поможет сэкономить время.

Показать полностью

Скрипт генерации ifcfg-файлов

Скрипт генерации ifcfg-файлов Linux, Программирование, IT, Разработка, Perl, Open Source

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

В рамках создания ansible-helper-а "conf_int_ipv4_via_network_scripts" дописал скрипт ("generate_dynamic_ifcfg.pl") генерации сетевых интерфейсов для network-scripts по заранее заданным конфигурациям, который вполне допустимо использовать отдельно от хелпера (файл конфигурации с примерами = config_examples).

Чтобы использовать perl-программу вне контекста репозитория, потребуется:

1. Залогиниться на хост/ВМ с ОС Linux и установленным Perl5.

2. Скопировать скрипт "generate_dynamic_ifcfg.pl", например, в директорию "/opt/generate_dynamic_ifcfg".

3. Скопировать файл конфигурации (config), файл с примерами конфигурации (config_examples) и папку "ifcfg_tmplt" (содержит шаблоны конфигураций интерфейсов) в директорию со скриптом.

4. Откорректировать параметры скрипта из блока "STATIC VARS", т.е. задать директорию с шаблонами ifcfg-файлов и директорию для размещения сконфигурированных сетевых интерфейсов (ifcfg-файлов с конкретными значениями: имя интерфейса, MAC-адрес и проч.).

5. Отредактировать файл config, задав свои настройки сетевых интерфейсов (обычный интерфейс, bond, bridge, etc).

6. Запустить скрипт.

7. PROFIT!


P.S. №1. Увы, сам хелпер пока далёк от завершения. Предстоит ещё многое сделать, в т.ч. и, например, реализовать механизм временного применения сетевых настроек, например, на 3-4 минуты с последующим откатом к предыдущей конфигурации (наверняка для кого-то сия опция окажется весьма полезной).

===

P.S. №2. Ох и объёмная же статья (на основе репозитория ansible_helpers) для Хабра получится.

===
Ссылка на helper: https://github.com/vladimir-chursin000/ansible_helpers/tree/...
Показать полностью

Ответ на пост «Autodesk в РФ - всё... ломаем PowerMill»

Готовый список из комментаторов для тов. майора?
===
+ Вражий гугл тут подсказал вот чего: https://csprut.ru/common_news/importozam/
===
Повторю вопрос @Xianren . Если не создать, то может стоит поискать хотя бы аналоги, а не заниматься пиратством?

Все эти санкции когда-нибудь закончатся, а вот нарушение так и останется нарушением. Более того, если речь про продукты Autodesk (в зависимости от кол-ва крякнутых копий), то можно легко нарваться на уголовную статью: https://www.elcode.ru/service/news/daydjest-novostey-zakonod...

Также стоит упомянуть про сроки давности уголовного преступления.
"Лицо освобождается от уголовной ответственности, если со дня совершения преступления небольшой тяжести истекло 2 года, средней тяжести - 6 лет, тяжкого преступления - 10 лет, особо тяжкого - 15 лет. По каждому преступлению сроки исчисляются самостоятельно."

Ответ на пост «Autodesk в РФ - всё... ломаем PowerMill» Windows, Приложение, Autodesk, Длиннопост, Ответ на пост

Ansible без излишеств. NFS-клиент

Ansible без излишеств. NFS-клиент Разработка, Программирование, IT, Системное администрирование, Open Source

Доброго вечера (утра/дня/ночи)!

В рамках репозитория "ansible_helpers" добавлено новое приложение "install_nfs_client" ( https://github.com/vladimir-chursin000/ansible_helpers ), позволяющее централизованно управлять nfs-клиентами на множестве ОС вида "rhel8_based" (также произведены косметические изменения на ранее созданных "приложениях").

Ключевая особенность - единый файл конфигурации, на основе которого динамически формируются yml-файлы с заданиями (tasks) на монтирование nfs-ресурсов. Т.е. достаточно  заполнить inventory-файл "nfs_client_hosts" (вписав ip-адреса целевых хостов), внести изменения в файл "dyn_mount_config" и запустить скрипт "install_nfs_client.sh" (или "just_apply_new_mounts.sh", если необходимый софт для доступа к сетевым файловым системам уже установлен), чтобы получить результат.

===

P.S. На очереди "приложение" для развёртывания набора сетевых сервисов в комплексе (samba + vsftpd + webdav + etc).

Показать полностью

Ansible без излишеств. NFS

Ansible без излишеств. NFS Программирование, IT, Разработка, Linux

В рамках репозитория "ansible_helpers" ( https://github.com/vladimir-chursin000/ansible_helpers ) добавил новое приложение-помощник (helper), реализующее процесс установки и конфигурирования nfs-сервера на ОС вида "rhel8_based".

Репозиторий содержит краткие справочные материалы и пояснения. Всё, что необходимо, - это:

1) вписать ip-адреса целевых хостов в файл "nfs_server_hosts";

2) убедиться, что на эти хостах в файл "/root/.ssh/authorized_keys" (знаю, что лучшее решение - выдать права посредством SUDOERS определённому пользователю на запуск команд от root-а через sudo, но пока так) добавлены публичные ключи пользователя, из-под которого планируется запуск ansible-сценария;

3) сконфигурировать экспортируемые вовне директории, отредактировав файл "nfs_exports_config";

4) если есть необходимость, то отредактировать файлы конфигурации "nfs_server.conf" и "nfsmount_server.conf";

5) запустить исполнение сценария посредством скрипта "install_nfs_server.sh";

6) разрешить целевые сервисы на фаерволе (когда-нибудь для этих целей создам отдельный helper).

Если впоследствии потребуется либо изменить конфигурацию сервиса, либо поменять свойства экспортируемых директорий (добавить, удалить и проч.), то для этого предусмотрены скрипты - "check_nfs_serv_conf_is_changed.sh" (при изменении файлов конфигурации) и "check_nfs_serv_exports_is_changed.sh" (при изменении файла "/etc/exports").

Также, если возникнет необходимость проверить работоспособность nfs-сервиса (т.е. убедиться, что все необходимые сервисы запущены), в наличии скрипт "check_all_nfs_serv_is_started.sh".

P.S.

1. В планах, когда накопится достаточное кол-во приложений-помощников, написание полноценной статьи для Хабра (и не только) на тему "Минимальная ИТ-инфраструктура для малого бизнеса" (for example).

2. Про Ansible Galaxy в курсе, но хотелось иметь свой набор "велосипедов", который было бы удобно использовать лично мне (и, вероятно, кому-либо ещё).

Показать полностью

Если вы профи в своем деле — покажите!

Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.

СМОТРЕТЬ, УЧИТЬСЯ

Лучшее враг хорошего

Говорят, что лучшее - враг хорошего.


Если применить утверждение к разработке софта, то оно верно (в некоторой степени) в плане времени реализации.


Парадокс в том, что и хорошее - враг варианта исполнения на троечку, а "на троечку" это лютая вражина "и так сойдёт".


И если последующие вложения в продукт для перехода с хорошего на лучшее вполне предсказуемы (у хороших решений есть многое: от документации до внятной стратегии развития), то при переходе с уровня "на троечку" на "хорошее" возможны проблемы. Что уж тут говорить про "и так сойдет" -> "на троечку".

===

Такое вот мнение сложилось.

Отличная работа, все прочитано!