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 используют два набора переменных:
- Набор переменных для каждого типа узла
group_var
- Многоуровневый словарь под названием
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-detectip_detect_public_contents
: Используется для определения пользовательского скрипта обнаружения публичного IP. Перезаписывает встроенное обнаружение среды и использование общего скрипта AWS или локального скрипта. Официальная справка Mesosphere DC/OS по ip-detectfault_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 представляет собой сложную систему, охватывающую несколько узлов для формирования полного многонодового кластера. Есть некоторые ограничения при использовании предоставленных ролей в плейбуке:
- Порядок групп для выполнения их соответствующих ролей (например, сначала узел загрузки, затем мастер-узлы, затем агенты)
- Параллельность при обновлениях (например,
serial: 1
для мастер-узлов)
Предоставленный плейбук dcos.yml
можно использовать как есть для установки и обновления Mesosphere DC/OS.
Испытанные версии ОС и Mesosphere DC/OS
- CentOS 7, RHEL 7
- DC/OS 1.12, как открытая, так и корпоративная версии
Лицензия
Информация об авторе
Эта роль была создана командой 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