Отладка и валидация сложных инфраструктурных решений с помощью Vagrant (Евгений Синельников, OSSDEVCONF-2017) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) (Batch edit: replace PCRE (\n\n)+(\n) with \2) |
||
(не показано 5 промежуточных версий этого же участника) | |||
;{{SpeakerInfo}}: {{Speaker|Евгений Синельников}}
<blockquote>
Воспроизводимость проблемы является основным условием возможности её исправления.
В случае сложных инфраструктурных решений из нескольких узлов, многократное соблюдение этого условия становится всё более трудоёмким. В этом докладе представлен один из
эффективных сценариев отладки развёртывания и валидации конфигурации Active Directory на базе Samba с помощью механизма управления конфигурациями виртуальных машин Vagrant.
</blockquote>
{{VideoSection}}
{{vimeoembed|201651742|800|450}}
{{youtubelink|KJnZIuva1a8}}{{letscomment}}
{{SlidesSection}}
[[File:Отладка и валидация сложных инфраструктурных решений с помощью Vagrant (Евгений Синельников, OSSDEVCONF-2017).pdf|left|page=-|300px]]
{{----}}
== Thesis == === Стенд для отладки Samba === Основная задача отладки Samba состояла в том, чтобы в заданном наборе дистрибу\-тивных решений ALT (как серверных, так и клиентских) иметь возможность сказать: * какие механизмы, необходимые для развёртывания инфраструктуры Active Directory работают, а какие требуют доработки; * какие службы, «из коробки», сконфигурированы корректно, а какие требуют дополнительного конфигурирования; * какое пакетное окружение влияет на работоспособность базовых сценариев развёртывания и для каких дистрибутивных решений оно специфично; * какой порядок действий подходит для заданного пакетного окружения, а какой требует уточнения. Для настройки использовались следующий параметры конфигурации: * статическая настройка сетевых интерфейсов в <tt>/etc/net/ifaces/$IFACE/</tt>; * настройка DNS в <tt>/etc/net/ifaces/$IFACE/resolv.conf</tt>; * настройка Kerberos в <tt>/etc/krb5.conf</tt>; * настройка Samba в <tt>/etc/samba/smb.conf</tt>; * комплексная настройка аутентификации PAM \\ (<tt>/etc/pam.d/system-auth</tt>) и авторизации NSS\\ (<tt>/etc/nsswitch.conf</tt>) через SSS (<tt>/etc/sssd/sssd.conf</tt>) с помощью встроенной утилиты <tt>system-auth</tt>. Для отладки дистрибутивных решений было подготовлено три виртуальных образа или, в терминологии Vagrant, «бокса» (Box) ([https://app.vagrantup.com/mastersin/]): * <tt>mastersin/basealt-p8-server</tt> — сервер на базе SysVinit. * <tt>mastersin/basealt-p8-server-systemd</tt> — сервер на базе Systemd. * <tt>mastersin/basealt-p8-workstation</tt> — клиент на базе Systemd и NetworkManager. Минимальный сценарий отладки (Рис. \ref{sin:ref0}) строился на использовании одного и того же «серверного бокса» как для сервера (контроллера домена), так и для клиента (рабочей станции в домене Samba). Сначала для образов на базе SysVinit, а затем для образов на базе Systemd. Последним в цепочку отладки был добавлен «клиентский бокс» на основе минимального дистрибутива Альт Рабочая станция. [[File:Отладка и валидация сложных инфраструктурных решений с помощью Vagrant-img001.png|800px|center]] На текущий момент с помощью рассмотренного подхода выявлена и оперативно исправлена ошибка некорректных путей к модулям ldb (ALT\#33427). Стабильно воспроизводится проблема обновления DNS после подключения к домену: <pre> ==> client.domain.alt: DNS update failed: NT_STATUS_INVALID_PARAMETER ==> client.domain.alt: Joined 'CLIENT' to dns domain 'domain.alt' ==> client.domain.alt: No DNS domain configured for client. Unable to perform DNS Update. ==> client.domain.alt: DNS update failed! ==> client.domain.alt: No DNS domain configured for . Unable to perform DNS Update. </pre> Также, процесс отладки во время написания тезисов моего доклада позволил выявить проблему падения <tt>net ads join</tt> при наличии двух доменов в списке поиска локальных доменов (search) файла <tt>/etc/resolv.conf</tt> (SAMBA\#13022). В связи с поддержкой дистрибутивов Альт и даже шире — любых дистрибутивов на базе Sisyphus в новых версиях Vagrant, предлагается более широкое использование рассмотренного сценария отладки для решения следующих задач: * демонстрации воспроизводимых рабочих конфигураций желающим ознакомиться пользователям; * выявления регрессий в процессе жизненного цикла дистрибутивных решений; * последовательного внедрения во время отладки решений таких современных средств оркестрации, как Ansible, Chef и Puppet; * непосредственного использования отладочного стенда для решения проблем разработки и отладки. {{LinksSection}} <!-- <blockquote>[©]</blockquote> --> {{fblink|1951704488415896}} {{vklink|759}} <references/> [[File:{{#setmainimage:Отладка и валидация сложных инфраструктурных решений с помощью Vagrant (Евгений Синельников, OSSDEVCONF-2017)!.jpg}}|center|640px]] {{stats|disqus_comments=0|refresh_time=2020-01-28T14:15:242021-08-31T17:48:12.726535364057|vimeo_comments=0|vimeo_plays=2830|youtube_comments=0|youtube_plays=2733}} [[Категория:OSSDEVCONF-2017]] [[Категория:Samba]] [[Категория:DevOps]] |
Текущая версия на 12:22, 4 сентября 2021
- Докладчик
- Евгений Синельников
Воспроизводимость проблемы является основным условием возможности её исправления.
В случае сложных инфраструктурных решений из нескольких узлов, многократное соблюдение этого условия становится всё более трудоёмким. В этом докладе представлен один из эффективных сценариев отладки развёртывания и валидации конфигурации Active Directory на базе Samba с помощью механизма управления конфигурациями виртуальных машин Vagrant.
Видео
Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.
Презентация
Thesis
Отладка сложных клиент-серверных решений, которые для воспроизведения рабочих конфигураций требуют несколько вычислительных узлов, существенно упрощается при использовании современных средств виртуализации. Важной характеристикой таких средств, для задач отладки, является возможность автомати\-ческого создания, запуска, остановки и контроля за состоянием виртуальных машин с помощью команд внешнего управления средой виртуализации. В более широком виде такие возможности предоставляются специализированными средствами управления конфигурациями. Одним из таких средств является открытый проект Vagrant[1]. В данной работе рассматривается вариант отладки рабочих станций и контроллеров домена для клиент-серверных решений на базе проекта Samba.
Для создания и конфигурирования виртуальной среды Vagrant поддерживает базовый набор встроенных средств виртуализации (VirtualBox, Hyper-V и Docker), который может быть расширен с помощью сторонних расширений[2]:
$ gem list --remote ^vagrant- | head -e vmware-fusion -e 'aws ' -e 'xenserver ' vagrant-aws (0.7.2) vagrant-vmware-fusion (0.0.1) vagrant-xenserver (0.0.14) $ gem list --remote ^vagrant- | wc -l 507
Средства виртуализации в терминологии среды управления конфигурациями Vagrant называются «провайдерами» (Providers), а механизмы управления виртуаль\-ными машинами — «развёртывателями» (Provisioners). В качестве «развёртывате\-лей» Vagrant поддерживает Ansible, Chef, Puppet и Salt, а также копирование файлов (File) и запуск скриптов через SSH и WinRM (Shell).
Для настройки виртуальных машин, прежде всего настроек сети, Vagrant поддержи\-вает определение различных Linux дистрибутивов. Начиная с версии 2.0.0 в него включена поддержка определения дистрибутивов ALT и настройка etcnet, включая возможность задания имени хоста, маски подсети в CIDR{}-нотации и управления через NetworkManager. Минимальный вариант рабочей конфигурации (Vagrantfile) с двумя видами сетевых интерфейсов выглядит следующим образом:
<code-ruby> Vagrant.configure("2") do |config|
config.vm.box = "mastersin/basealt-p8-server-systemd" config.vm.network "private_network", ip: "192.168.2.2", netmask: "24", gateway: "192.168.2.1" config.vm.network "public_network", nm_controlled: "yes" config.vm.hostname = "example.com"
end </code-ruby>
Стенд для отладки Samba
Основная задача отладки Samba состояла в том, чтобы в заданном наборе дистрибу\-тивных решений ALT (как серверных, так и клиентских) иметь возможность сказать:
- какие механизмы, необходимые для развёртывания инфраструктуры Active Directory работают, а какие требуют
доработки;
- какие службы, «из коробки», сконфигурированы корректно, а какие требуют дополнительного конфигурирования;
- какое пакетное окружение влияет на работоспособность базовых сценариев развёртывания и для каких дистрибутивных
решений оно специфично;
- какой порядок действий подходит для заданного пакетного окружения, а какой требует уточнения.
Для настройки использовались следующий параметры конфигурации:
- статическая настройка сетевых интерфейсов в /etc/net/ifaces/$IFACE/;
- настройка DNS в /etc/net/ifaces/$IFACE/resolv.conf;
- настройка Kerberos в /etc/krb5.conf;
- настройка Samba в /etc/samba/smb.conf;
- комплексная настройка аутентификации PAM \\ (/etc/pam.d/system-auth) и авторизации NSS\\
(/etc/nsswitch.conf) через SSS (/etc/sssd/sssd.conf) с помощью встроенной утилиты system-auth. Для отладки дистрибутивных решений было подготовлено три виртуальных образа или, в терминологии Vagrant, «бокса» (Box) ([2]):
- mastersin/basealt-p8-server — сервер на базе SysVinit.
- mastersin/basealt-p8-server-systemd — сервер на базе Systemd.
- mastersin/basealt-p8-workstation — клиент на базе Systemd и NetworkManager.
Минимальный сценарий отладки (Рис. \ref{sin:ref0}) строился на использовании одного и того же «серверного бокса» как для сервера (контроллера домена), так и для клиента (рабочей станции в домене Samba). Сначала для образов на базе SysVinit, а затем для образов на базе Systemd. Последним в цепочку отладки был добавлен «клиентский бокс» на основе минимального дистрибутива Альт Рабочая станция.
На текущий момент с помощью рассмотренного подхода выявлена и оперативно исправлена ошибка некорректных путей к модулям ldb (ALT\#33427). Стабильно воспроизводится проблема обновления DNS после подключения к домену:
==> client.domain.alt: DNS update failed: NT_STATUS_INVALID_PARAMETER ==> client.domain.alt: Joined 'CLIENT' to dns domain 'domain.alt' ==> client.domain.alt: No DNS domain configured for client. Unable to perform DNS Update. ==> client.domain.alt: DNS update failed! ==> client.domain.alt: No DNS domain configured for . Unable to perform DNS Update.
Также, процесс отладки во время написания тезисов моего доклада позволил выявить проблему падения net ads join при наличии двух доменов в списке поиска локальных доменов (search) файла /etc/resolv.conf (SAMBA\#13022).
В связи с поддержкой дистрибутивов Альт и даже шире — любых дистрибутивов на базе Sisyphus в новых версиях Vagrant, предлагается более широкое использование рассмотренного сценария отладки для решения следующих задач:
- демонстрации воспроизводимых рабочих конфигураций желающим ознакомиться пользователям;
- выявления регрессий в процессе жизненного цикла дистрибутивных решений;
- последовательного внедрения во время отладки решений таких современных средств оркестрации, как Ansible, Chef и Puppet;
- непосредственного использования отладочного стенда для решения проблем разработки и отладки.
Примечания и ссылки
- ↑ Mitchell Hashimoto, Vagrant: Up and Running, 2013
- ↑ Vagrant Project wiki, Available Vagrant Plugins, 2017, [1]
Plays:63 Comments:0