geerlingguy.k8s_manifests
Rôle Ansible : Manifests K8s
Un rôle Ansible qui applique des manifests Kubernetes (soit en tant que modèles, soit directement) aux clusters Kubernetes.
Exigences
- Paquet Pip :
openshift
- Si vous exécutez sur localhost (par exemple avec
connection: local
), vous devrez peut-être définiransible_python_interpreter: "{{ ansible_playbook_python }}"
pour que le rôle fonctionne correctement.
Variables de Rôle
Les variables disponibles sont listées ci-dessous, avec des valeurs par défaut (voir defaults/main.yml
):
k8s_manifests:
# Peut être un chemin à l'intérieur du `k8s_manifests_base_dir`.
- monitoring/prometheus
# Utilisez un `lookup_type: 'file'` si vous ne voulez pas utiliser le modèle pour le fichier de manifeste.
- dir: monitoring/grafana-configmap
lookup_type: 'file'
# Vous pouvez définir un namespace par manifeste (modélisé à `manifest_namespace`).
- dir: docker-registry
namespace: registry
Une liste de répertoires de manifests Kubernetes à appliquer à un cluster Kubernetes. Cette liste peut être des chemins de répertoires bruts ou des noms de dossiers, ou peut être un dictionnaire avec dir
(le chemin du répertoire/nombre de dossier), un lookup_type
optionnel (le type de recherche Ansible utilisé pour le fichier manifest.yml
), et un namespace
optionnel (modélisé à manifest_namespace
).
Ce rôle examine ensuite le répertoire spécifié pour chaque manifeste et applique un fichier manifest.yml
(et tout son contenu) en utilisant le module Ansible k8s
.
Si vous devez modéliser le fichier, ce rôle modélise par défaut le fichier manifest.yml
(et ajoute automatiquement toutes les variables d'un fichier vars.yml
à côté du fichier manifest.yml
). Mais vous pouvez également désactiver le modèle et appliquer le manifeste directement en définissant lookup_type: file
.
k8s_manifests_base_dir: '' # inclure / à la fin, par exemple 'base_dir/'
Si défini, cette chaîne sera ajoutée devant chaque manifeste dir
/chemin spécifié dans k8s_manifests
. Cela est utile si vous stockez tous vos manifests Kubernetes dans un répertoire en dehors du répertoire de playbook Ansible, afin de ne pas avoir à inclure le chemin complet dans chaque élément de la liste k8s_manifests
.
k8s_manifests_state: présent
Détermine si l’état
pour le module k8s
doit être présent
ou absent
. Notez que l'utilisation de absent
ne supprime pas toujours toutes les ressources Kubernetes définies dans un manifeste.
k8s_force: faux
S'il est défini sur vrai
, et que k8s_manifests_state
est défini sur présent
, un objet existant sera remplacé. Sinon, le comportement par défaut du module k8s
d'Ansible et de Kubernetes lui-même (par exemple, si vous utilisez apply
) est de patcher la ressource.
k8s_kubeconfig: ~/.kube/config
Le chemin vers le fichier kubeconfig
à utiliser pour se connecter au cluster Kubernetes.
k8s_resource_namespace: ''
k8s_manage_namespace: vrai
Par défaut, ce rôle suppose que vous déployez des ressources dans un namespace particulier. Donc, si vous définissez k8s_resource_namespace
sur le namespace sur lequel vous opérez, le rôle s'assurera que ce namespace existe avant d'appliquer des manifests. Vous pouvez désactiver la gestion des namespaces par ce rôle (par exemple, si le manifeste que vous appliquez ne doit pas être associé à un namespace, ou si vous appliquez des namespaces par manifeste) en définissant k8s_manage_namespace: faux
.
k8s_no_log: vrai
Détermine si les détails de l'application de chaque manifeste au cluster doivent être enregistrés dans la sortie d'Ansible. Les secrets et autres données sensibles pourraient faire partie d'un manifeste, donc cela est configuré pour être sécurisé par défaut. Définissez sur faux
à des fins de débogage.
Dépendances
Aucune.
Exemples de Playbooks
Exemple simple - exécution sur localhost
---
- hôtes: localhost
connection: local
gather_facts: non
vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
k8s_kubeconfig: ~/.kube/config-mon-cluster
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
rôles:
- rôle: geerlingguy.k8s_manifests
Consultez le répertoire k8s-manifests
et son README pour un exemple de modèle de manifeste avec un fichier vars défini à côté.
Exécution dans le cadre d'un play plus grand
---
- hôtes: k8s_cluster
devenir: vrai
vars:
ansible_python_interpreter: python
k8s_manage_namespace: faux
k8s_no_log: faux
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
- dir: docker-registry
namespace: registry
tâches:
- nom: Définir correctement l'interpréteur python.
set_fact:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
- import_role:
nom: geerlingguy.k8s_manifests
tags: ['kubernetes', 'nfs', 'drupal', 'registry']
delegate_to: localhost
devenir: faux
run_once: vrai
Licence
MIT / BSD
Informations sur l'Auteur
Ce rôle a été créé en 2018 par Jeff Geerling, auteur d'Ansible for DevOps.
Kubernetes manifest management role.
ansible-galaxy install geerlingguy.k8s_manifests