Pull to refresh
12
0.1
Данила Несин @GrimAnEye

Системный администратор, Go-разработчик

Send message

Этот пример плейбука только для того, чтобы вставить в конце рекламу сервиса?

Используется vault, а в чем, например, его преимущество при автоматическом использовании - например какой смысл где-то сохранять пароль, чтобы расшифровать пароль, чтобы с ним запрашивать пароль из облака.

А почему бы не разбить портянку playbook на роль - да, можно и так и так, но в виде роли можно выделить независимые друг от друга части и отлаживать каждую из частей станет проще. Так же использование роли позволит подробно описать, как работает их механизм, раз статья не высокого уровня сложности и поможет разобраться новичкам.

А вообще по ansible очень хорошая и подробная официальная документация с примерами https://docs.ansible.com/

Есть открытый и бесплатный аналог, встроенный даже во многие сетевые карты- уже была статья про него с подробным описанием https://habr.com/ru/articles/681142/

От статьи ожидал увидеть несколько иного, а не только предложения "структурируйте вывод журнала":

  • Необычных ситуации возникновения и последующей обработки ошибок

  • Чем руководствоваться при подготовке статических значений ошибок - писать заранее константы с текстом или хардкодом в месте создания ошибки? Как выделить атомарно-полезный текст вывода ошибки?

  • Насколько объемным должен быть журнал - вывод ошибки от библиотеки и трассировка должны быть по умолчанию, но что можно, и нужно ли, указывать дополнительно?

  • Распределение по уровням журнала - допустим библиотека журнала предоставляет несколько уровней (о ней ниже) записи, для удовлетворения всех нужд - Debug, Error, Warning, Info, Panic, а приложение - много-модульный web-сервис, в котором может происходить много операций одновременно с разными частями. Падения и грубые ошибки попадают в категории Err и Panic. А как распределить информационные ошибки - нужно ли регистрировать каждый чих, для отслеживания движения пользователя по системе? Ошибка авторизации в аккаунте - это Warning или Info?

Для журнала использую библиотеку https://github.com/uber-go/zap - она базируется на создании структурированного вывода ошибки, заранее объявляя поле пользовательского сообщения, поля для ошибки, при необходимости - автоматически добавляет поле с трассировкой. Немаловажным является, что и расширений куча, за счет того, что можно добавить hook-и при возникновении некого события и выполнить некое дополнительное действие. Таким образом у меня выполняется управление файлами журнала (аля logrotate) и уведомление на почту при падениях приложения.

Благодарю за ответ! Раз уж зашла душещипательная для меня тема - а как использовать пароль из хранилища в самом playbook?

Например для модуля shell мне нужно подставить в команду логин/пароль. При использовании просто переменной я воспользуюсь {{ login }} / {{ pass }}. А как подставить пароль из ранее подключенного хранилища?

Можно у вас попросить написать микро-пример playbook, использующего пароль из хранилища в явном виде, например для shell модуля? Очень не хватает немногословных примеров по конкретным задачам

В плане написания playbook и использования ansible, можно сказать, что я совсем зеленый и могу не понимать некоторых концепций. Но поставленные задачи выполняются. Так же для понижения порога использования коллегами, была развернута Web-GUI обертка над ansible (awx).

И вот, я как то столкнулся с проблемой хранения и передачи пароля в playbook, например в виде аргумента какой-нибудь команды или в виде аргумента к модулю.

Путь 1 - записать пароль напрямую в playbook. В нашем случае доступ до ansible ограниченный и доступ имеет только наша группа. Не хорошо, но допустимо. Но пароль может поменяться.

Путь 2 - внести его в виде переменной и передавать в виде чем-то вроде --extra-vars. Думаю лучше, данная концепция отрабатывает сейчас.

Путь 3 - подумал попробовать освоить встроенные средства хранения паролей. В документации описано что-то вроде того, что и в данной статье. Но возник вопрос, который буквально лежит на поверхности -

Eсли использовать vault только для хранения пароля, то нужно вводить пароль для его расшифровки. Зачем мне его вообще выводить в хранилище, если требуется интерактивное вмешательство.

Но если хранить пароль в хранилище и расшифровывать его файлом с ключом в файле (без дополнительных телодвижений "по открытию/закрытию сейфа") - то какая принципиальная разница от того, что я бы хранил его в открытом виде в виде переменной?

