Skip to main content

Inventaire Ansible dynamique avec PostgreSQL

Project description

Ansibase

Inventaire Ansible dynamique avec PostgreSQL. Fournit un constructeur d'inventaire, le chiffrement des variables sensibles via pgcrypto, et une CLI de gestion des hotes, groupes et variables.

Installation

# -- Core uniquement
pip install ansibase

# -- Avec le plugin et script Ansible
pip install ansibase[ansible]

En utilisant le code source :

# -- Core uniquement
pip install -e packages/ansibase

# -- Avec le plugin et script Ansible
pip install -e "packages/ansibase[ansible]"

Utilisation

En tant que bibliotheque Python

from ansibase import Database, DatabaseConfig, PgCrypto, InventoryBuilder

config = DatabaseConfig(host="localhost", port=5432, database="ansibase", user="ansibase", password="ansibase")
db = Database(config)
crypto = PgCrypto("ma_cle_de_chiffrement")

session = db.get_session()
builder = InventoryBuilder(session, crypto)
inventory = builder.build()

CLI de gestion (ansibase-manage)

Gestion des hotes, groupes et variables directement depuis le terminal.

ansibase-manage --help
ansibase-manage -c ansibase.ini host list
ansibase-manage --json group list --tree

Hotes (host)

Commande Description
host list Lister les hotes (--active/--inactive, --group, --search)
host show <ref> Details d'un hote (info, groupes, variables). --reveal pour les valeurs sensibles
host create <name> Creer un hote (--description, --inactive)
host update <ref> Modifier un hote (--name, --description, --active/--inactive)
host delete <ref> Supprimer un hote (--yes pour confirmer)
host add-group <ref> <group> Ajouter un hote a un groupe
host remove-group <ref> <group> Retirer un hote d'un groupe
host set-var <ref> <key> <value> Assigner une variable a un hote (upsert)
host unset-var <ref> <key> Retirer une variable d'un hote
host import <fichier.yml> Importer des hotes et variables depuis un fichier YAML

Groupes (group)

Commande Description
group list Lister les groupes (--tree pour l'arborescence)
group show <ref> Details d'un groupe. --inherited pour les variables heritees
group create <name> Creer un groupe (--description, --parent)
group update <ref> Modifier un groupe (--name, --description, --parent)
group delete <ref> Supprimer un groupe (--yes). all et ungrouped sont proteges
group set-var <ref> <key> <value> Assigner une variable a un groupe (upsert)
group unset-var <ref> <key> Retirer une variable d'un groupe
group import <fichier.yml> Importer des groupes au format inventaire Ansible

Variables (var)

Commande Description
var list Lister le catalogue (--sensitive, --builtin, --type)
var create <var_key> Creer une variable (--description, --sensitive, --type, --default, --regex)
var update <ref> Modifier les metadonnees d'une variable
var delete <ref> Supprimer une variable (--force pour les builtins)

<ref> accepte un ID numerique ou un nom (hostname, group name, var_key).

Import YAML

Import d'hotes — format plat (un hote, --name optionnel) ou multi-hotes :

# Format plat (web01.yml) — hostname deduit du nom de fichier
ansible_host: 192.168.1.10
ansible_user: deploy

# Format multi-hotes (hosts.yml)
web01.example.com:
  ansible_host: 192.168.1.10
web02.example.com:
  ansible_host: 192.168.1.11
ansibase-manage host import web01.yml
ansibase-manage host import hosts.yml --dry-run

Import de groupes — format inventaire Ansible avec hosts, vars et children :

webservers:
  hosts:
    web01.example.com:
      ansible_host: 192.168.1.10
  vars:
    http_port: 80
  children:
    frontend:
      hosts:
        web01.example.com:
ansibase-manage group import inventory.yml

Script de migrations (ansibase-db)

# Appliquer les migrations
ansibase-db upgrade --config ansibase.ini

# Voir les migrations
ansibase-db history --config ansibase.ini

Script d'inventaire dynamique (ansibase-inventory)

# Lister l'inventaire complet
ansibase-inventory --list --config ansibase.ini

# Variables d'un hote
ansibase-inventory --host monserveur --config ansibase.ini

Plugin Ansible (ansibase_ansible)

Ajouter dans ansible.cfg :

[defaults]
inventory_plugins = ./inventory_plugins

[inventory]
enable_plugins = ansibase_ansible, auto

Creer le lien symbolique du plugin dans votre repertoire des plugins :

ln -s $(python -c "from pathlib import Path; import ansibase.ansible; print(Path(ansibase.ansible.__file__).parent)")/ansibase_ansible.py inventory_plugins/ansibase_ansible.py

Puis utiliser avec un fichier ansibase.yml :

plugin: ansibase_ansible
host: localhost
port: 5432
database: ansibase
user: ansibase
password: "mon_mot_de_passe"
encryption_key: "ma_cle"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansibase-1.0.4.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ansibase-1.0.4-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file ansibase-1.0.4.tar.gz.

File metadata

  • Download URL: ansibase-1.0.4.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ansibase-1.0.4.tar.gz
Algorithm Hash digest
SHA256 bfcff53acffa6ee034e9bdf2b799e3c6f2575389eec9a612da5ac20a80d5d6de
MD5 799bef25af3da2a1172caf2e364e5a90
BLAKE2b-256 78208f3ce962cb2f265101611f797bf9dcef404b08764fb1d34790ac89273054

See more details on using hashes here.

File details

Details for the file ansibase-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: ansibase-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ansibase-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 658d53772d14029d13646d924ed72756d22687ac02cc6373dca8a71ab363d53a
MD5 f3d7daec45933d092a63e96c15a19df5
BLAKE2b-256 0c35f28f634d4549cc085ce7ddc7d995c18877307de94d9425f3c29743b71a8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page