stackhpc.os-container-infra
OpenStack Контейнерные Кластеры
Эта роль может использоваться для управления контейнерным кластером в Magnum с помощью python-клиента Magnum.
Требования
- python 2.6+
- openstacksdk
- python-magnumclient
- python-heatclient
- python-novaclient
Переменные Роли
os_container_infra_cloud — это имя облака (настраивается в cloud.yaml, не обязательно).
os_container_infra_user — это имя SSH-пользователя, например, fedora.
os_container_infra_state должно быть либо present, absent, query, либо upgrade.
os_container_infra_cluster_name — это имя кластера.
os_container_infra_cluster_template_name — это шаблон кластера, который будет использоваться.
os_container_infra_keypair — это ключ, который будет использоваться для доступа к узлам кластера.
os_container_infra_master_count — это количество мастер-узлов.
os_container_infra_node_count — это количество рабочих узлов.
os_container_infra_default_interface — это сеть по умолчанию, используемая для доступа к кластеру.
os_container_infra_interfaces — это список дополнительных сетей, которые будут подключены к узлам кластера.
os_container_infra_inventory — это место, куда будет сохранен инвентарь.
Подключение к серверам в кластере возможно, так как по умолчанию Magnum позволяет подключить только один сетевой интерфейс.
os_container_infra_environment_group — это необязательное имя группы Ansible, в которую будут добавлены все хосты кластера и localhost. Это может быть полезно, если есть одна группа, представляющая окружение, например, разработку/тестирование/продукция.
os_container_infra_coe — это движок оркестрации контейнеров, который будет использоваться. Допустимые варианты: kubernetes или swarm.
os_container_infra_k8s_version — это настраиваемая версия Kubernetes, используемая при os_container_infra_state = upgrade.
Пример Плейбука
Следующий плейбук создает кластер, подключает два интерфейса к серверам в кластере и создает файл инвентаря, используя информацию для аутентификации из переменных окружения (что является поведением по умолчанию):
---
- hosts: localhost
become: False
gather_facts: False
roles:
- role: stackhpc.os-container-infra
os_container_infra_user: fedora
os_container_infra_state: present
os_container_infra_cluster_name: k8s
os_container_infra_cluster_template_name: k8s-fa29
os_container_infra_roles:
- name: storage_client
groups: ["{{ os_container_infra_worker_group }}"]
os_container_infra_keypair: bharat
os_container_infra_default_interface: default
os_container_infra_master_group:
- name: master
count: 1
os_container_infra_worker_group:
- name: minion
count: 2
...
Чтобы выполнить аутентификацию с помощью информации, переданной через плейбук, предоставьте переменную в виде словаря:
os_container_infra_auth:
auth_url: http://10.60.253.1:5000
project_name: p3
username: username
password: password
user_domain_name: Default
project_domain_name: Default
region_name: RegionOne
Чтобы выполнить аутентификацию с помощью информации, хранящейся в
.config/openstack/clouds.yaml или /etc/openstack/clouds.yaml, которые можно
сгенерировать с помощью нашей роли stackhpc.os-config, добавьте следующее:
os_container_infra_auth_type: cloud
os_container_infra_cloud: mycloud
Для обновления кластера Kubernetes:
---
- hosts: cluster
gather_facts: False
become: yes
roles:
- role: stackhpc.os-container-infra
os_container_infra_state: upgrade
os_container_infra_k8s_version: v1.13.4
os_container_infra_coe: kubernetes
...
Информация по Отладке Ansible
Чтобы увидеть предупреждения, выдаваемые этой ролью, экспортируйте следующую переменную перед запуском ansible:
export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1
Чтобы отфильтровать эти предупреждения:
tail -f ansible.log | grep DEBUG
Известные Проблемы
Модули Ansible template записывают файл инвентаря и могут жаловаться на отсутствие libselinux-python, который уже установлен в большинстве дистрибутивов Linux. Если это так, просто создайте символическую ссылку на директорию selinux в вашей существующей виртуальной среде:
ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/
Для новой виртуальной среды:
virtualenv --system-site-packages venv
Лицензия
Apache 2
Информация об Авторах
- Барат Кунвар (bharat@stackhpc.com)
ansible-galaxy install stackhpc.os-container-infra