Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018)

Материал из 0x1.tv

Докладчик

В данном докладе представлены наши наработки по автоматическому развёртыванию боевых и тестовых виртуальных машин средствами Ansible на Proxmox VE Сервере (на базе платформы Альт Сервер 8).

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

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Презентация

Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018).pdf

Thesis

В решениях на базе дистрибутивов ALT в качестве промышленной системы виртуализации используется Proxmox Virtual Environment (PVE-сервер). Программный интерфейс для управления виртуальными окружениями в PVE предусмотрен, но средства управления, кроме как web-интерфейс, нужно устанавливать отдельно. В связи с этим возникает проблема автоматизации развёртывания.

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

В рамках подготовки средств автоматического управления для PVE-сервера, в проекте Infra, задача была разделена:

  • автоматизация подготовки рабочих образов;
  • автоматизация процесса интеграционного тестирования и развёртывания рабочей инфраструктуры.

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

Для автоматической установки приложений и запуска необходимого набора виртуальных узлов были рассмотрены следующие варианты:

  • Vagrant, как инструмент разработчика через плагин-провайдер к PVE-серверу;
  • Terraform, как инструмент для развёртывания облачных решений, для которого существуют реализации провайдера proxmox, написанные на Go;
  • Ansible — решение, которое может быть использовано как для запуска сценариев (playbooks) через ssh-протокол, так и для управления виртуальными узлами на Proxmox VE через модуль proxmoxer.

В итоге, наиболее стабильным, надёжным, универсальным и подготовленным для работы с PVE-сервером показал себя последний вариант.

Логически конфигурация проекта состоит из нескольких файлов-описаний на языке yaml:

  • для приложений в виде последовательности Ansible сценариев;
  • для окружений в виде набора настроек виртуальных узлов (публичные ssh-ключи разработчиков, URL-репозиториев источников, настройки доступа в виртуальное окружение — на PVE-сервер);
  • для описания стека сетевых настроек, количества и типа виртуальных узлов.

Приложения

Приложениями являются конечные сервисы с которыми тем или иным образом общается конечный пользователь стека виртуальных узлов (объектов стека). Для примера: samba domain controller, ntp-server, dhcp-server, tftp-server, bind, NFS-share, redmine, и т.д.

Каждое приложение жёстко привязано к объекту(ам) стека и разворачивается на них. Если же идеология приложения подразумевает функции Высокой доступности и/или Fault Tolerance, то оно может быть развёрнуто на нескольких объектах стека.

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

Окружение

Определения в конфигурации окружения описывают общие сущности характерные для всех объектов. Такими могут являться: список пользователей с их ssh-ключами и pgp-ключами, источники apt-репозиториев, учётные данные для доступа к системам виртуализации и/или облакам, и т.д.

Стек

Стеком является непротиворечивое с точки зрения конфигурации множество объектов исполняющих приложения развёртываемых в рамках конкретного окружения. Ими могут быть: виртуальные машины, железные сервера, экземпляры в облачных сервисах, и т.д. Основным и единственным строгим требованием к объекту стека является наличие доступа по ssh и беспарольный sudo, либо доступ по ssh под пользователем root.

Конфигурация стека может включать в себя: имя домена, список DNS-серверов, список виртуальных машин с параметрами, конфигурация сети и другие общие для всех приложений параметры.

Инфраструктура

Набор настроек в проекте Infra разработан так, чтобы детали инфраструктуры были отделены от основных Ansible-сценариев. Рабочее окружение для развёртывания стеков состоит из трёх частей:

  1. набор дополнительных Ansible-сценариев и ролей;
  2. конфигурация окружений и стеков;
  3. база с паролями от шифрованных параметров окружений и стеков.

Конкретные примеры файлов описаний можно найти в документации проекта.

Развёртывание инфраструктуры средствами Ansible на PVE сервере (OSSDEVCONF-2018)!.jpg

Примечания и ссылки

Plays:202   Comments:0