ALD Pro – средство централизованного управления и как мы выполняли пилотное внедрение. Часть 1
https://habr.com/ru/articles/739428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=739428#habracutНажимаем Сохранить
Начнётся процесс загрузки образа во временный каталог на сервере репозиториев.
После загрузки начнётся извлечение и индексация пакетов.
Это самый продолжительный процесс. Наберёмся терпения и подождём
Заветное изменение состояния 😊
Повторяем процедуру с оставшимися четырьмя репозиториями
После публикации всех репозиториев мы должны увидеть адрес, по которому эти
репозитории будут доступны
Проверим доступность этих репозиториев.
На этом же сервере изменим адреса репозиториев в /etc/apt/sources.list, приведём их к виду
Обратите внимание, что у нас репозитории доступны по https, так как используются самоподписные сертификаты, директивой trusted=yes
необходимо явно указать, что мы им доверяем.
Теперь можно обновить индекс пакетов и убедиться, что используются новые репозитории
Ошибок в выводе нет и указаны новые адреса репозиториев.
Так же необходимо изменить адрес репозиториев ALD Pro.
На контроллере домена тоже изменим адреса репозиториев.
Сервер репозиториев в составе ALD Pro развёрнут и функционирует штатно.С этого сервера по https смогут выполнять обновление и установку пакетов хосты, которые являются членами ALD Pro.
Хосты, которые не являются членами домена, смогут подключиться к серверу репозиториев по http.
Больше нам ВМ localrepo не потребуется.
Сервер DHCP
К ранее выполненным настройкам: IP, hostnameНеобходимо в качестве DNS указать адрес контроллера домена – 10.1.3.21
Указать адреса репозиториев ОС и ALD Pro
/etc/apt/sources.list
deb [trusted=yes] https://repo.astra.lan/repos/os-base/ 1.7_x86-64 main contrib non-free
deb [trusted=yes] https://repo.astra.lan/repos/os-extended/ 1.7_x86-64 main contrib non-free
/etc/apt/sources.list.d/aldpro.list
deb [trusted=yes] https://repo.astra.lan/repos/aldpro-main/ 1.4.0 main
deb [trusted=yes] https://repo.astra.lan/repos/aldpro-extended/ generic main
Установить приоритет пакетов ALD Pro
/etc/apt/preferences.d/aldpro
Package: *
Pin: release n=generic
Pin-Priority: 900
Выполнить обновление пакетов и установку клиентской части ALD Pro
sudo apt update && sudo apt dist-upgrade -y
sudo DEBIAN_FRONTEND=noninteractive apt-get install -q -y aldpro-client
Ввести в домен в качестве клиента
sudo /opt/rbta/aldpro/client/bin/aldpro-client-installer -c astra.lan -u admin -p ‘P@ssw0rd’ -d dhcp -i -f
и перезагрузить
sudo reboot
После перезагрузки можно добавить роль DHCP в ALD Pro
Роли и службы сайта -> Служба динамической настройки узла -> + Новый сервер
Из выпадающего списка выбираем наш хост – dhcp.astra.lan и указываем сайт
Запустится процесс развёртывания DHCP.
Следить за процессом можно в разделе Автоматизация -> Задания автоматизации ->
Журнал заданий
После развёртывания подсистемы, её необходимо настроить.
Роли и службы сайта -> Служба динамической настройки узла -> dhcp.astra.lan
На вкладке Настройка сетевых интерфейсов необходимо указать интерфейс, на котором будет работать DHCP сервер. Обязательно необходимо указать комментарий, т.к. используется система контроля версий и сохранением изменений мы выполняем коммит.
На вкладке Конфигурация скрипта необходимо указать настройки DHCP сервера
Примеры настроек указаны во встроенном руководстве, попасть в которое можно нажав на значок ?
в верхнем правом углу окна. Если встроенной справки покажется недостаточно, вспоминаем, что под капотом ALD Pro используется ISC DHCP, в
сети полно инструкций по настройке.
authoritative;
log-facility local7;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;
subnet 10.1.3.0 netmask 255.255.255.0 {
range 10.1.3.101 10.1.3.254;
option broadcast-address 10.1.3.255;
option domain-name-servers 10.1.3.21;
option domain-name "astra.lan";
option routers 10.1.3.9; # адрес маршрутизатора
next-server 10.1.3.25; # pxe сервер
filename "pxelinux.0";
}
Проверить работу DHCP можно, запустив клиентскую ВМ, которую мы подготовили.
В настройках у нас уже указан FTP сервер, с которого будет выполняться установка ОС, но сам сервер еще не настроен, поэтому на экране видим обращение к нему без ответа. Но проверяли мы не это, а то, что IP адрес и прочие сетевые настройки получены успешно.
Сервер установки ОС по сети
Выполняем предварительные настройки, аналогичные тем, которые делали при подготовке сервера DHCP:
IP адрес – 10.1.3.25;
имя узла – pxe.astra.lan;
в качестве DNS адрес контроллера домена – 10.1.3.21;
указываем адрес сервера репозиториев для ОС и ALD Pro. Помним, пока компьютер не является членом домена, доступ к серверу репозиториев есть только по http;
указываем приоритет для пакетов ALD Pro;
выполняем обновление пакетов;
устанавливаем пакеты для клиентской части ALD Pro;
sudo DEBIAN_FRONTEND=noninteractive apt-get install -q -y aldpro-client
вводим в домен в качестве клиента;
sudo /opt/rbta/aldpro/client/bin/aldpro-client-installer -c astra.lan -u admin -p ‘P@ssw0rd’ -d pxe -i -f
Установка роли сервера установки ОС по сети в ALD Pro
После ввода сервера pxe.astra.lan в качестве клиента домена, можно приступать к развёртыванию роли.
Автоматизация -> Установка ОС по сети-> + Новый сервер
Выбираем из списка наш сервер, указываем сайт и DHCP. После нажатия кнопки Сохранить, начнётся развёртывание роли.
Следить за состоянием развёртывания можно в разделе Автоматизация ->
Задания автоматизации -> Журнал заданий
Настройка сервера установки ОС по сети
Для возможности установки операционной системы по сети необходимо создать Профиль загрузки, в котором указать параметры установки ОС – preseed, послеустановочный скрипт, скрипт первой загрузки, boot-меню
Переходим в раздел Автоматизация -> Установка ОС по сети -> pxe.astra.lan -> Профили загрузки -> + Новый профиль
После сохранения профиля станут доступны вкладки с настройками, пойдём по порядку:
Preseed
Пример файла ответов на вопросы есть во встроенной справке, в нашем случае справка доступна по адресу https://dc01.astra.lan/ad/help/ui/45#preseed
Стоит обратить внимание, что в примере указан адрес репозитория в Интернет, нам это не подходит, поэтому файл необходимо немного модифицировать.
# Подключение сетевого репозитория
d-i mirror/protocol string http
d-i mirror/http/hostname string repo.astra.lan
d-i mirror/http/directory string /repos/os-main
# Установка локали и языка
d-i mirror/country string manual
d-i debian-installer/locale string ru_RU
d-i debian-installer/locale select ru_RU.UTF-8
d-i debian-installer/language string ru
d-i debian-installer/country string RU
d-i debian-installer/keymap string ru
# Выбор клавиатуры
d-i console-tools/archs select at
d-i console-keymaps-at/keymap select ru
d-i console-setup/toggle string Ctrl+Shift
d-i console-setup/layoutcode string ru
d-i keyboard-configuration/toggle select Ctrl+Shift
d-i keyboard-configuration/layoutcode string ru
d-i keyboard-configuration/xkb-keymap select ru
d-i languagechooser/language-name-fb select Russian
d-i countrychooser/country-name select Russia
# Автоматический выбор сетевого интерфейса
d-i netcfg/choose_interface select auto
# Подключение non-free,contrib компонентов в репозитории
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/services-select none
# Установка часового пояса UTC
d-i clock-setup/utc boolean true
# Временная зона
d-i time/zone string Europe/Moscow
# Не обновлять время
d-i clock-setup/ntp boolean false
# Автоматическая разметка дисков
d-i partman-base partman/default_filesystem string ext4
d-i partman-auto/init_automatically_partition \
select Авто - использовать весь диск
d-i partman-auto/method string regular
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-lvm/confirm boolean true
# Разметка для режима bios
#d-i partman-auto/choose_recipe select atomic
# для UEFI режима:
#d-i partman-auto/choose_recipe select /lib/partman/recipes-amd64-efi/30atomic
# Не задавать вопросов при разметке
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman-auto-crypto/erase_disks boolean true
d-i partman-basicfilesystems/no_swap boolean false
d-i partman-target/mount_failed boolean true
d-i partman-partitioning/unknown_label boolean true
d-i partman-auto/purge_lvm_from_device string true
d-i partman-lvm/vgdelete_confirm boolean true
d-i partman/confirm_write_new_label string true
d-i partman-lvm/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i anna/no_kernel_modules boolean true
d-i base-installer/kernel/image string linux-image-generic
# Создание пользователя при установке
d-i passwd/make-user boolean true
# Имя пользователя
d-i passwd/user-fullname string sysadmin
d-i passwd/username string sysadmin
# Пароль пользователя
d-i passwd/user-password password P@ssw0rd
d-i passwd/user-password-again password P@ssw0rd
d-i debian-installer/allow_unauthenticated string true
# Выбор рабочего стола Fly
tasksel tasksel/first multiselect Fly, Fly-ssh
tasksel tasksel/astra-feat-setup multiselect
# Дополнительные пакеты
# Специфические настройки Астры
d-i astra-additional-setup/os-check select Base security level Orel
d-i astra-additional-setup/additional-settings-orel multiselect
astra-additional-setup astra-additional-setup/automatic-network-disable multiselect
d-i astra-additional-setup/automatic-network-disable multiselect
d-i desktop-tablet-mode-switch/tablet-mode multiselect
popularity-contest popularity-contest/participate boolean false
# В GRUB будет только 1 операционная система
d-i grub-installer/only_debian boolean true
# Установка в mbr
d-i grub-installer/with_other_os boolean true
# Установка пароля Grub
d-i grub-installer/password password P@ssw0rd
d-i grub-installer/password-again password P@ssw0rd
grub-installer grub-installer/password-mismatch error
# Не показывать диалог окончания установки
d-i finish-install/reboot_in_progress note
d-i finish-install/exit/poweroff boolean true
# Команды, выполняемые после установки ОС
d-i preseed/late_command string in-target systemctl enable ssh; \
in-target bash -c "apt-get -y purge linux-image-*-hardened"; \
in-target bash -c "apt-get -y autoremove --purge"; \
in-target bash -c "sed -i 's/deb-src/#deb-src/g' /etc/apt/sources.list"; \
in-target bash -c "/usr/bin/wget -O /tmp/postinstall.sh http://10.1.3.25/tftp/{PROFILE_UNIQ_NAME}/{POSTINSTALL_FILE_NAME}";\
in-target bash -c "/bin/sh -x /tmp/postinstall.sh";\
echo
В примере во встроенной справке присутствует команда смены пароля только что созданного пользователяin-target bash -c "echo -e \"astra:astra\" | chpasswd"; \
я не стал её использовать и удалил.
Postinstall
В послеустановочном скрипте необходимо указать адреса локальных репозиториев и сервер сетевой установки, с него будет скачан скрипт первой загрузки на хост.
#!/bin/bash
set -x
sudo systemctl enable ssh
#Добавление репозиториев Astra Linux
cat <<EOL > /etc/apt/sources.list
deb http://repo.astra.lan/repos/os-base/ 1.7_x86-64 main contrib non-free
deb http://repo.astra.lan/repos/os-extended/ 1.7_x86-64 main contrib non-free
EOL
#Добавление репозиториев ALD Pro
cat <<EOL > /etc/apt/sources.list.d/aldpro.list
deb http://repo.astra.lan/repos/aldpro-main/ 1.4.0 main
deb http://repo.astra.lan/repos/aldpro-extended/ generic main
EOL
#Установка приоритетов репозиториев
cat <<EOL > /etc/apt/preferences.d/aldpro
Package: *
Pin: release n=generic
Pin-Priority: 900
EOL
# Скачать скрипт первого запуска
# Необходимо заменить IP адрес на ваш сервер ОС
wget http://10.1.3.25/tftp/{PROFILE_UNIQ_NAME}/{FIRSTSTART_FILE_NAME} -O /usr/bin/firststart.sh
# Подготовка к запуске сервиса первого запуска ОС
cat <<EOL > /etc/systemd/system/firststart.service
[Unit]
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/firststart.sh start
[Install]
WantedBy=multi-user.target
EOL
# Запуск сервиса
chmod 774 /usr/bin/firststart.sh
systemctl enable firststart || true
Скрипт первого запуска
В скрипте первого запуска происходит установка пакетов ALD Pro и ввод компьютера в домен.
#!/bin/bash
set -x
# Установка клиента ALD Pro и ввод компьютера в домен
case $1 in
start)
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install -yq aldpro-client wget
mkdir -p /etc/ssl/freeipa
wget -O /root/token http://10.1.3.25/tftp/tokens/$(hostname -f).pwd # Указать IP адрес вашего сервера установки ОС
ipa-client-install --hostname=$(hostname -f) --domain=$(hostname -d) --mkhomedir --password=$(cat /root/token) -U
rm -f /etc/salt/minion_id
/usr/bin/python3 /opt/rbta/aldpro/client/bin/aldpro-service-discovery.py
systemctl restart salt-minion
ln -s /usr/bin/astra-freeipa-domains-ctl /etc/domains.list.d/
systemctl disable firststart
reboot
;;
stop)
systemctl disable firststart
;;
*)
echo "$Usage: $0 {start|stop}"
;;
esac
BOOT-меню
Загрузочное меню для клиентов с BIOS
UI vesamenu.c32
# 0 - отключение приглашения командной строки. Загрузка начнется сразу
PROMPT 0
# Автоматический выбор меню по таймеру. Секунды вычисляются делением на 10 введенного значения
TIMEOUT 100
DEFAULT bootlocal # Выбор по умолчанию загрузки с диска
#DEFAULT pxeinstall # Выбор по умолчанию загрузки по сети
menu background isolinux/aldpro_bios.png
menu title User Management Portal Boot Menu
# Локальная загрузка с диска
LABEL bootlocal
menu label Boot from first HDD
kernel chain.c32
append hd0 0
TEXT HELP
Normal boot from HDD
ENDTEXT
# Загрузка из сети
LABEL pxeinstall
menu label PXE operation system install
kernel linux
append initrd=initrd.gz vga=788 auto=true priority=critical debian-installer/locale=ru_RU console-keymaps-at/keymap=ru hostname={HOSTNAME} domain={DOMAIN_REALM} astra-license/license=true url=http://10.1.3.25/tftp/{PROFILE_UNIQ_NAME}/{PRESEED_FILE_NAME} interface=auto netcfg/dhcp_timeout=60 # Необходимо указать IP адрес Вашего сервера установи ОС по сети
TEXT HELP
Install AstraLinux Operating System
ENDTEXT
GRUB меню
Загрузочное меню для клиентов UEFI
if loadfont $prefix/font.pf2 ; then
set gfxmode=800x600
set gfxpayload=keep
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod gfxterm
insmod png
terminal_output gfxterm
fi
if background_image /isolinux/aldpro.png; then
set color_normal=light-gray/black
set color_highlight=white/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
# Установка Astra Linux Special Edition
menuentry 'Install AstraLinux Operating System' {
set background_color=black
linux (http,10.1.3.25)/tftp/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname={HOSTNAME} domain={DOMAIN_REALM} astra-license/license=true url=http://10.1.3.25/tftp/{PROFILE_UNIQ_NAME}/{PRESEED_FILE_NAME} interface=auto netcfg/dhcp_timeout=60
initrd (http,10.1.3.25)/tftp/initrd.gz
}
После того как профиль загрузки будет создан, можно добавлять компьютеры, на которые этот профиль будет распространяться.
Автоматизация -> Установка ОС по сети -> pxe.astra.lan -> Перечень компьютеров
После добавления компьютера можно его включить и проверить загрузку по сети и установку ОС. Предварительно необходимо изменить приоритет загрузки – установить его на сетевую загрузку
Продолжение следует…