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

Acerca del proyecto

Provision Kubernetes or Docker Swarm cluster using Magnum

Instalar
ansible-galaxy install stackhpc.os-container-infra
Licencia
apache-2.0
Descargas
429
Propietario
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.