Astra linux cloud init

Мы развернули платформу Deckhouse на узле с Astra Linux. Рассказываем, как (и зачем)

Astra Linux — российская операционная система специального назначения, актуальная версия которой основана на Debian 10.0 (Buster). В частности, эту ОС используют органы государственной власти, госслужбы и госкорпорации. Astra Linux включена в единый реестр российского ПО, сертифицирована ФСТЭК, а версия Astra Linux Special Edition еще и отвечает требованиям по защите любой информации ограниченного доступа: персональных данных, конфиденциальной информации, а также гостайны до уровня особой важности.

Наши заказчики все чаще спрашивают, подходит ли платформа Deckhouse для импортозамещения. Это побудило нас связаться с командой Astra Linux, чтобы обсудить сотрудничество.

Сначала нужно было понять, какие ограничения могут возникнуть при запуске Deckhouse на ВМ с Astra Linux. Мы взяли достаточно старую и широко распространенную версию Astra Linux Common Edition 2.12.43, которая основана еще на Debian 9.

Запускаем ВМ на Astra Linux

Для внутренних экспериментов в качестве облака мы используем OpenStack. У Astra Linux есть специальный образ — cloud-init orel-vanilla-2.12.43-cloud-mg6.0.0, — который доступен в формате qcow. Мы залили его в OpenStack и все заработало:

openstack image create --public --disk-format qcow2 --file ~/Downloads/orel-vanilla-2.12.43-cloud-mg6.0.0.qcow2 orel-vanilla-2.12.43-cloud

Далее решили добавить ВМ на Astra Linux в существующий кластер как worker-узел.

Добавляем ВМ в кластер

Сразу скажу, что Orel взлетел, однако для этого пришлось решить три проблемы.

Отсутствие поддержки Debian в Deckhouse. Astra Linux базируется на Debian, но Deckhouse пока официально работает только с Ubuntu и CentOS. Мы сразу вспомнили соответствующий issue — и решили обязательно добавить поддержку Debian в рамках будущей интеграции с Astra Linux.

На сей раз мы добавили ВМ как статичный узел и запустили в расчете на то, что всё заработает на Ubuntu (в основе которой — Debian). И всё заработало… хотя пришлось немного попинать по колесам и постучать молотком — об этом ниже.

Читайте также:  Посмотреть модель процессора linux

Отсутствие пакета conntrack. У Kubernetes есть инструкция, как поставить kubelet на Debian-дистрибутив. Но в зависимостях требуется пакет conntrack, которого не было в дистрибутиве Astra Linux. Пришлось устанавливать kubelet как бинарник (см. раздел инструкции Without a package manager).

Старая версия nginx. Для проксирования запросов с узлов к kube-api-server мы используем nginx. В репозитории пакетов Astra Linux на момент эксперимента был только nginx версии 1.14, в котором нет модуля ngx_stream_module. Поэтому пришлось поправить автоматически сгенерированный конфиг для proxy и подключить модуль динамически через load_module /usr/lib/nginx/modules/ngx_stream_module.so .

При этом в новом релизе Astra Linux Special Edition все необходимые пакеты и компоненты уже есть — и conntrack, и новый nginx.

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

Вывод

Благодаря эксперименту мы убедились, что для полноценной поддержки даже старых версий Astra Linux никаких серьезных ограничений у Deckhouse нет. Потребуется небольшая доработка только со стороны платформы.

Вместе с коллегами из ГК Astra Linux мы продолжим работать над совместимостью Deckhouse и ОС.

P.S.

Читайте также в нашем блоге:

Источник

Как создать cloud-init шаблон ОС Astra Linux в Proxmox

Вы когда-нибудь задумывались над тем, как вы создаете виртуальные машины?
Классический и самый банальный способ создания виртуальной машины (VM):

  1. Создать VM в гипервизоре
  2. Сконфигурировать параметры VM
  3. Примонтировать ISO-образ ОС, которую нужно установить на VM
  4. Запустить VM и установить ОС с ISO-образа
  5. Для упрощения будущей жизни, можно создать из данной VM шаблон (template)

Как правило, это долгий и скучный процесс, богатый ручной работой. Конечно, можно использовать Packer, но время установки это сократит лишь чуть-чуть.
При таком подходе, создание кластера из нескольких одинаковых VM может затянуться на долгое время, только из-за установки хостовой ОС.

Сейчас нас окружает мир облачных технологий, когда вы покупаете VM у одного из клауд-провайдеров, где все происходит быстро:

  1. Ввели имя пользователя, которого необходимо создать при инициализации VM
  2. Пароль или публичный ключ от создаваемого пользователя
  3. Нажали на кнопку «Создать»
  4. Вуаля! VM готова к работе! Без какой-либо установки и ручной конфигурации пользователя!

Вот для этого и были придуманы cloud-init образы. Сloud-init это программа для инициализации виртуальных машин, обычно применяющаяся в облачных платформах. Но использовать cloud-init можно и локально, например в Proxmox, который успешно поддерживает данную технологию.
Все что нам надо — cloud-init образ нужной ОС. Данная статья применима для любого cloud-init образа. Я покажу, как это делать на примере Astra Linux 1.7

Читайте также:  Ft232r usb uart драйвер linux