Жду результатов)

Установил на виртуалке bitwarden на rust, ограничив доступ по ssh, с длинным паролем и внешним генерируемым ключом https://github.com/mprasil/bitwarden_rs?ysclid=ld9kyljgah12967974

От ботов спасаюсь fail2ban

Оффтоп, но цель разговора та же- встречали ли вы, что Яндекс браузер блокирует верхнюю панель с кнопками в jira? Она просто не отображается, там где закладки, проекты и создание задачи.

При этом на других браузерах всё ок.

У нескольких пользователях появлялось данное поведение, как на linux, так и Windows

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

Вы не сталкивались с проектом IPXE? Открытая прошивка для возможности загрузки практически откуда угодно и чего угодно. Как раз готовый загрузчик для практических нужд. Использование и сборку ранее описывали на Habr

Самое прикольное с макросами:

В Google Chrome, в режиме редактирования, страница с объемными макросами и текстами, число которых далеко переваливает за 2 десятка начинает страшно тормозить. Больше всего отжирает время ядра как раз скрипт редактора этих макросов (сжатый и объединенный с иными функциями в один .js)

При использовании Firefox, нагрузка разномерно распределяется по нескольким ядрам и страница более отзывчивая, но так же могут быть фризы.

Пришлось как то диагностировать проблему от наших разработчиков, на тему "страницы в нашем пространстве при редактировании страшно виснут и тормозят" - а на странице- десяток макросов кода с объемными json, куча тикет-ссылок на jira, ворох спойлеров и т.д.

Уточните пожалуйста, а чем такое решение сомнительно? Не хватит производительности в виду потока трафика или могут возникнуть некие ограничения?

Полагаю подсказка больше ориентирована при заливке серверов:

https://ipxe.org/appnote/buildtargets:

bin-arm32-efi (Limited support, works with snp.efi and snponly.efi, but not with ipxe.efi)

Сохраню на будущее.

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

0) При компиляции не только картинки включаются. Можно встроить скрипт для цепной загрузки, включение дополнительных команд для диагностики и настройки сети.

1,2) У меня проблем с Debian 9, 10, 11 не было проблем при выборе preseed файла. Может быть он был просто недоступен или к нему неверно указывался путь?

3) Разборов и анализов preseed файлов великое множество, мои не выбиваются из этого ряда. Их различия - лишь в способе разбивки диска для Legacy и UEFI режимов соответственно.

А так же - все пакеты для установки из репозитория перенесены в post-install скрипт с повторной загрузкой при ошибке, в виду проблем с загрузкой множества пакетов одновременно - в последние пару месяцев удаленные репозитории случайным образом обрывают подключения при загрузки пакетов, чем ломают установку. В офисной сети это решено заливкой через proxy apt-ng-cache.

Legacy

### Сеть ###
# Полностью отключить настройку сети. Это полезно для компакт-диска
# установки на не сетевые устройства, где есть вопросы по сети,
# предупреждения и длительные тайм-ауты мешают.
d-i netcfg/enable boolean true
d-i netcfg/choose_interface select auto
d-i netcfg netcfg/dhcp_timeout string 60
# Время ожидания (в секундах) подключения к сети:
d-i netcfg/link_wait_timeout string 20
# Неназначенное имя пк - его нужно будет ввести
d-i netcfg netcfg/get_hostname string unassigned-hostname
# назначенный домен - его не нужно будет вводить
d-i netcfg/get_domain string
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Retry network autoconfiguration

### Настройка времени ###
# Временная зона
d-i time/zone string Asia/Krasnoyarsk
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 0.debian.pool.ntp.org
### Репозитории ###
d-i mirror/country string manual
d-i mirror/http/mirror string mirror.yandex.ru
d-i mirror/http/hostname string mirror.yandex.ru
d-i mirror/http/directory string /debian
d-i mirror/suite string bullseye

