geerlingguy.k8s_manifests
Ansible Rolle: K8s Manifeste
Eine Ansible Rolle, die Kubernetes-Manifeste (entweder als Vorlage oder direkt) auf Kubernetes-Cluster anwendet.
Voraussetzungen
- Pip-Paket:
openshift
- Wenn Sie lokal (z.B. mit
connection: local
) arbeiten, müssen Sie möglicherweiseansible_python_interpreter: "{{ ansible_playbook_python }}"
setzen, damit die Rolle korrekt funktioniert.
Rollenvariablen
Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml
):
k8s_manifests:
# Kann ein Pfad innerhalb des `k8s_manifests_base_dir` sein.
- monitoring/prometheus
# Verwenden Sie eine `file`-Abfrage, wenn Sie die Manifestdatei nicht als Vorlage nutzen möchten.
- dir: monitoring/grafana-configmap
lookup_type: 'file'
# Sie können einen Namespace pro Manifest festlegen (vorlagisiert auf `manifest_namespace`).
- dir: docker-registry
namespace: registry
Eine Liste von Kubernetes-Manifestverzeichnissen, die auf ein Kubernetes-Cluster angewendet werden sollen. Diese Liste kann entweder aus Rohverzeichnispfaden oder Ordnernamen bestehen oder ein Wörterbuch mit dir
(dem Verzeichnispfad/Ordnernamen), optionalem lookup_type
(dem verwendeten Ansible-Abfragetyp für die manifest.yml
-Datei) und optionalem namespace
(vorlagisiert auf manifest_namespace
) sein.
Diese Rolle sucht dann im angegebenen Verzeichnis nach jedem Manifest und wendet die Datei manifest.yml
(und deren Inhalte) mit dem Ansible k8s
Modul an.
Wenn Sie die Datei als Vorlage verwenden müssen, stellt diese Rolle standardmäßig die manifest.yml
-Datei als Vorlage zur Verfügung (und fügt automatisch Variablen aus einer vars.yml
-Datei neben der manifest.yml
-Datei hinzu). Sie können jedoch auch die Vorlagenverarbeitung deaktivieren und das Manifest direkt anwenden, indem Sie lookup_type: file
setzen.
k8s_manifests_base_dir: '' # mit abschließendem /, z.B. 'base_dir/'
Wenn gesetzt, wird dieser String jedem Manifest dir
/Pfad, der in k8s_manifests
angegeben ist, vorangestellt. Dies ist nützlich, wenn Sie alle Ihre Kubernetes-Manifeste in einem Verzeichnis außerhalb des Ansible-Playbook-Verzeichnisses speichern, sodass Sie nicht den vollständigen Pfad in jedem definierten Element der k8s_manifests
-Liste angeben müssen.
k8s_manifests_state: present
Ob der state
für das k8s
Modul present
oder absent
sein soll. Beachten Sie, dass die Verwendung von absent
nicht immer alle Kubernetes-Ressourcen löscht, die in einem Manifest definiert sind.
k8s_force: false
Wenn auf true
gesetzt und k8s_manifests_state
auf present
gesetzt ist, wird ein vorhandenes Objekt ersetzt. Andernfalls ist das standardmäßige Verhalten des Ansible k8s
Moduls und von Kubernetes selbst (z.B. bei Verwendung von apply
), die Ressource zu patchen.
k8s_kubeconfig: ~/.kube/config
Der Pfad zur kubeconfig
-Datei, die verwendet wird, um eine Verbindung zum Kubernetes-Cluster herzustellen.
k8s_resource_namespace: ''
k8s_manage_namespace: true
Standardmäßig geht diese Rolle davon aus, dass Sie Ressourcen in einen bestimmten Namespace bereitstellen. Wenn Sie k8s_resource_namespace
auf das Namespace setzen, in dem Sie arbeiten, stellt die Rolle sicher, dass dieses Namespace existiert, bevor sie Manifeste anwendet. Sie können das Namespace-Management dieser Rolle deaktivieren (z.B. wenn das anzuwendende Manifest nicht namespaced sein sollte oder wenn Sie Namespace pro Manifest anwenden), indem Sie k8s_manage_namespace: false
setzen.
k8s_no_log: true
Ob die Details der Anwendung jedes Manifests im Cluster in der Ansible-Ausgabe protokolliert werden sollen. Geheimnisse und andere sensible Daten könnten Teil eines Manifests sein, daher ist dies standardmäßig sicher eingestellt. Setzen Sie es auf false
für Debugging-Zwecke.
Abhängigkeiten
Keine.
Beispiel-Playbooks
Einfaches Beispiel - Ausführung auf localhost
---
- hosts: localhost
connection: local
gather_facts: no
vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
k8s_kubeconfig: ~/.kube/config-my-cluster
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
roles:
- role: geerlingguy.k8s_manifests
Siehe das Verzeichnis k8s-manifests
und seine README für ein Beispiel-Layout eines vorlagenbasierten Manifests mit einer definierten Vars-Datei daneben.
Ausführung als Teil eines größeren Plays
---
- hosts: k8s_cluster
become: true
vars:
ansible_python_interpreter: python
k8s_manage_namespace: false
k8s_no_log: false
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
- dir: docker-registry
namespace: registry
tasks:
- name: Setze den Python-Interpreter angemessen.
set_fact:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
- import_role:
name: geerlingguy.k8s_manifests
tags: ['kubernetes', 'nfs', 'drupal', 'registry']
delegate_to: localhost
become: false
run_once: true
Lizenz
MIT / BSD
Autorinformationen
Diese Rolle wurde 2018 von Jeff Geerling erstellt, Autor von Ansible for DevOps.
Kubernetes manifest management role.
ansible-galaxy install geerlingguy.k8s_manifests