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/ansible-role-os-container-infra