# Установка прокси. В офисной сети работает apt-ng-cacher адресу
# Если раскомментировать и подставить строчку:
# то установка и настройка внутри системы назначается на него.
# Для .iso образа, нужно оставить закоменченным, ведь образ не сможет найти proxy
d-i mirror/http/proxy string http://HIDE_APT_NG_CACHE_SERVER:9999
### Локализация ###
d-i debian-installer/language string ru
d-i debian-installer/locale string ru_RU.UTF-8
d-i debian-installer/country string RU
d-i	localechooser/preferred-locale select ru_RU.UTF-8
d-i	debian-installer/locale select ru_RU.UTF-8
d-i	localechooser/shortlist select RU
d-i	localechooser/languagelist select ru

### Клавиатура ###
d-i keyboard-configuration/xkb-keymap select ru
d-i keyboard-configuration/layoutcode string ru,us
d-i console-setup/variant select Россия
d-i keyboard-configuration/toggle select Alt+Shift

#Если для сети или другого оборудования требуется несвободная прошивка, вы можете
#настроить установщик так, чтобы он всегда пытался загрузить его без запроса. Или
#измените значение на false, чтобы отключить запросы.
d-i hw-detect/load_firmware boolean true
### Разбитие диска ###
# Кастомная схема разбития
d-i partman-auto/init_automatically_partition select custom
# Использовать первый диск компьютера
#d-i partman-auto/disk string /dev/sda
d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
# Использовать обычный метод использования диска, без lvm и crypto
d-i partman-auto/method string regular
# Если один из дисков, которые будут автоматически разбиты на разделы
# содержит старую конфигурацию LVM, пользователь обычно получает
# предупреждение. Это можно предварительно удалить...
d-i partman-lvm/device_remove_lvm boolean true
# То же самое относится к уже существующему программному RAID-массиву:
d-i partman-md/device_remove_md boolean true
# И то же самое касается подтверждения записи разделов lvm.
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
# Вы можете выбрать один из трех предустановленных рецептов разбиения:
# -atomic: все файлы в одном разделе
# -home: отдельный раздел /home
# -multi: отдельные разделы /home, /var и /tmp
d-i partman-auto/choose_recipe select boot-root
# Это делает partman автоматическим разделением без подтверждения, если
# вы сказали ему, что делать, используя один из методов выше.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
#d-i partman-basicfilesystems/no_swap boolean false
d-i partman-md/confirm boolean true
# Если нет, вы можете поместить весь рецепт в файл предварительной конфигурации за один раз.
# (логическая) строка. В этом примере создается небольшой раздел /boot, подходящий
# swap, а оставшееся место использует для корневого раздела.
d-i partman/default_filesystem string ext4
d-i partman-auto/expert_recipe string                     \
        boot-root ::                                      \
       4096 100 4096 linux-swap                           \
                     $reusemethod{ }                      \
                     method{ swap } format{ }             \
                     .                                    \
     25000 200 30000 ext4                                 \
                     $primary{ } $bootable{ }             \
                     method{ format } format{ }           \
                     use_filesystem{ } filesystem{ ext4 } \
                     mountpoint{ / }                      \
                     .                                    \
    35000 4000 -1 ext4                                    \
                     method{ format } format{ }           \
                     use_filesystem{ } filesystem{ ext4 } \
                     mountpoint{ /home }                  \
                     .
### Настройка root ###
# Пропустить создание учетной записи root (обычная учетная запись пользователя сможет
# используйте судо)
d-i passwd/root-login boolean true
# В качестве альтернативы, чтобы пропустить создание обычной учетной записи пользователя.
d-i passwd/make-user boolean false
# Корневой пароль, либо открытым текстом
#d-i пароль/пароль root пароль r00tme
#d-i passwd/root-пароль-снова пароль r00tme
# или зашифрован с помощью хэша crypt(3).
# printf "password" | mkpasswd -s -m sha-256
d-i passwd/root-password-crypted password HIDE_PASSWORD
### Установка базовой системы ###
# Настройте APT так, чтобы по умолчанию не устанавливались рекомендуемые пакеты.
#Использование этого может привести к неполной системе и должен использоваться только очень
# опытные пользователи.
d-i base-installer/install-recommends boolean true
# Устанавливаемый пакет образа ядра (мета); "none" можно использовать, если не нужно устанавливать ядро.
d-i base-installer/kernel/image select linux-image-5.10.0-10-amd64
# Использовать несвободное ПО?
d-i apt-setup/non-free boolean true
# Использовать программное обеспечение из раздела contrib?
d-i apt-setup/contrib boolean true
# Выберите, какие службы обновления использовать; определить зеркала, которые будут использоваться.
# Значения, показанные ниже, являются обычными значениями по умолчанию.
d-i apt-setup/services-select multiselect security, updates
d-i apt-setup/security_host string security.debian.org
# По умолчанию установщик требует, чтобы репозитории были аутентифицированы
# используя известный ключ gpg. Этот параметр можно использовать для отключения этого
# аутентификация. Предупреждение: небезопасно, не рекомендуется.
d-i debian-installer/allow_unauthenticated boolean false
# Проверить целостность другого установочного образа?
d-i cdrom-checker/nextcd boolean false
 
