Создание простого бандла
Создание бандла для ADCM заключается в подготовке скриптов Ansible (Ansible playbooks) и подготовке конфигурационного файла в формате YAML (на этой странице мы также будем называть его конфиг-файлом).
-
Ansible-скрипты нужны для описания и запуска действий, которые будут выполняться на хостах при выборе какого-либо action.
-
Конфиг-файл нужен для декларирования и описания объектов, которые будут содержаться в бандле. Вы можете создать единый конфиг-файл для всех объектов либо отдельные конфиг-файлы для одного или нескольких объектов. Конфиг-файл должен называться config.yaml либо config.yml. Конфиг-файлы могут располагаться в корневом каталоге либо в каталоге, который вы зададите.
Подготовленные Ansible playbooks и конфигурационные файлы собираются в архивный файл в формате .tgz, который и является бандлом ADCM.
Рассмотрим подробнее конструкцию конфигурационного файла config.yaml.
Файл config.yaml
Бандлы ADCM могут быть двух типов: продуктовый бандл либо инфраструктурный бандл.
-
Для продуктового бандла в конфиг-файле могут быть секции с описанием кластеров, сервисов и их компонентов.
-
Для инфраструктурного бандла в конфиг-файле могут быть секции с описанием хостпровайдеров и хостов.
ВАЖНО
В конфигурацинном файле для бандла могут быть описания только тех объектов, которые соответствуют типу бандла. Например, в продуктовом бандле могут быть описаны кластер и сервис, а хост — нет.
|
Рассмотрим подробнее некоторые секции файла config.yaml.
Секции файла config.yaml
Конфигурационный файл продуктового бандла может содержать следующие секции:
-
type
— тип объекта. В случае продуктового бандла принимает значениеcluster
илиservice
, в случае инфраструктурного бандла —hostprovider
илиhost
. -
name
— название объекта. -
description
— описание объекта. -
version
— версия объекта (кластера, сервиса или хостпровайдера). Отсутствует у компонентов и хостов. -
edition
— издание объекта (кластера или хостпровайдера). -
license
— путь к файлу лицензионного соглашения. -
adcm_min_version
— минимальная версия ADCM, на которой работает бандл. -
upgrade
— операция, доступная из определённого состояния объекта (кластера либо хостпровайдера), которая обновляет метаинформацию об объекте и переводит его в другое состояние (с возможными ограничениями поversion
иedition
). Версия продукта может содержать несколько изданий продукта. -
config
— описание конфигурации объекта (кластера, сервиса, компонента, хоста либо хостпровайдера). После загрузки бандла и создания объекта в интерфейсе ADCM у объекта будут отображаться свойства (на странице Settings), заданные в этой секции. -
actions
— наборы действий, которые могут происходить с объектом (кластером, сервисом, компонентом, хостом либо хостпровайдером). Эти наборы действий (actions) выражаются в виде Ansible playbooks. В интерфейсе ADCM отображение actions для объекта зависит от состояния объекта.
-
import
— настройки сервисов, которые объект (кластер либо сервис) может принимать от других объектов. Например, кластер может принять настройки сервиса ZooKeeper от какого-то другого кластера (передаются только настройки сервиса, сам сервис физически не добавляется). Эта функциональность необходима для обмена настройками между различными кластерами.
-
export
— настройки сервисов, которые объект (кластер либо сервис) может передавать другим объектам. Эта функциональность необходима для обмена настройками между различными кластерами.
Пример файла config.yaml
Ниже приведён пример файла config.yaml для продуктового бандла ZooKeeper. Файл содержит рассмотренные выше секции.
---
- type: cluster
name: Zookeeper cluster
description: Zookeeper cluster software
version: 2.0.0
edition: community
license: EULA.txt
adcm_min_version: 2022.10.04.17
upgrade:
- name: 2.0.0 community
versions:
min: "1.5.0"
max_strict: "1.9.9"
from_edition: ['community']
states:
available: any
on_success: upgrade from 1.5.X
config:
- name: centos7_repos
display_name: "Centos 7 repositories"
type: group
subs:
- name: Zookeeper
type: map
description: Arenadata Zookeeper yum repository
default:
desc: Arenadata Zookeeper yum repository
url: http://downloads.arenadata.io/zookeeper/3.5.8/centos/7/community/$basearch/
enabled: "True"
actions:
Install:
display_name: Install
type: task
scripts:
- name: preinstall
display_name: "Preinstall"
script_type: ansible
script: ansible/cluster_preinstall.yaml
params:
ansible_tags: preinstall, service_dependency_check
- name: zookeeper
display_name: "Zookeeper"
script_type: ansible
script: adcm_service_zookeeper/ansible/zookeeper.yml
params:
ansible_tags: install, configure, start
states:
available:
- created
on_success: installed
- type: service
name: zookeeper
display_name: Zookeeper
version:
export:
- Main
config:
- name: Main
type: group
subs:
- name: connect
type: string
read_only: any
required: no
description: >
Zookeeper connection string that is used by other services or clusters.
It is generated automatically.
- name: data_dirs
display_name: dataDir
type: string
default: "/var/lib/zookeeper"
description: >
The location where Zookeeper stores the in-memory database snapshots and, unless specified otherwise, the transaction log of updates to the database.
Specified as the dataDir parameter in the zoo.cfg configuration file.
actions:
Start:
type: job
script_type: ansible
script: ./ansible/zookeeper.yml
params:
ansible_tags: configure, configure_main_info, start
states:
available:
- installed
components:
SERVER:
display_name: Zookeeper Server
constraint: [odd]
actions:
Start:
type: job
script_type: ansible
script: ./ansible/zookeeper_server.yml
params:
ansible_tags: configure, configure_main_info, start
states:
available:
- installed