stackhpc.os-container-infra
OpenStack Container Cluster
Diese Rolle kann verwendet werden, um Containercluster in Magnum mit dem Magnum-Python-Client zu verwalten.
Anforderungen
- python 2.6+
- openstacksdk
- python-magnumclient
- python-heatclient
- python-novaclient
Rollenvariablen
os_container_infra_cloud
ist der Name der Cloud (konfiguriert in cloud.yaml, optional).
os_container_infra_user
ist der Name des SSH-Nutzers, z. B. fedora.
os_container_infra_state
muss entweder present, absent, query oder upgrade sein.
os_container_infra_cluster_name
ist der Name des Clusters.
os_container_infra_cluster_template_name
ist die Cluster-Vorlage, die für den Cluster verwendet werden soll.
os_container_infra_keypair
ist das Schlüsselpair, das zum Zugriff auf die Cluster-Knoten verwendet wird.
os_container_infra_master_count
ist die Anzahl der Master-Knoten.
os_container_infra_node_count
ist die Anzahl der Worker-Knoten.
os_container_infra_default_interface
ist das Standardnetzwerk, das verwendet wird, um den Cluster zu erreichen.
os_container_infra_interfaces
ist eine Liste zusätzlicher Netzwerke, die an die Cluster-Knoten angeschlossen werden sollen.
os_container_infra_inventory
ist der Zielort, an dem das Inventar gespeichert wird. Es kann nur eine Netzwerkverbindung standardmäßig an einem Cluster-Server angeschlossen werden.
os_container_infra_environment_group
ist ein optionaler Ansible-Gruppenname, der allen Cluster-Hosts und localhost hinzugefügt wird. Dies kann nützlich sein, wenn es eine einzige Gruppe gibt, die eine Umgebung wie Entwicklung/Staging/Produktion repräsentiert.
os_container_infra_coe
ist die zu verwendende Container-Orchestrierungs-Engine. Gültige Optionen sind kubernetes
oder swarm
.
os_container_infra_k8s_version
ist eine konfigurierbare Kubernetes-Version, die verwendet wird, wenn os_container_infra_state = upgrade
.
Beispiel-Playbook
Das folgende Playbook erstellt einen Cluster, fügt zwei Netzwerkschnittstellen zu den Servern im Cluster hinzu und erstellt eine Inventardatei mit den Authentifizierungsinformationen, die in den Umgebungsvariablen verfügbar sind (was das Standardverhalten ist):
---
- 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
...
Um sich mit Informationen zu authentifizieren, die über das Playbook bereitgestellt werden, geben Sie ein Dictionary-Variable an:
os_container_infra_auth:
auth_url: http://10.60.253.1:5000
project_name: p3
username: benutzername
password: passwort
user_domain_name: Default
project_domain_name: Default
region_name: RegionOne
Um sich mit den Informationen zu authentifizieren, die in .config/openstack/clouds.yaml
oder /etc/openstack/clouds.yaml
gespeichert sind, die mit unserer Rolle stackhpc.os-config
generiert werden kann, fügen Sie Folgendes hinzu:
os_container_infra_auth_type: cloud
os_container_infra_cloud: mycloud
Für Upgrades des Kubernetes-Clusters:
---
- 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-Debug-Information
Um Warnungen von dieser Rolle zu sehen, exportieren Sie die folgende Variable, bevor Sie Ansible ausführen:
export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1
Um diese Warnungen zu filtern:
tail -f ansible.log | grep DEBUG
Bekannte Probleme
Das Ansible-Modul template
schreibt eine Inventardatei und kann sich über fehlendes libselinux-python
beschweren, das in den meisten Linux-Distributionen bereits installiert ist. Wenn das der Fall ist, erstellen Sie einfach einen Symlink zum selinux-Verzeichnis in Ihrer vorhandenen virtuellen Umgebung:
ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/
Für eine neue virtuelle Umgebung:
virtualenv --system-site-packages venv
Lizenz
Apache 2
Autoreninformationen
- Bharat Kunwar (bharat@stackhpc.com)
ansible-galaxy install stackhpc.os-container-infra