# Просканировать дополнительный установочный носитель?
apt-cdrom-setup apt-setup/cdrom/set-double boolean false
apt-cdrom-setup apt-setup/cdrom/set-failed boolean false
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
apt-cdrom-setup apt-setup/cdrom/set-next boolean false
 
#Раскомментируйте это, чтобы добавить мультиархивную конфигурацию для i386.
d-i apt-setup/multiarch string i386
### Выбор пакета ###
#standard, desktop, xfce-desktop, ssh-server
tasksel tasksel/first select ssh-server

# Отдельные дополнительные пакеты для установки
# Здесь указываются только те пакеты, которые задают вопросы в процессе установки.
# Прочие пакеты, с перепроверкой подключения, перенесены в postinstall.sh
# Они не указаны все в одном месте из-за проблем с подключением к репозиториям - при
# длительной выгрузке пакетов репозиторий обрывает подключение (error 104)
d-i pkgsel/include string nscd nslcd ttf-mscorefonts-installer

# Если нужен будет wiresherk...
# При установке Wireshark запретить не root захват пакетов
#d-i wireshark-common/install-setuid boolean false

ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true
popularity-contest popularity-contest/participate boolean false

# Настройка nscd и nslcd по умолчанию - в postistall будет изменение на требуемые данные
d-i nslcd/ldap-base string dc=unassigned-domain
d-i nslcd/ldap-uris string ldap://127.0.0.1/
d-i libnss-ldapd/nsswitch  multiselect

# Обновлять ли пакеты после debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select full-upgrade
# Некоторые версии установщика могут сообщать о том, какое программное обеспечение у вас установлено
# установлено и какое программное обеспечение вы используете. По умолчанию не отчитываться,
# но отправка отчетов помогает проекту определить, какое программное обеспечение наиболее
# популярен и включает его на компакт-диски.
popularity-contest popularity-contest/participate boolean false
### Установка загрузчика
#Grub — загрузчик по умолчанию (для x86). Если вы хотите установить lilo
#вместо этого раскомментируйте это:
d-i grub-installer/skip boolean false
#Чтобы также пропустить установку lilo и не устанавливать загрузчик,
# раскомментируйте это тоже:
d-i lilo-installer/skip boolean true
#Это достаточно безопасно, так как grub автоматически устанавливается в MBR.
#если на машине не обнаружена другая операционная система.
d-i grub-installer/only_debian boolean true
#Это заставляет grub-installer устанавливаться в MBR, если он также находит какие-либо другие
#ОС, которая менее безопасна, поскольку может не иметь возможности загрузить эту другую ОС.
d-i grub-installer/with_other_os boolean true
#В частности, из-за потенциальных USB-накопителей местоположение MBR не может быть
#определяется безопасно в целом, поэтому это необходимо указать:
d-i grub-installer/bootdev  string default
# Отключает именование по новому формату, возвращая eth0, eth1
d-i debian-installer/add-kernel-opts string net.ifnames=0 biosdevname=0

### Завершение установки
# Во время установки с последовательной консоли обычные виртуальные консоли
# (VT1-VT6) обычно отключены в /etc/inittab. Раскомментировать следующий
# строка, чтобы предотвратить это.
d-i finish-install/keep-consoles boolean true
#Избегайте этого последнего сообщения о завершении установки.
d-i finish-install/reboot_in_progress note
# Есть 2 способа установки - с помощью PXE и с помощью ISO образа записанного на флешку.
# Раскомментируй требуемый способ и собери пакет
# PXE - Переход в /opt установленной системы, загрузка скрипта пост-установки c ...
d-i preseed/late_command string cd /target/opt/ ; \
\
wget http://HIDE_HTTP_SERVER/bullseye/post-install/postinstall.sh ; \
wget http://HIDE_HTTP_SERVER/bullseye/post-install/postinstall.tar.gz ; \
chroot /target/ bash /opt/postinstall.sh

