dcos_agent

Ansible Роли: Mesosphere DC/OS

Набор Ansible ролей для управления жизненным циклом кластера DC/OS на RedHat/CentOS Linux.

Требования

Для наилучшего использования этих ролей ваши узлы должны соответствовать рекомендованному Mesosphere подходу к настройке инфраструктуры. В зависимости от вашей настройки, ожидается развертывание на:

  • Одном или нескольких мастер-узлах ('masters')
  • Одном узле загрузки ('bootstraps')
  • Нуле или более агентах, используемых для публичных сервисов ('agents_public')
  • Одном или нескольких агентах, не используемых для публичных сервисов ('agents_private')

Пример файла инвентаризации представлен ниже:

[bootstraps]
bootstrap1-dcos112s.example.com

[masters]
master1-dcos112s.example.com
master2-dcos112s.example.com
master3-dcos112s.example.com

[agents_private]
agent1-dcos112s.example.com
remoteagent1-dcos112s.example.com

[agents_public]
publicagent1-dcos112s.example.com

[agents:children]
agents_private
agents_public

[common:children]
bootstraps
masters
agents
agents_public

Переменные ролей

Ansible роли Mesosphere DC/OS используют два набора переменных:

  1. Набор переменных для каждого типа узла group_var
  2. Многоуровневый словарь под названием dcos, который должен быть доступен всем узлам

Переменные по группам

[bootstraps:vars]
node_type=bootstrap

[masters:vars]
node_type=master
dcos_legacy_node_type_name=master

[agents_private:vars]
node_type=agent
dcos_legacy_node_type_name=slave

[agents_public:vars]
node_type=agent_public
dcos_legacy_node_type_name=slave_public

Глобальные переменные

dcos:
  download: "https://downloads.dcos.io/dcos/stable/1.13.4/dcos_generate_config.sh"
  download_checksum: "sha256:a3d295de33ad55b10f5dc66c9594d9175a40f5aaec7734d664493968a9f751fd"
  version: "1.13.4"
  enterprise_dcos: false
  selinux_mode: enforcing

  config:
    cluster_name: "examplecluster"
    security: strict
    bootstrap_url: http://int-bootstrap1-examplecluster.example.com:8080
    exhibitor_storage_backend: static
    master_discovery: static
    master_list:
      - 172.31.42.1

Переменные для всего кластера

Имя Обязательно? Описание
download ОБЯЗАТЕЛЬНО (https) URL для загрузки установки Mesosphere DC/OS
download_checksum нет Контрольная сумма для проверки загруженного файла. Должна начинаться с метода, используемого для проверки, например, "sha256:"
version ОБЯЗАТЕЛЬНО Строка версии, отражающая версию, которую устанавливает установщик (данный download). Можете получить, запустив dcos_generate_config.sh --version.
version_to_upgrade_from для обновлений Строка версии Mesosphere DC/OS, от которой ожидается обновление. На загрузочном узле будет сгенерирован скрипт обновления для каждой версии, и каждый узел кластера загрузит соответствующее обновление для своей текущей версии DC/OS.
image_commit нет Может использоваться для принудительного выполнения обновлений с одинаковыми версиями и конфигурациями. В основном это полезно для развертывания/обновления невыпущенных версий, например, 1.12-dev. Этот параметр имеет приоритет над version.
enterprise_dcos ОБЯЗАТЕЛЬНО Указывает, устанавливает ли установщик (данный download) 'открытую' или 'предпринимательскую' версию Mesosphere DC/OS. Это требуется, так как для компонентов, доступных только в версии предприятия, имеются дополнительные проверки после обновления.
selinux_mode ОБЯЗАТЕЛЬНО Указывает режим SELinux операционной системы узлов кластера. Mesosphere DC/OS поддерживает работу в режиме enforcing, начиная с версии 1.12. Более старые версии требуют режима permissive.
config да Структура YAML, представляющая собой допустимый Mesosphere DC/OS config.yml, смотрите ниже.

Параметры конфигурации DC/OS config.yml

Пожалуйста, смотрите официальную справку по конфигурации Mesosphere DC/OS для полного списка возможных параметров. Есть несколько параметров, которые используются этими ролями вне конфигурации DC/OS config.yml, в частности:

  • bootstrap_url: Должен указывать на http://ваш узел загрузки:8080. Будет использоваться внутри и удобно переписан для установщика/обновления, чтобы указывать на определенную подкаталог версии.
  • ip_detect_contents: Используется для определения пользовательского скрипта обнаружения IP. Перезаписывает встроенное обнаружение среды и использование общего скрипта AWS или локального скрипта. Официальная справка Mesosphere DC/OS по ip-detect
  • ip_detect_public_contents: Используется для определения пользовательского скрипта обнаружения публичного IP. Перезаписывает встроенное обнаружение среды и использование общего скрипта AWS или локального скрипта. Официальная справка Mesosphere DC/OS по ip-detect
  • fault_domain_detect_contents: Используется для определения пользовательского скрипта обнаружения зоны отказов. Перезаписывает встроенное обнаружение среды и использование общего скрипта AWS или локального скрипта.

Особенности слияния словарей Ansible

Из-за вложенной структуры конфигурации dcos может потребоваться установить Ansible на 'слияние', а не 'замену' при комбинировании конфигураций из нескольких источников.

Пример
# ansible.cfg
hash_behaviour = merge

Предостережение при интерактивном использовании: dcos_cluster_name_confirmed

При интерактивном вызове этих ролей (например, с машины оператора), роли DCOS.bootstrap потребуют ручного подтверждения кластера, к которому нужно подключиться. Это механизм защиты, чтобы избежать непреднамеренного обновления или изменения конфигурации. В неинтерактивных сценариях переменная может быть установлена для пропуска этого шага, например:

ansible-playbook -e 'dcos_cluster_name_confirmed=True' dcos.yml

Пример плейбука

Mesosphere DC/OS представляет собой сложную систему, охватывающую несколько узлов для формирования полного многонодового кластера. Есть некоторые ограничения при использовании предоставленных ролей в плейбуке:

  1. Порядок групп для выполнения их соответствующих ролей (например, сначала узел загрузки, затем мастер-узлы, затем агенты)
  2. Параллельность при обновлениях (например, serial: 1 для мастер-узлов)

Предоставленный плейбук dcos.yml можно использовать как есть для установки и обновления Mesosphere DC/OS.

Испытанные версии ОС и Mesosphere DC/OS

  • CentOS 7, RHEL 7
  • DC/OS 1.12, как открытая, так и корпоративная версии

Лицензия

Apache 2.0

Информация об авторе

Эта роль была создана командой SRE @ Mesosphere и другими в 2018 году на основе множества внутренних инструментов и непубличных Ansible ролей, которые разрабатывались внутри на протяжении многих лет.

О проекте

Life cycle management of a Mesosphere DC/OS agent node. Part of a set of Ansible roles that manage DC/OS on RedHat/CentOS Linux.

Установить
ansible-galaxy install dcos/dcos-ansible
Лицензия
Unknown
Загрузки
120
Владелец
Datacenter Operating System