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

À propos du projet

Provision Kubernetes or Docker Swarm cluster using Magnum

Installer
ansible-galaxy install stackhpc.os-container-infra
Licence
apache-2.0
Téléchargements
429
Propriétaire
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.