Composants¶
Les treize composants intégrés du registre kikx, générés à partir de GET /api/registry. Les composants et leurs champs sont aussi affichés par kikx list.
Chaque valeur de champ est une chaîne. Chaque template reçoit aussi name, namespace et labels, décrits dans Format des éléments de registre. Les chemins de sortie sont relatifs au répertoire cible et sont rendus avec le même contexte que le contenu des fichiers.
Une référence correspond à un composant intégré lorsque la partie qui suit son dernier / est égale au nom d’un composant intégré. Voir Format des éléments de registre.
Résumé¶
Référence |
Titre |
Description |
Chemins de sortie |
|---|---|---|---|
Deployment |
Pods running one container image. |
|
|
Service |
A stable address for pods. |
|
|
Ingress |
Routes HTTP traffic to a service. |
|
|
DigitalOcean Droplet |
Terraform for one or more DigitalOcean droplets. |
|
|
Hetzner Cloud Server |
Terraform for one or more Hetzner Cloud servers. |
|
|
Kubernetes Bootstrap |
Installs containerd, kubelet, kubeadm and kubectl on target hosts. |
|
|
Inventory |
Hosts, groups, nesting and shared vars for servers you already have. |
|
|
Group vars |
Variables for one inventory group. |
|
|
Common role |
A starter host-hygiene role: base packages, timezone, swap, a templated motd. |
|
|
Role skeleton |
An empty role (tasks, defaults, handlers, meta) to fill in. |
|
|
Playbook |
One or more plays, each running roles on an inventory group. |
|
|
Site playbook |
The entry point that imports your playbooks in order. |
|
|
Ansible config |
ansible.cfg pointing Ansible at your inventory and roles, so playbooks in subfolders find them. |
|
k8s/deployment¶
Propriété |
Valeur |
|---|---|
Titre |
Deployment |
Description |
Pods running one container image. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
|
— |
— |
|
non |
|
— |
— |
— |
|
non |
|
— |
— |
— |
k8s/service¶
Propriété |
Valeur |
|---|---|
Titre |
Service |
Description |
A stable address for pods. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
|
— |
— |
— |
|
non |
— |
— |
— |
Container port; defaults to the service port. |
k8s/ingress¶
Propriété |
Valeur |
|---|---|
Titre |
Ingress |
Description |
Routes HTTP traffic to a service. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
— |
|
— |
— |
|
non |
|
— |
— |
— |
|
non |
— |
— |
— |
Backend service; defaults to the ingress name. |
|
non |
|
— |
— |
— |
terraform/digitalocean¶
Propriété |
Valeur |
|---|---|
Titre |
DigitalOcean Droplet |
Description |
Terraform for one or more DigitalOcean droplets. |
Chemins de sortie |
|
Valeurs de repli du template |
Déclare la variable |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
|
— |
— |
|
oui |
— |
|
— |
— |
|
oui |
|
— |
|
Any image slug the provider accepts; the list is a shortcut. |
|
non |
|
— |
— |
— |
terraform/hetzner¶
Propriété |
Valeur |
|---|---|
Titre |
Hetzner Cloud Server |
Description |
Terraform for one or more Hetzner Cloud servers. |
Chemins de sortie |
|
Valeurs de repli du template |
Déclare la variable |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
|
— |
— |
|
oui |
— |
|
— |
— |
|
oui |
|
— |
|
Any image slug the provider accepts; the list is a shortcut. |
|
non |
|
— |
— |
— |
ansible/k8s-bootstrap¶
Propriété |
Valeur |
|---|---|
Titre |
Kubernetes Bootstrap |
Description |
Installs containerd, kubelet, kubeadm and kubectl on target hosts. |
Chemins de sortie |
|
Valeurs de repli du template |
Installe |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
— |
— |
An inventory group, or all. |
|
oui |
— |
|
— |
— |
ansible/inventory¶
Propriété |
Valeur |
|---|---|
Titre |
Inventory |
Description |
Hosts, groups, nesting and shared vars for servers you already have. |
Chemins de sortie |
|
Champs à valeur JSON |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
— |
— |
— |
|
non |
|
— |
— |
SSH user written for hosts that don’t set one (null on a host omits it). |
|
non |
|
— |
— |
SSH port written for hosts that don’t set one (null on a host omits it). |
ansible/group-vars¶
Propriété |
Valeur |
|---|---|
Titre |
Group vars |
Description |
Variables for one inventory group. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champs à valeur JSON |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
— |
— |
— |
|
non |
— |
— |
— |
JSON map of simple key/value pairs. |
|
non |
— |
— |
— |
Raw YAML body, written as-is. |
|
non |
|
— |
|
— |
ansible/common-role¶
Propriété |
Valeur |
|---|---|
Titre |
Common role |
Description |
A starter host-hygiene role: base packages, timezone, swap, a templated motd. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
|
— |
— |
— |
ansible/role¶
Propriété |
Valeur |
|---|---|
Titre |
Role skeleton |
Description |
An empty role (tasks, defaults, handlers, meta) to fill in. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
|
— |
— |
— |
ansible/playbook¶
Propriété |
Valeur |
|---|---|
Titre |
Playbook |
Description |
One or more plays, each running roles on an inventory group. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champs à valeur JSON |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
— |
— |
— |
— |
|
non |
— |
— |
— |
— |
|
non |
— |
— |
— |
JSON list of plays: name, hosts, become, tags, roles, pre_tasks, post_tasks. |
|
non |
— |
|
— |
Where the file goes. Leave empty for the project root. |
ansible/site¶
Propriété |
Valeur |
|---|---|
Titre |
Site playbook |
Description |
The entry point that imports your playbooks in order. |
Chemins de sortie |
|
Champs à valeur JSON |
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
oui |
— |
— |
— |
— |
ansible/config¶
Propriété |
Valeur |
|---|---|
Titre |
Ansible config |
Description |
ansible.cfg pointing Ansible at your inventory and roles, so playbooks in subfolders find them. |
Chemins de sortie |
|
Valeurs de repli du template |
|
Champ |
Requis |
Valeur par défaut |
Exemple |
Options |
Description |
|---|---|---|---|---|---|
|
non |
— |
|
— |
— |
|
non |
|
— |
— |
— |
Exemple : inventory=platform-inventory.ini écrit ansible.cfg :
[defaults]
inventory = platform-inventory.ini
roles_path = roles
Ansible lit ansible.cfg dans le répertoire depuis lequel il est lancé. Depuis le répertoire de sortie, ansible-playbook site.yml utilise alors cet inventaire sans -i, et trouve les rôles dans roles/, même pour des playbooks situés dans un sous-dossier comme playbooks/.
Formes des champs JSON¶
Une valeur de champ dont le premier caractère autre qu’une espace est [ ou { et qui s’analyse comme du JSON est transmise au template sous forme de liste ou de map. Toute autre valeur, y compris du JSON invalide, est transmise sous forme de chaîne. Les clés des objets sont parcourues dans l’ordre alphabétique.
hosts¶
Champ de ansible/inventory. Un tableau JSON d’objets groupe, écrits dans l’ordre du tableau.
Clé |
Type |
Écrit sous la forme |
|---|---|---|
|
chaîne |
Nom de section |
|
tableau d’objets hôte |
Section |
|
tableau de chaînes |
Section |
|
objet |
Section |
Objet hôte :
Clé |
Type |
Écrit sous la forme |
|---|---|---|
|
chaîne |
Premier élément de la ligne de l’hôte |
|
chaîne |
|
|
chaîne ou |
Voir Absent, null et vide |
|
nombre, chaîne ou |
Voir Absent, null et vide |
|
chaîne |
|
|
objet |
|
Un hôte listé dans plusieurs groupes est écrit dans chacun de ces groupes.
Absent, null et vide¶
|
Écrit |
|---|---|
clé absente |
|
|
rien |
valeur non vide |
|
ansible_port suit les mêmes règles avec default_port.
Exemple de valeur :
[
{"group": "web", "members": [
{"name": "web-01", "ansible_host": "192.0.2.10"},
{"name": "web-02", "ansible_host": "192.0.2.11", "ansible_user": null, "ansible_port": null},
{"name": "web-03", "ansible_host": "192.0.2.12", "ansible_user": "deploy", "ansible_port": 2222,
"ssh_key_file": "~/.ssh/id_ed25519", "vars": {"http_port": 8080}}
], "vars": {"ntp": "pool.ntp.org"}},
{"group": "db", "members": [{"name": "db-01", "ansible_host": "198.51.100.5", "ansible_user": ""}]},
{"group": "platform", "children": ["web", "db"], "vars": {"env": "prod"}}
]
Sortie avec les valeurs par défaut de default_user et default_port :
[web]
web-01 ansible_host=192.0.2.10 ansible_user=root ansible_port=22
web-02 ansible_host=192.0.2.11
web-03 ansible_host=192.0.2.12 ansible_user=deploy ansible_port=2222 ansible_ssh_private_key_file=~/.ssh/id_ed25519 http_port=8080
[web:vars]
ntp=pool.ntp.org
[db]
db-01 ansible_host=198.51.100.5 ansible_port=22
[platform:children]
web
db
[platform:vars]
env=prod
vars, yaml et layout¶
Champs de ansible/group-vars.
Champ |
Forme |
Écrit sous la forme |
|---|---|---|
|
objet JSON |
Une ligne |
|
chaîne |
Écrit après |
|
|
|
Le chemin utilise le champ group, et non le nom du composant.
Exemple : group=db, vars={"pg_version":16,"pg_port":5432} écrit group_vars/db.yml :
---
pg_port: 5432
pg_version: 16
plays¶
Champ de ansible/playbook. Un tableau JSON d’objets play, écrits dans l’ordre et séparés par une ligne vide.
Clé |
Type |
Valeur par défaut |
Écrit sous la forme |
|---|---|---|---|
|
chaîne |
nom du composant |
|
|
chaîne |
— |
|
|
booléen |
|
|
|
tableau de chaînes |
— |
|
|
chaîne de tâches YAML |
— |
Bloc |
|
tableau d’entrées de rôle |
— |
Liste |
|
chaîne de tâches YAML |
— |
Bloc |
Entrée de rôle :
Forme |
Écrit sous la forme |
|---|---|
|
|
|
|
|
|
Exemple de valeur, avec le nom de composant data et folder=playbooks :
[
{"name": "Data tier", "hosts": "db", "become": false, "tags": ["data", "db"],
"roles": ["common", {"role": "postgres", "when": "inventory_hostname == groups[\"db\"][0]"}],
"pre_tasks": "- name: Wait\n ansible.builtin.wait_for_connection:\n",
"post_tasks": "- name: Done\n ansible.builtin.debug:\n msg: ok\n"},
{"hosts": "web", "roles": ["nginx"]}
]
Sortie, playbooks/data.yml :
---
- name: Data tier
hosts: db
tags: [data, db]
pre_tasks:
- name: Wait
ansible.builtin.wait_for_connection:
roles:
- common
- role: postgres
when: inventory_hostname == groups["db"][0]
post_tasks:
- name: Done
ansible.builtin.debug:
msg: ok
- name: data
hosts: web
become: true
roles:
- nginx
hosts et roles hérités¶
Champs de ansible/playbook, utilisés lorsque plays est absent ou vide. Ils produisent un seul play nommé d’après le composant, avec become: true.
Champ |
Forme |
|---|---|
|
chaîne |
|
tableau JSON de noms de rôles |
Exemple : le nom de composant legacy, hosts=web, roles=["common","nginx"] écrit legacy.yml :
---
- name: legacy
hosts: web
become: true
roles:
- common
- nginx
plays couvre tout ce que fait cette forme, avec en plus les noms, les tags, les conditions de rôle et plusieurs plays par fichier. Préférez-le pour les nouveaux playbooks.
playbooks¶
Champ de ansible/site. Un tableau JSON d’objets, écrits dans l’ordre.
Clé |
Type |
Écrit sous la forme |
|---|---|---|
|
chaîne |
|
|
chaîne |
|
Exemple : [{"name":"Data","path":"playbooks/data.yml"},{"name":"Legacy","path":"legacy.yml"}] écrit :
---
- name: Data
import_playbook: playbooks/data.yml
- name: Legacy
import_playbook: legacy.yml