stackhpc.os-container-infra
Clusters de Conteneurs OpenStack
Ce rôle peut être utilisé pour manipuler un cluster de conteneurs dans Magnum en utilisant le client Python de Magnum.
Exigences
- python 2.6+
- openstacksdk
- python-magnumclient
- python-heatclient
- python-novaclient
Variables du Rôle
os_container_infra_cloud est le nom du cloud (configuré dans cloud.yaml, optionnel).
os_container_infra_user est le nom de l'utilisateur SSH, par exemple fedora.
os_container_infra_state doit être soit présent, absent, interroger ou mettre à niveau.
os_container_infra_cluster_name est le nom du cluster.
os_container_infra_cluster_template_name est le modèle de cluster à utiliser pour le cluster.
os_container_infra_keypair est la clé utilisée pour accéder aux nœuds du cluster.
os_container_infra_master_count est le nombre de nœuds maîtres.
os_container_infra_node_count est le nombre de nœuds de travail.
os_container_infra_default_interface est le réseau par défaut à utiliser pour accéder au cluster.
os_container_infra_interfaces est une liste de réseaux supplémentaires à connecter aux nœuds du cluster.
os_container_infra_inventory est la destination où l'inventaire sera sauvegardé.
os_container_infra_environment_group est un nom de groupe Ansible optionnel au
quel tous les hôtes du cluster et localhost seront ajoutés. Cela peut être utile s'il y a un seul groupe qui représente un environnement tel que
développement/staging/production.
os_container_infra_coe est le moteur d'orchestration de conteneurs à utiliser. Les options valides sont kubernetes ou swarm.
os_container_infra_k8s_version est une version configurabile de Kubernetes à utiliser lorsque os_container_infra_state = upgrade.
Exemple de Playbook
Le playbook suivant crée un cluster, attache deux interfaces aux serveurs du cluster et crée un fichier d'inventaire en utilisant les informations d'authentification disponibles dans les variables d'environnement (qui est le comportement par défaut) :
---
- 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
...
Pour s'authentifier en utilisant les informations passées via le playbook, fournir une variable dictionnaire comme suit :
    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
Pour s'authentifier en utilisant les informations stockées dans
.config/openstack/clouds.yaml ou /etc/openstack/clouds.yaml, qui peut être
généré en utilisant notre rôle stackhpc.os-config, ajouter ce qui suit :
    os_container_infra_auth_type: cloud
    os_container_infra_cloud: mycloud
Pour les mises à niveau du cluster 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
    ...
Informations de Débogage Ansible
Pour voir les avertissements émis par ce rôle, exportez la variable suivante avant de lancer Ansible :
export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1
Pour filtrer ces avertissements :
tail -f ansible.log | grep DEBUG
Problèmes Connus
Le module template d'Ansible écrit un fichier d'inventaire et peut se plaindre
du manque de libselinux-python, qui est déjà installé dans la plupart des distributions Linux. Si c'est le cas, créez simplement un lien symbolique vers le répertoire selinux dans
votre environnement virtuel existant :
ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/
Pour un nouvel environnement virtuel :
virtualenv --system-site-packages venv
Licence
Apache 2
Informations sur l'Auteur
- Bharat Kunwar (bharat@stackhpc.com)
ansible-galaxy install stackhpc.os-container-infra