Создание простого бандла

Создание бандла для 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
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней