Как управлять распределенной инфраструктурой из единой точки с помощью ManageIQ. Часть 2
В статье рассказали, как работать с ManageIQ на примерах: создали диалог, сервис и бандл типа PaaS.
5К открытий12К показов
В предыдущей статье мы обсудили, что такое ManageIQ и какие функции можно выполнять с его помощью. А также посмотрели на процесс установки и интерфейс.
Сегодня расскажем, как можно управлять развернутой виртуальной машиной и как создать диалог, сервис и бандл типа PaaS. В качестве примера будем использовать настройку PostgreSQL.
Подробнее про работу с ManageIQ советуем посмотреть в записи. Ниже прилагаем скриншоты из трансляции:
Александр Кузьмин
Cтарший инженер КРОК
Создаем диалог
Итак, чтобы вы, администратор системы или любой человек с доступом к ManageIQ могли создать сервис, нужен диалог. То есть форма, которую видит пользователь, когда нажимает кнопку «заказать». Как ее сделать?
- Переходим во вкладку Automation —> Embadded automate —> Customization. Здесь есть два окна. Первое — Provisioning Dialogs — примеры диалогов, созданные разработчиками ManageIQ (они будут доступны, после того как вы развернете платформу). И Service Dialogs — которое нам и нужно.
- Переходим во вкладку Service Dialogs. Через Configuration выбираем поле «Добавить диалог». Попадаем во вкладку «Создание диалога».
- Указываем имя диалога.
- В Dialog Descriptions указываем описание — по желанию.
- В появившейся внизу форме настраиваем поля. Это могут быть текстовые поля, чек-боксы, Dropdown — выкидное меню — и так далее. И типы, и количество полей зависят только от ваших потребностей.
Поля диалога также можно настраивать. Покажу на примере. Нажимаем на карандаш поля Text Box и переходим в окно настройки.
Здесь нужно заполнить параметры. В Field Information:
- Label — название, которое будет отображаться слева от поля.
- Name — имя, по которому ManageIQ поймет, значение какой переменной переопределяется в сервисе. Значение можно посмотреть в Provisioning Dialogs — там есть примеры всех переменных для тех или иных диалогов.
Если указать переменную неверно, то значение не перезапишется, и вы получите либо ошибку, либо примерно то же значение, что было указано при создании сервиса в виде шаблона.
В Options:
- Default Value показывает дефолтное значение. Оно всегда будет всплывать при обращении к диалогу. И к сервису, который будет использовать этот диалог.
- Protected скрывает точками параметры, которые вводит пользователь. Хорошая опция, когда нужно переопределить какой-то пароль.
- Required делает поле обязательным. То есть, если его не заполнить, кнопка «заказать» не будет доступна.
- Read only задает полю тип «Только чтение».
- Visiable отвечает за то, будет ли пользователь видеть поле или нет.
- Value type определяет, какое значение будет передаваться: string или integer.
- Validation задает ограничения: например, имя виртуальной машины не должно быть больше определенного количества символов, или должно обязательно содержать буквы, цифры и так далее.
Во вкладке Advanced есть только кнопка Reconfigurable.
Параметры полей отличаются. Например, в поле Dropdown,, в Options, есть Entries — значения двух типов: в левом поле указывается значение, которое пользователь должен видеть, в правом — значение, которое ManageIQ на самом деле будет передавать провайдеру.
Создаем сервис
Переходим к созданию сервиса:
- Открываем Service Catalogs —> Catalog Item —> Configuration.
- Выбираем папку, в которой будем создавать каталог, через Configuration добавляем в нее New Catalog Item или New Catalog Bundle.
- Переходим в шаблонизатор, вводим имя сервиса и описание (его по желанию).
- Нажимаем (или нет — по желанию) Display in Catalog. Эта галочка отвечает за то, будет сервис отображаться в каталоге заказов.
- В Catalog выбираем, где будет размещен сервис.
- В Dialog выбираем, какой диалог будет использоваться при заказе сервиса.
Остальные значения в вкладке Basic Info можно не менять.
- Во вкладке Details можем добавить более длинное описание сервиса, которое будет доступно пользователю.
Вкладка Request Info — главная. Она отвечает за то, какие параметры будут использоваться при запуске сервиса.
В Catalog:
- Загружаем шаблоны в zVirt и выбираем нужный. Сами шаблоны виртуальных машин в ManageIQ не загружаются и не создаются — система подгружает информацию об имеющихся образах, виртуальных машинах, шаблонах и других сущностях из целевого провайдера.
- Выбираем Provisioning Type.
- Указываем, какое количество виртуальных машин будет разворачиваться в данном сервисе по умолчанию.
В Environment:
- Ставим (или нет — по желанию) галочку Automate. Она определяет, как будет выбираться целевая инфраструктура: автоматически или вручную.
- Если выбрали «вручную», то указываем в каком дата-центре, на каком кластере zVirt и на каком хосте создать сервис, и какую data store использовать.
- В Hardware указываем, какое значение будет использоваться по умолчанию в сервисе.
Если бы мы создали диалог с галочкой Check Box и не указывали VM name, Hostname, количество ядер, объем памяти и прочее — и создали бы сервис, который ссылается на этот диалог, система бы тоже заработала. Но параметры виртуальной машины взялись бы именно из этого самого сервиса.
- В Network указываем, какую сеть будем использовать.
- В Customization указываем дополнительные параметры, например, пароль от root, тип IP-адреса, который используют DHCP, статику, DNS.
- В Schedule указываем, когда запустить виртуальную машину и какие действия совершить, когда она будет создана.
Как управлять виртуальной машиной
Когда мы разворачиваем машину, во вкладке My Services появляется заказанный сервис. В ней же можно посмотреть информацию о самом сервисе и виртуальной машине, например, имя и IP-адрес.
Чтобы изменить конфигурацию текущей виртуальной машины, нам нужно:
- выбрать ее;
- выбрать Configuration;
- выбрать параметр Reconfigure this VM.
Для некоторых провайдеров: openstack, zVirt, vSphere — есть доступ к консоли прямо из ManageIQ.
Здесь можно добавить память, изменить процессор, изменить объем диска или добавить новый диск и параметры сети.
Нажимаем Submit, видим, что появился запрос на изменение параметров. Дальше получаем сообщение о том, что машину нужно перезагрузить — иначе новые параметры не применятся. Проваливаемся в виртуальную машину и через power restart guest отправляем ее на перезагрузку.
В это время ManageIQ «идет» в zVirt, и «говорит», что эту виртуальную машину необходимо перезапустить. Виртуальная машина, соответственно, перезагружается, и получает новые параметры.
Так же можно управлять виртуальными машинами, которые развернуты в других поддерживаемых провайдерах: vSphere, openstack и так далее.
Создаем бандл
ManageIQ можно использовать его как портал самообслуживания — чтобы пользователи сами запускали скрипты, принимали плейбуки, настраивали ПО, получали сервисы типа PaaS и так далее. Покажу, как это работает, на примере бандла, связанного с PostgreSQL.
Создаем диалог для нашего бандла:
- Идем во вкладку Automation —> Embadded automate —> Customization и создаем диалог.
- В VM Params задаем VM name, Hostname, количество ядер и объем памяти.
- В Config for PSQL указываем, виртуальной машине необходимо применить плейбук по установке PostgreSQL, какая версия PostgreSQL должна передаваться пользователям через переменную. А также добавляем привычные DB Name, user и password.
Чтобы передать имя переменной для Ansible необходимо перед именем переменной, которая используется в плейбуке, поставить слово param_.
Создаем бандл сервисов:
- Переходим в Service Catalog;
- Создаем сервис, который будет запускать плейбук;
- Переходим в Configuration —> New Catalog Bundle;
- Указываем имя и каталог бандла;
- В ресурсах указываем, какие из уже имеющихся сервисов в него добавить. В данном случае мы берем сервис CentOS, который разворачивает виртуальную машину, и следом — сервис, который запускает плейбук в AWX.
- По желанию подгружаем логотип сервиса, который будет виден пользователю в каталоге.
Итак, нас есть сервис, который разворачивает виртуальную машину, сервис, который применяет плейбук по установке и настройке PostgreSQL, и бандл, который объединяет их в себе. Пришло время это запустить.
- Переходим в сервис Service Catalog, нажимаем Order.
- Указываем VM name, Hostname, количество ядер и объем памяти.
- В Limit указываем имя или IP-адрес виртуальной машины, на которой необходимо применить плейбук.
- Выбираем версию — пусть останется двенадцатая.
- В DB name, DB User и DB User Password указываем имя баз данных, которые хотим создать, пользователя, которого хотим создать, и пароль для этого пользователя.
- Идем в zVirt и видим, что начала создаваться виртуальная машина.
- Попадем в AWX, где ManageIQ запустит плейбук в AWX.
Бандл отработал, и мы можем к нему подключиться:
- открываем сервис и видим нашу виртуальную машину;
- в PgAdmin вводим ее адрес и DB Name, имя пользователя и пароль.
Та-дам! Мы подключились к PostgreSQL, который был развернут с помощью сервиса, заказанного через ManageIQ.
Небольшое уточнение по настройке AWX с zVirt и с ManageIQ
Я создал шаблон ManageIQ PSQL,который дергает этот плейбук. Указал имя этого шаблона и какой Inventory использовать, и выбрал плейбук из репозитория в GitLab. Подгрузил sash-ключ, поставил галочку «необходимо переопределять лимит, когда будет запускаться джоб из этого темплейта». Добавил галочку «необходима эскалация привилегий».
При этом при заказе бандла PostgreSQL через ManageIQ, мы указали, что плейбук необходимо применить конкретную. Но мы не знаем, как AWX сможет отрезолвить это имя, и как оно попадет в Inventory. Чтобы не потеряться, нужно сделать следующее:
- Создать в Inventory miq-zvirt Inventory.
- Указать что этот Inventory должен генерироваться AWX динамически, на основании Source, который называется zVirt.
- Указать, что — это Red Hat Virtualization, то есть zVirt.
- Передать Credentials, то есть логин и пароль для доступа к zVirt.
- Указать, что Inventory необходимо обновлять до того, как запустится джоб из шаблона, который использует этот самый Inventory.
Виртуальная машина, на которой применяется плейбук, уже создана в zVirt создана, поэтому она попадет в хосты этого инвентаря. И в джобах AWX можно посмотреть, что сначала произошла синхронизация Inventory, и после запустился плейбук с установкой PostgreSQL.
Что в итоге
Таким образом можно создавать различного рода сервисы и использовать ManageIQ как портал самообслуживания. И тем самым предоставить пользователям заказывать готовые сервисы с установкой и настройкой ПО, например, в связке с теми же самыми Ansible-плейбуками.
5К открытий12К показов