План работы

  1. Качаем cloud образ Astra Linux 1.7 (можно создать самому, с использованием cloud-init, но это тема другой статьи)
  2. Создаем VM в Proxmox используя скачанный образ
  3. Конвертируем собранную VM в шаблон (template)
  4. Клонируем из шаблона полноценную VM
  5. Инициализируем VM через cloud-init

Качаем cloud образ Astra Linux 1.7

Интересующие нас образы я брал отсюда.

Заходим по ssh на наш Proxmox и качаем нужный нам образ, в моем случае — alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2

wget alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2

Создаем VM в Proxmox используя скачанный образ

qm create 700 --name "alse-vanilla-1-7-3-cloudinit-max-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 qm importdisk 700 alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2 local-lvm qm set 700 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-700-disk-0 qm set 700 --boot c --bootdisk scsi0 qm set 700 --ide2 local-lvm:cloudinit qm set 700 --serial0 socket --vga serial0 qm set 700 --agent enabled=1

Знакомых с синтаксисом управления Proxmox данные строчки удивить не должны.
Для начинающих поясню. В примере создается виртуальная машина с VMID=700 (можно указать любой, это просто идентификатор вашей VM), 2Gb RAM, 2 ядрами CPU, соответствующим сетевым интерфейсом.
Затем мы импортируем скачанный нами cloud образ Астры в локальное хранилище Proxmox и подключаем как диск к созданной VM. После этого подключаем cloud-init хранилище, для последующей инициализации.

Вы можете использовать любые нужные вам настройки или настраивать все в GUI. Все что надо — подключить диск со скачанным образом и cloud-init хранилище.

Конвертируем собранную VM в шаблон (template)

После всех подготовительных мероприятий создаем шаблон нашей ОС.

Клонируем из шаблона полноценную VM

Шаблоны нужны нам для клонирования VM, поэтому нажимаем ПКМ на созданном темплейте и выставляем мод «Full Clone».
Назвал я свою VM astra-test , вы можете как угодно обозвать.

Нажимаем «Clone» и дожидаемся окончания клонирования.

Инициализируем VM через cloud-init

После завершения клонирования VM, можно поправить настройки «железа» и увеличить размер диска.

Расширяем диск

Для этого в разделе Hardware нажимаем на Hard Disk -> Disk Action -> Resize.

Указываем нужный вам размер диска и нажимаем «Resize disk». Самое главное, что система сама займет и разметит нужное пространство при загрузке.

Читайте также:  Менеджер пакетов linux red hat

Теперь самое главное — переходим в раздел Cloud-init

Настраиваем cloud-init

В соответствующих полях задаем нужные нам параметры, которые мы хотим создать в системе во время запуска:

  • логин пользователя
  • пароль пользователя
  • настройки DNS
  • открытый SSH ключ пользователя
  • настройка сети (можно оставить DHCP, но я укажу IP-вручную)

Далее жмем «Regenerate Image».

Подготовительные мероприятия завершены, можно запускать VM для проверки!

Запускаем и проверяем VM

После запуска VM astra-test в статистике мы видим 2 IP-адреса: один получен от моего DHCP-сервера, второй мы задали сами.
Такое бывает, можно отключить DHCP уже в самой ОС.

Пробуем подключиться по SSH к нашей VM, используя адрес и креды, которые мы указывали при настройке cloud-init в Proxmox

Готово, даже hostname настроился сам, по имени виртуальной машины в Proxmox. И да, если переименовать VM, hostname изменится за вас сам.
Теперь можно натравливать свой Terraform с Ansible на данный шаблон и создавать кластеры из большого количества виртуальных машин за считанные минуты!

Надеюсь, что данная статья будет кому-то полезна, для упрощения и экономии времени на создание стендов, кластеров и т.д.

Источник

cloud-init

cloud-init это программа для инициализации виртуальных машин, обычно применяющаяся в облачных платформах. Но использовать cloud-init можно и локально. Примеры конфигурационных файлов — https://cloudinit.readthedocs.io/en/latest/topics/examples.html.

Использование с qemu

Для начала создадим каталог, в котором будем работать, и зайдем в него.

$ mkdir cloud-init-example $ cd cloud-init-example

Затем потребуется образ виртуальной машины с поддержкой cloud-init. Например, можно взять cloud образ ALT.

Данные для cloud-init описываются в конфигурационном файле в формате yaml. Пример минимальной конфигурации, задающей только ключ для пользователя root. Вместо нужно подставить ваш публичный ключ.

$ cat user-data.yaml #cloud-config users: — name: root ssh_authorized_keys: —

Для преобразования конфигурационного файла в метаданные потребуется программа cloud-localds из пакета cloud-utils.

# apt-get install cloud-utils $ cloud-localds my-seed.img user-data.yaml

Для использования kvm пользователь должен быть в группе vmusers .

Осталось только запустить виртуальную машину.

$ qemu -machine accel=kvm -m 2G -cpu host -smp 2 -drive file=alt-sisyphus-cloud-x86_64.qcow2,if=virtio -drive file=my-seed.img,if=virtio,format=raw,force-share=on,read-only=on -daemonize -display none -nic user,hostfwd=tcp::22222-:22

И зайти по ssh. Может потребоваться подождать некоторое время, пока машина будет загружена и инициализирована.

$ ssh root@localhost -p 22222

Источник

Оцените статью
Adblock
detector