UEFI

### Сеть ###
# Полностью отключить настройку сети. Это полезно для компакт-диска
# установки на не сетевые устройства, где есть вопросы по сети,
# предупреждения и длительные тайм-ауты мешают.
d-i netcfg/enable boolean true
d-i netcfg/choose_interface select auto
d-i netcfg netcfg/dhcp_timeout string 60
# Время ожидания (в секундах) подключения к сети:
d-i netcfg/link_wait_timeout string 20
# Неназначенное имя пк - его нужно будет ввести
d-i netcfg netcfg/get_hostname string unassigned-hostname
# назначенный домен - его не нужно будет вводить
d-i netcfg/get_domain string
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Retry network autoconfiguration

### Настройка времени ###
# Временная зона
d-i time/zone string Asia/Krasnoyarsk
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 0.debian.pool.ntp.org
### Репозитории ###
d-i mirror/country string manual
d-i mirror/http/mirror string mirror.yandex.ru
d-i mirror/http/hostname string mirror.yandex.ru
d-i mirror/http/directory string /debian
d-i mirror/suite string bullseye

# Установка прокси. В офисной сети работает apt-ng-cacher адресу 
# Если раскомментировать и подставить строчку:
# то установка и настройка внутри системы назначается на него.
# Для .iso образа, нужно оставить закоменченным, ведь образ не сможет найти proxy
d-i mirror/http/proxy string http://HIDE_APT_NG_CACHE_SERVER:9999
### Локализация ###
d-i debian-installer/language string ru
d-i debian-installer/locale string ru_RU.UTF-8
d-i debian-installer/country string RU
d-i	localechooser/preferred-locale select ru_RU.UTF-8
d-i	debian-installer/locale select ru_RU.UTF-8
d-i	localechooser/shortlist select RU
d-i	localechooser/languagelist select ru

### Клавиатура ###
d-i keyboard-configuration/xkb-keymap select ru
d-i keyboard-configuration/layoutcode string ru,us
d-i console-setup/variant select Россия
d-i keyboard-configuration/toggle select Alt+Shift

#Если для сети или другого оборудования требуется несвободная прошивка, вы можете
#настроить установщик так, чтобы он всегда пытался загрузить его без запроса. Или
#измените значение на false, чтобы отключить запросы.
d-i hw-detect/load_firmware boolean true
### Разбитие диска ###
# Кастомная схема разбития
d-i partman-auto/init_automatically_partition select custom
# Использовать первый диск компьютера
#d-i partman-auto/disk string /dev/sda
d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
# Использовать обычный метод использования диска, без lvm и crypto
d-i partman-auto/method string regular
# Если один из дисков, которые будут автоматически разбиты на разделы
# содержит старую конфигурацию LVM, пользователь обычно получает
# предупреждение. Это можно предварительно удалить...
d-i partman-lvm/device_remove_lvm boolean true
# То же самое относится к уже существующему программному RAID-массиву:
d-i partman-md/device_remove_md boolean true
# И то же самое касается подтверждения записи разделов lvm.
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
# Вы можете выбрать один из трех предустановленных рецептов разбиения:
# -atomic: все файлы в одном разделе
# -home: отдельный раздел /home
# -multi: отдельные разделы /home, /var и /tmp
d-i partman-auto/choose_recipe select boot-root
# Это делает partman автоматическим разделением без подтверждения, если
# вы сказали ему, что делать, используя один из методов выше.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
#d-i partman-basicfilesystems/no_swap boolean false
d-i partman-md/confirm boolean true
# Если нет, вы можете поместить весь рецепт в файл предварительной конфигурации за один раз.
# (логическая) строка. В этом примере создается небольшой раздел /boot, подходящий
# swap, а оставшееся место использует для корневого раздела.
d-i partman/default_filesystem string ext4
d-i partman-auto/expert_recipe string                  \
        boot-root ::                                   \
            1 1 1 free                                 \
                  $iflabel{ gpt }                      \
                  $reusemethod{ } method{ biosgrub }   \
                  .                                    \
       128 96 256 fat32                                \
                  $iflabel{ gpt } use_filesystem{ }    \
                  method{ efi } format{ }              \
                  .                                    \
    4096 100 4096 linux-swap                           \
                  $reusemethod{ }                      \
                  method{ swap } format{ }             \
                  .                                    \
 25000 1000 40000 ext4                                 \
                  method{ format } format{ }           \
                  use_filesystem{ } filesystem{ ext4 } \
                  mountpoint{ / }                      \
                  .                                    \
    30000 3000 -1 ext4                                 \
                  method{ format } format{ }           \
                  use_filesystem{ } filesystem{ ext4 } \
                  mountpoint{ /home }                  \
                  .
