Metadata-Version: 2.4
Name: ansibase
Version: 1.0.0
Summary: Inventaire Ansible dynamique avec PostgreSQL
Author: mbecode
License-Expression: GPL-3.0
Project-URL: Homepage, https://github.com/MbeHenri/ansibase.git
Project-URL: Repository, https://github.com/MbeHenri/ansibase.git
Keywords: ansible,inventory,postgresql,dynamic-inventory
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: System Administrators
Classifier: Topic :: System :: Systems Administration
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: SQLAlchemy<3.0,>=2.0
Requires-Dist: psycopg2-binary<3.0,>=2.9
Requires-Dist: pyyaml>=6.0
Requires-Dist: alembic<2.0,>=1.12
Provides-Extra: ansible
Requires-Dist: ansible-core>=2.15; extra == "ansible"

# Ansibase

Inventaire Ansible dynamique avec PostgreSQL.

## Installation

```bash
# -- Core uniquement
pip install ansibase

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

En utilisant le code source

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

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

## Utilisation

### En tant que bibliothèque Python

```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()
```

### Script d'inventaire dynamique

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

# Variables d'un hôte
ansibase-inventory --host monserveur --config ansibase.ini
```

### Plugin Ansible

Ajouter dans `ansible.cfg` :

```ini
[defaults]
inventory_plugins = <chemin_vers_site-packages>/ansibase/ansible

[inventory]
enable_plugins = ansibase-ansible, auto
```

`<chemin_vers_site-packages>` peut etre obtenu en utilisant la commande

```bash
python -c "from pathlib import Path; import ansibase.ansible; print(Path(ansibase.ansible.__file__).parent.parent.parent)"
```

Puis utiliser avec un fichier `ansibase.yml` :

```yaml
plugin: ansibase-ansible
host: localhost
port: 5432
database: ansibase
user: ansibase
password: "mon_mot_de_passe"
encryption_key: "ma_cle"
```
