stackhpc.os-container-infra
Clústeres de Contenedores OpenStack
Este rol se puede usar para manipular clústeres de contenedores en Magnum utilizando el cliente python de Magnum.
Requisitos
- python 2.6+
- openstacksdk
- python-magnumclient
- python-heatclient
- python-novaclient
Variables del Rol
os_container_infra_cloud
es el nombre de la nube (configurado dentro de cloud.yaml, opcional).
os_container_infra_user
es el nombre del usuario SSH, por ejemplo, fedora.
os_container_infra_state
debe ser presente, ausente, consulta o actualizar.
os_container_infra_cluster_name
es el nombre del clúster.
os_container_infra_cluster_template_name
es la plantilla del clúster que se usará para el clúster.
os_container_infra_keypair
es la clave que se usará para acceder a los nodos del clúster.
os_container_infra_master_count
es el número de nodos maestros.
os_container_infra_node_count
es el número de nodos trabajadores.
os_container_infra_default_interface
es la red predeterminada para acceder al clúster.
os_container_infra_interfaces
es una lista de redes adicionales para conectar a los nodos del clúster.
os_container_infra_inventory
es el destino donde se guardará el inventario.
Magnum solo permite la conexión de una interfaz de red por defecto.
os_container_infra_environment_group
es un nombre de grupo Ansible opcional al que se agregarán todos los hosts del clúster y localhost. Esto puede ser útil si hay un solo grupo que representa un entorno como desarrollo/puesta en escena/producción.
os_container_infra_coe
es el motor de orquestación de contenedores a usar. Las opciones válidas son kubernetes
o swarm
.
os_container_infra_k8s_version
es una versión de Kubernetes configurable que se usará cuando os_container_infra_state = upgrade
.
Ejemplo de Playbook
El siguiente playbook crea un clúster, conecta dos interfaces a los servidores en el clúster y crea un archivo de inventario utilizando la información de autenticación disponible en las variables de entorno (que es el comportamiento predeterminado):
---
- 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
...
Para autenticar usando la información pasada a través del playbook, proporciona una variable de diccionario como se indica:
os_container_infra_auth:
auth_url: http://10.60.253.1:5000
project_name: p3
username: usuario
password: contraseña
user_domain_name: Default
project_domain_name: Default
region_name: RegionOne
Para autenticar usando la información almacenada en
.config/openstack/clouds.yaml
o /etc/openstack/clouds.yaml
, que se puede
generar usando nuestro rol stackhpc.os-config
, añade lo siguiente:
os_container_infra_auth_type: cloud
os_container_infra_cloud: mycloud
Para actualizaciones del clúster de 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
...
Información de Depuración de Ansible
Para ver advertencias emitidas por este rol, exporta la siguiente variable antes de ejecutar ansible:
export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1
Para filtrar estas advertencias:
tail -f ansible.log | grep DEBUG
Problemas Conocidos
El módulo template
de Ansible escribe un archivo de inventario y puede que se queje
acerca de la falta de libselinux-python
, que ya está instalado en la mayoría de las distribuciones de Linux. Si ese es el caso, simplemente crea un enlace simbólico al directorio selinux en
tu entorno virtual existente:
ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/
Para un nuevo entorno virtual:
virtualenv --system-site-packages venv
Licencia
Apache 2
Información del Autor
- Bharat Kunwar (bharat@stackhpc.com)
ansible-galaxy install stackhpc.os-container-infra