### Настройка root ###
# Пропустить создание учетной записи root (обычная учетная запись пользователя сможет
# используйте судо)
d-i passwd/root-login boolean true
# В качестве альтернативы, чтобы пропустить создание обычной учетной записи пользователя.
d-i passwd/make-user boolean false
# Корневой пароль, либо открытым текстом
#d-i пароль/пароль root пароль r00tme
#d-i passwd/root-пароль-снова пароль r00tme
# или зашифрован с помощью хэша crypt(3).
# printf "password" | mkpasswd -s -m sha-256
d-i passwd/root-password-crypted password HIDE_PASSWORD
### Установка базовой системы ###
# Настройте APT так, чтобы по умолчанию не устанавливались рекомендуемые пакеты.
#Использование этого может привести к неполной системе и должен использоваться только очень
# опытные пользователи.
d-i base-installer/install-recommends boolean true
# Устанавливаемый пакет образа ядра (мета); "none" можно использовать, если не нужно устанавливать ядро.
d-i base-installer/kernel/image select linux-image-5.10.0-10-amd64
# Использовать несвободное ПО?
d-i apt-setup/non-free boolean true
# Использовать программное обеспечение из раздела contrib?
d-i apt-setup/contrib boolean true
# Выберите, какие службы обновления использовать; определить зеркала, которые будут использоваться.
# Значения, показанные ниже, являются обычными значениями по умолчанию.
d-i apt-setup/services-select multiselect security, updates
d-i apt-setup/security_host string security.debian.org
# По умолчанию установщик требует, чтобы репозитории были аутентифицированы
# используя известный ключ gpg. Этот параметр можно использовать для отключения этого
# аутентификация. Предупреждение: небезопасно, не рекомендуется.
d-i debian-installer/allow_unauthenticated boolean false
# Проверить целостность другого установочного образа?
d-i cdrom-checker/nextcd boolean false
 
# Просканировать дополнительный установочный носитель?
apt-cdrom-setup apt-setup/cdrom/set-double boolean false
apt-cdrom-setup apt-setup/cdrom/set-failed boolean false
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
apt-cdrom-setup apt-setup/cdrom/set-next boolean false
 
#Раскомментируйте это, чтобы добавить мультиархивную конфигурацию для i386.
d-i apt-setup/multiarch string i386
### Выбор пакета ###
#standard, desktop, xfce-desktop, ssh-server
tasksel tasksel/first select ssh-server

# Отдельные дополнительные пакеты для установки
# Здесь указываются только те пакеты, которые задают вопросы в процессе установки.
# Прочие пакеты, с перепроверкой подключения, перенесены в postinstall.sh
# Они не указаны все в одном месте из-за проблем с подключением к репозиториям - при
# длительной выгрузке пакетов репозиторий обрывает подключение (error 104)
d-i pkgsel/include string nscd nslcd ttf-mscorefonts-installer

# Если нужен будет wiresherk...
# При установке Wireshark запретить не root захват пакетов
#d-i wireshark-common/install-setuid boolean false

ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true
popularity-contest popularity-contest/participate boolean false

# Настройка nscd и nslcd по умолчанию - в postistall будет изменение на требуемые данные
d-i nslcd/ldap-base string dc=unassigned-domain
d-i nslcd/ldap-uris string ldap://127.0.0.1/
d-i libnss-ldapd/nsswitch  multiselect

