Skip to content

laboratory50/astra_preseed_install

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Автоматическая установка ОС «Astra Linux Special Edition»

Этот репозиторий содержит сценарии Ansible для создания сервера автоматической установки по сети ОС Astra Linux Special Edition на целевые машины.

Авторы: Лаборатория 50 team@lab50.net.

Лицензия

Все материалы распространяются на условиях стандартной общественной лицензии GNU (GPL) версии 3.

Полный текст лицензии находится в файле LICENSE.

Используются следующие пакеты:

  • Ansible версии 1.7+;
  • Dnsmasq — DHCP и TFTP сервер;
  • LigHTTPd/Apache 2/vsftpd — сервер раздачи репозитория/preseed файлов.

Возможности

Проект в первую очередь предназначен для использования сисадминами и внедренцами, работающими с Astra Linux Special Edition. Сценарии позволяют создать полностью автономный сервер для сетевой установки ОС. Например, на ноутбуке.

Важные функции:

  • Раздача репозитория операционной системы.
  • Упрощенное создание сценариев установки (pressed-файлов) оптимизированных для Астры.
  • Поддержка программного RAID и LVM.
  • Привязка IP-адресов к MAC-адресам.
  • Использование разных сценариев установки для разных узлов (привязка к MAC-адресам).
  • Поддержка UEFI (необходим пакет syslinux-efi).

Подготовка

  1. Установите пакет ansible: apt-get -y install ansible.
  2. Создайте файл stage (на базе примера stage.sample). Пример рассчитан на установку на локальный узел.
  3. Создайте сценарий установки на базе примера site.yml: cp site.yml my.yml. Поставляемый файл рассчитан на установку на локальном узле пользователем с возможностью использования sudo. Если вы работаете под root-ом, значение sudo установите в false.
  4. Создайте свои сценарии установки ОС (preseed) в отдельном файле, например preseeds.yml.
  5. Создайте файл конфигурации параметров инсталляции и целевых машин в каталоге vars/ на базе примера vars/example.yml.

Установка

Установка производится с помощью Ansible:

ansible-playbook -i stage my.yml --extra-vars="@vars/my.yml"

Сценарий установки ОС (preseed-файл)

Preseed-файл задает параметры автоматической установки Debian-подобных систем. В проекте есть роль preseed которая облегчает создание этого файла путем автоматической генерации на основании шаблона. Вы можете создавать любое количество preseed-файлов.

Пример использования нескольких сценариев (в my.yml):

…
  vars_files:
    - vars/srv-cfg1.yml

…
  roles:
    - { role: preseed, preseed: "{{ server }}" }
    - { role: preseed, preseed: "{{ client }}" }
…

В примере будет создаваться два preseed-файла, определяемых переменными server и client в файле preseeds.yml:

server:
    name: server
    …

client:
    name: client
    …

В роли preseed уже есть две стандартные роли: standard и dmraid. Некоторые ограничения на настройку ролей:

  1. Два варианта разбиения диска: LVM и программный RAID (RAID + LVM).

Пример сценария

Замечания для версии Астры 1.3

Данная конфигурация настроена на установку по сети ОС Astra Linux Special Edition. Для этого доработан образ initrd.gz инсталлятора (по отношению к netinst c оригинального диска с ОС Astra Linux 1.3):

  • изменен usr/share/localechooser/languagelist поддержка русскому языку изменена с 2 на 1. было ru;2;RU;ru_RU.UTF-8;;console-setup стало ru;1;RU;ru_RU.UTF-8;;console-setup
  • добавлен модуль dca.ko в lib/modules/3.2.0-27-generic/kernel/drivers/dca/
  • добавлены модули dm-log.ko dm-mirror.ko dm-mod.ko dm-region-hash.ko в lib/modules/3.2.0-27-generic/kernel/drivers/md/
  • добавлены ключи lab50-archive-keyring.gpg от собственного репа (он служит зеркалом при установке) в usr/share/keyrings

Как это все сделать самостоятельно.

  1. распаковка и упаковка initrd.gz:

    #!/bin/sh
    if [ -d $1 ]; then
        rm -rf $1
    fi
    if [ -f initrd ]; then
        rm initrd
    fi
    if ! [ -f initrd.gz ]; then
        echo "initrd.gz not found"
        exit 1
    fi
    gunzip initrd.gz
    mkdir $1
    cd $1
    cpio -id < ../initrd
    
  2. сборка initrd.gz:

    #!/bin/sh
    if ! [ -d $1 ]; then
        echo "folder not found"
        exit 1
    fi
    if [ -f initrd ]; then
        rm initrd
    fi
    if [ -f initrd.gz ]; then
        rm initrd.gz
    fi
    cd $1
    find . | cpio --create --format='newc' > ../initrd
    cd ..
    gzip initrd
    

В качестве зеркала используется собственный репозиторий пакетов, в котором добавлен пакет grub-installer_1.78ubuntu8_amd64.udeb, поскольку grub-installer_1.70astra.se4_amd64.udeb содержит ошибки при установке grub на soft&fake raid.

About

rep for deploy infrastructure for preseed install of astra linux se

Resources

License

Stars

Watchers

Forks

Packages

No packages published