CLI¶
Le binaire kikx, compilé depuis cli/. Il lit et écrit directement sur le système de fichiers et n’a besoin d’aucun backend en cours d’exécution.
kikx <COMMAND>
Commande |
Rôle |
Lit |
Écrit |
|---|---|---|---|
Créer un projet |
non |
oui |
|
Effectuer le rendu d’un composant dans le répertoire de sortie |
oui |
non |
|
Afficher les composants intégrés |
non |
non |
|
Afficher les templates de preset intégrés |
non |
non |
|
Créer un projet depuis un template de preset, un fichier ou une URL |
non |
oui |
|
Effectuer le rendu d’un template de preset, d’un fichier ou d’une URL dans un répertoire existant |
non |
non |
Options globales :
Option |
Effet |
|---|---|
|
Affiche l’aide |
|
Affiche la version, par exemple |
Tous les chemins sont résolus par rapport au répertoire de travail courant. La CLI ne lit aucune variable d’environnement.
kikx --help liste chaque commande avec une description d’une ligne :
Vendor real, editable infrastructure files into your project
Usage: kikx <COMMAND>
Commands:
init Create kikx.toml in the current directory
add Render a component and write its files into the project
list List the built-in components with their fields
presets List the built-in preset templates
setup Bootstrap a new project from a preset template, file or URL
apply Vendor a preset template, file or URL into an existing project
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
kikx <COMMAND> --help affiche la même description au-dessus de l’usage de la commande.
Code de sortie¶
Code |
Cause |
|---|---|
|
Succès |
|
Erreur d’opération. Le message est affiché sur stderr sous la forme |
|
Erreur d’analyse des arguments, par exemple une option obligatoire absente, une valeur de |
kikx init¶
kikx init [OPTIONS]
Écrit kikx.toml dans le répertoire courant et crée le répertoire de sortie.
Option |
Type |
Valeur par défaut |
Description |
|---|---|---|---|
|
chaîne |
nom du répertoire courant, ou |
Nom du projet, enregistré dans |
|
chemin |
|
Répertoire de sortie, enregistré dans |
|
chaîne |
|
Namespace par défaut, enregistré dans |
|
option sans valeur |
désactivée |
Écrase un |
Condition |
Résultat |
|---|---|
|
Sortie |
|
|
Sortie en cas de succès :
Initialized kikx project `demo` — vendor components with `kikx add <category>/<component>` (see `kikx list`)
kikx add¶
kikx add [OPTIONS] --name <NAME> <REFERENCE>
Effectue le rendu d’un composant avec le default_namespace du projet et écrit ses fichiers sous le output_dir du projet.
Argument |
Description |
|---|---|
|
Référence intégrée ( |
Option |
Type |
Valeur par défaut |
Définit le champ |
|---|---|---|---|
|
chaîne |
obligatoire |
|
|
chaîne |
valeur par défaut du registre |
|
|
entier non signé 32 bits |
valeur par défaut du registre |
|
|
entier |
valeur par défaut du registre |
|
|
entier |
valeur par défaut du registre |
|
|
chaîne |
|
|
|
chaîne |
valeur par défaut du registre |
|
|
chaîne |
valeur par défaut du registre |
|
|
chaîne |
valeur par défaut du registre |
|
|
clé/valeur, répétable |
|
une entrée de |
|
clé/valeur, répétable |
— |
champ |
|
option sans valeur |
désactivée |
Écrase les fichiers existants |
Priorité des champs, de la plus haute à la plus basse : --set, l’option dédiée (--image, --port, …), la valeur par défaut du registre. Un --set ultérieur pour la même clé l’emporte sur un précédent. --label app=<value> remplace le label app par défaut.
Les options dédiées définissent leur champ sur n’importe quel composant. Un champ que le composant ne déclare pas est tout de même transmis au template.
Condition |
Résultat |
|---|---|
Aucun |
Sortie |
Référence inconnue |
Sortie |
Champ obligatoire absent sans valeur par défaut |
Sortie |
Le chemin rendu est absolu |
Sortie |
Le chemin rendu sort du répertoire de sortie |
Sortie |
Un fichier cible existe, sans |
Sortie |
Erreur de template |
Sortie |
Sortie en cas de succès, une ligne par fichier :
Vendored /home/user/demo/infra/web-deployment.yaml
Exemple :
kikx add k8s/deployment --name web --image nginx:1.27 --replicas 3 --label tier=frontend --set port=8080
kikx list¶
kikx list
Affiche chaque composant intégré avec ses champs. N’accepte aucune option en dehors de --help. N’a pas besoin de kikx.toml.
Chaque ligne de champ indique, le cas échéant : required, default <value> (omis pour une valeur par défaut vide), e.g. <example>, one of <options>.
Available components:
k8s/deployment — Pods running one container image.
--set image=… (required; e.g. nginx:1.27)
--set replicas=… (default 1)
--set port=… (default 80)
La liste complète se trouve dans Composants.
kikx presets¶
kikx presets
Affiche chaque template de preset intégré avec son nom, son titre, son nombre de composants et sa description. N’accepte aucune option en dehors de --help. N’a pas besoin de kikx.toml.
Preset templates:
k8s-web-app — Kubernetes web app (7 components)
A web frontend and an API behind ingresses, plus a background worker.
single-server — Single server with Ansible (7 components)
One DigitalOcean droplet, configured by a common role through a site playbook.
kubeadm-cluster — Kubernetes cluster with kubeadm (11 components)
Hetzner servers bootstrapped into a three-node control plane and three workers.
web-and-database — Web servers and a database (13 components)
Existing servers split into a web tier and a PostgreSQL primary with a replica.
multi-tier-platform — Multi-tier platform (35 components)
A storefront platform: edge load balancers, web/app tiers, PostgreSQL primary + replicas, Redis, monitoring and a Kubernetes cluster.
Start one with `kikx setup <name>`, or add it to a project with `kikx apply <name>`.
Le nom de la première colonne est celui qu’acceptent setup et apply. Les templates sont décrits dans Format des presets.
kikx setup¶
kikx setup [OPTIONS] <REFERENCE>
Effectue le rendu de chaque composant d’un preset dans le répertoire de sortie du preset, puis écrit kikx.toml.
Argument |
Description |
|---|---|
|
Nom de template (voir |
Option |
Type |
Valeur par défaut |
Description |
|---|---|---|---|
|
option sans valeur |
désactivée |
Écrase un |
Valeurs tirées de l’objet project du preset :
Clé de |
Source |
Lorsque |
|---|---|---|
|
|
nom du répertoire courant |
|
|
|
|
|
|
Condition |
Résultat |
|---|---|
|
Sortie |
La référence n’est ni un nom de template, ni une URL, ni un fichier existant |
Sortie |
Le preset ne peut pas être analysé |
Sortie |
Deux composants rendent le même chemin |
Sortie |
Un fichier cible existe, sans |
Sortie |
Sortie en cas de succès :
Initialized kikx project `multi-tier-platform` — wrote 77 file(s) to /home/user/demo/infra
/home/user/demo/infra/edge-hetzner.tf
...
Exemple, en partant d’un template :
kikx setup single-server
kikx apply¶
kikx apply [OPTIONS] <REFERENCE>
Effectue le rendu de chaque composant d’un preset dans le répertoire courant, ou dans --into. Ne lit ni n’écrit jamais kikx.toml. Le namespace est project.namespace du preset, sinon default. Le project.outputDir du preset n’est pas utilisé.
Argument |
Description |
|---|---|
|
Nom de template, URL ou chemin local vers un fichier de preset |
Option |
Type |
Valeur par défaut |
Description |
|---|---|---|---|
|
chemin |
répertoire courant |
Répertoire dans lequel écrire, joint au répertoire courant |
|
option sans valeur |
désactivée |
Écrase les fichiers existants |
Les conditions d’erreur sont celles de setup, sauf la vérification de kikx.toml.
Sortie en cas de succès :
Vendored 77 file(s):
/home/user/repo/vendor/edge-hetzner.tf
...
Exemple, en ajoutant un template à un dépôt existant :
kikx apply k8s-web-app --into deploy/k8s
Règles d’écriture¶
add, setup et apply valident chaque chemin rendu avant d’écrire le moindre fichier :
Les chemins absolus sont refusés.
Un chemin dont les composants
..remontent, à un moment quelconque, au-dessus du répertoire cible est refusé.Deux fichiers ayant le même chemin sont refusés.
Sans
--force, tout fichier cible existant arrête l’opération avant la première écriture.
Les répertoires parents sont créés au besoin.