# Обновлять ли пакеты после debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select full-upgrade
# Некоторые версии установщика могут сообщать о том, какое программное обеспечение у вас установлено
# установлено и какое программное обеспечение вы используете. По умолчанию не отчитываться,
# но отправка отчетов помогает проекту определить, какое программное обеспечение наиболее
# популярен и включает его на компакт-диски.
popularity-contest popularity-contest/participate boolean false
### Установка загрузчика
#Grub — загрузчик по умолчанию (для x86). Если вы хотите установить lilo
#вместо этого раскомментируйте это:
d-i grub-installer/skip boolean false
#Чтобы также пропустить установку lilo и не устанавливать загрузчик,
# раскомментируйте это тоже:
d-i lilo-installer/skip boolean true
#Это достаточно безопасно, так как grub автоматически устанавливается в MBR.
#если на машине не обнаружена другая операционная система.
d-i grub-installer/only_debian boolean true
#Это заставляет grub-installer устанавливаться в MBR, если он также находит какие-либо другие
#ОС, которая менее безопасна, поскольку может не иметь возможности загрузить эту другую ОС.
d-i grub-installer/with_other_os boolean true
#В частности, из-за потенциальных USB-накопителей местоположение MBR не может быть
#определяется безопасно в целом, поэтому это необходимо указать:
d-i grub-installer/bootdev  string default
# Отключает именование по новому формату, возвращая eth0, eth1
d-i debian-installer/add-kernel-opts string net.ifnames=0 biosdevname=0

### Завершение установки
# Во время установки с последовательной консоли обычные виртуальные консоли
# (VT1-VT6) обычно отключены в /etc/inittab. Раскомментировать следующий
# строка, чтобы предотвратить это.
d-i finish-install/keep-consoles boolean true
#Избегайте этого последнего сообщения о завершении установки.
d-i finish-install/reboot_in_progress note
# Есть 2 способа установки - с помощью PXE и с помощью ISO образа записанного на флешку.
# Раскомментируй требуемый способ и собери пакет
# PXE - Переход в /opt установленной системы, загрузка скрипта пост-установки c ...
d-i preseed/late_command string cd /target/opt/ ; \
\
wget http://HIDE_HTTP_SERVER/bullseye/post-install/postinstall.sh ; \
wget http://HIDE_HTTP_SERVER/bullseye/post-install/postinstall.tar.gz ; \
chroot /target/ bash /opt/postinstall.sh

Честно посмотрел различные статьи по настройке cobbler и думаю, что настройка его или настройка "нативного" окружения равны по трудозатратам, но в случае cobbler, при возникновении проблем, придется обслуживать "обертку" над схожими сервисами, что может усложнить диагностику.

Ставилась задача минимализировать настройки, скрипты и конфигурации, а так же иметь низкий порог для понимания, для будущих поколений.

Привет@xTuMoHx

В отпуске появилось время и потому исполнил запрос. Ожидаю мнения)

У меня в vscode стоит плагин переводящий комментарии (хотя на самом деле переводит любой выделенный текст) при наведении мышки. Так что мне без разницы на каком языке исходный код и комментари к нему

Зачем использовать тонну разных программ по вырезанию всего и вся, если есть встроенная утилита конфигурирования dism? При желании, есть графическая оболочка над ней dism++ https://github.com/Chuyu-Team/Dism-Multi-language

И удаляет и отключает, всё что может понадобиться. Остальное должно настраиваться политиками и ключами в реестре вручную, для понимания происходящих процессов. Да, в linux это было бы проще и быстрее, а в windows кучи всякого говнища, но лучше разбирать всё в ручном режиме, а для массовой настройки -писать свои скрипты

счет sccm и ipxe не подскажу, у нас работает ipxe в котором подготовлены образы для linux и windows. Т.е. разливаем всё что угодно.

Могу написать подробный пост по подготовке сервера, образов Linux и windows , и тому, как оно работает.

Возможно оно будет немного дублировать другие статьи с хабра, но связка работает успешно с минимумом файлов настроек

@xTuMoHx

Information

Rating
3,693-rd
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

System Administration, DevOps
From 2,000 $
Linux administration
Windows administration
Golang
Bash
PowerShell
System administration
Technical support
Active Directory