Skip to content

Courouge/pytools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐍 PyTools - Collection d'Outils Python

Python License Status

Une collection d'outils Python pratiques pour l'administration système, la gestion d'infrastructure et la simulation de données.

🎯 Vue d'Ensemble

Ce projet contient 3 outils spécialisés :

Outil Objectif Cas d'usage
🔧 Ansible Hosts Aliases Génération d'alias SSH depuis inventaires Ansible Environnements multi-plateformes
🛡️ Jumper SSH Exécution de commandes via bastion SSH Infrastructures sécurisées
📊 Topics Partitions Generator Simulation de métadonnées Kafka Tests et développement Kafka

🚀 Installation Rapide

# Cloner le projet
git clone <votre-repo>
cd pytools

# Installer toutes les dépendances
pip install -r requirements.txt

# Ou installer individuellement selon vos besoins
pip install ansible      # Pour ansible_hosts_aliases
pip install paramiko     # Pour jumper
pip install names_generator  # Pour topicspartitions_generator

📋 Table des Matières

🔧 Outils Disponibles

Ansible Hosts Aliases

Fichier: ansible_hosts_aliases.py

Un outil qui automatise la création d'alias SSH à partir d'inventaires Ansible. Parfait pour les environnements multi-plateformes avec de nombreux serveurs.

✨ Fonctionnalités :

  • 🔍 Scan automatique des inventaires Ansible (.ini)
  • 🏷️ Génération d'alias SSH intelligents
  • 🎯 Format d'alias hiérarchique : client.techno.host
  • 🔄 Compatible Ansible 2.4+ et versions récentes
  • ⚡ Autocomplétion facilitée pour naviguer entre environnements

📁 Structure d'inventaire supportée :

Inventories_Folder/
├── client1/
│   ├── techno1.ini
│   └── techno2.ini
├── client2/
│   ├── techno1.ini
│   ├── techno2.ini
│   └── techno3.ini
└── client3/
    └── techno1.ini

🎯 Exemple d'utilisation :

python ansible_hosts_aliases.py /home/dev/workspace/inventories-projet ~/.bash_aliases

Génère des alias comme :

alias client1.techno1.host1='ssh 192.168.1.10'
alias client2.techno1.host5='ssh 10.0.0.15'

Jumper SSH

Fichier: jumper.py

Un module Python pour exécuter des commandes sur des serveurs distants via un bastion SSH. Idéal pour les infrastructures sécurisées avec des serveurs non directement accessibles.

✨ Fonctionnalités :

  • 🛡️ Connexion SSH via bastion (jump host)
  • ⚡ Exécution de commandes distantes
  • 🔐 Support des clés SSH via ssh-agent
  • 🔄 Gestion automatique des connexions
  • 📦 API simple et réutilisable

📋 Prérequis :

pip install paramiko

🎯 Exemple d'utilisation :

from jumper import jumper

# Connexion via bastion avec tous les paramètres
result = jumper('bastion.example.com', 'bastion_user', 22, 
                'target.internal', 'root', 22, 'ls /')

# Utilisation simplifiée (ports par défaut)
result = jumper('bastion.example.com', 'bastion_user', 
                'target.internal', 'ls /')

print(result)
# ['bin\n', 'boot\n', 'dev\n', 'etc\n', 'lib\n']

Topics Partitions Generator

Fichier: balance_data/topicspartitions_generator.py

Un générateur de métadonnées pour topics et partitions Kafka. Utile pour simuler des environnements Kafka ou générer des données de test.

✨ Fonctionnalités :

  • 📊 Génération aléatoire de topics Kafka
  • 🎲 Simulation de partitions avec répartition équilibrée
  • 🔄 Rotation automatique des leaders sur les brokers
  • 📏 Tailles de partitions configurables
  • 🏷️ Noms de topics générés automatiquement

⚙️ Configuration :

nb_of_topics = 10                    # Nombre de topics à générer
broker_nodes = ["1", "2", "3"]       # IDs des brokers
min_size_partition = 10000           # Taille minimale des partitions
max_size_partition = 1000000         # Taille maximale des partitions
min_partition = 1                    # Nombre minimum de partitions par topic
max_partition = 5                    # Nombre maximum de partitions par topic

📋 Prérequis :

cd balance_data
pip install -r requirements.txt

🎯 Exemple de sortie :

Topic: awesome_chatelet, Partition: 0, Leader: 1, Replicas: ['1', '2', '3'], Size: 564806
Topic: awesome_chatelet, Partition: 1, Leader: 2, Replicas: ['2', '3', '1'], Size: 564806
Topic: cool_darwin, Partition: 0, Leader: 3, Replicas: ['3', '1', '2'], Size: 123456

🚀 Installation

Prérequis Généraux

  • Python 3.6+
  • Ansible (pour l'outil ansible_hosts_aliases)

Installation des Dépendances

Pour l'outil Jumper SSH :

pip install paramiko

Pour l'outil Topics Partitions Generator :

cd balance_data
pip install -r requirements.txt

Pour l'outil Ansible Hosts Aliases :

pip install ansible

💡 Utilisation

Ansible Hosts Aliases

# Générer les alias à partir des inventaires Ansible
python ansible_hosts_aliases.py /path/to/inventories ~/.bash_aliases

# Recharger les alias
source ~/.bash_aliases

# Utiliser l'autocomplétion
client1.techno1.[TAB]

Jumper SSH

# Importer le module
from jumper import jumper

# Exécuter une commande via bastion
result = jumper('bastion_ip', 'bastion_user', 'target_ip', 'commande')

# Traiter les résultats
for line in result:
    print(line.strip())

Topics Partitions Generator

cd balance_data
python topicspartitions_generator.py

🛡️ Sécurité

  • Jumper SSH : Assurez-vous que vos clés SSH sont chargées dans ssh-agent
  • Ansible Hosts Aliases : Vérifiez les permissions des fichiers d'inventaire
  • Tous les outils : Testez d'abord sur des environnements de développement

🤝 Contribution

Les contributions sont les bienvenues ! Ces outils sont conçus pour être :

  • Fonctionnels : Ils marchent immédiatement
  • 🔧 Modulaires : Facilement adaptables
  • 📚 Documentés : Avec des exemples clairs
  • 🧪 Testables : Sur des environnements de dev

📄 License

Ce projet est distribué sous licence libre. Utilisez, modifiez et partagez selon vos besoins.


Développé avec ❤️ pour simplifier la gestion d'infrastructure et l'administration système.

About

python geek tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages