Dans ce blog, nous prendrons un simple script de mise à jour du serveur Ansible et le transformerons en un Système de mise à jour basé sur les risques. Ici, les serveurs présentant le risque le plus faible sont corrigés en premier, ce qui nous donne la possibilité de tester de manière approfondie avant de passer à des systèmes plus prioritaires.
La sauce secrète ? Mise en place de groupes bien définis pour que ce flux se déroule de manière transparente. Mais la vraie question est la suivante : pouvons-nous y parvenir sans apporter de modifications majeures à notre script Ansible par rapport à la dernière fois ? Découvrons-le !
Le fichier hôte est au cœur de ce changement. Dans le dernier article, nous avons utilisé un fichier statique regroupé par types de serveurs. Nous ajoutons désormais une deuxième couche de regroupement par niveau de risque, ce qui ajoute une certaine complexité au fichier hôte.
Mais voici le problème : et si notre fichier hôte pouvait être généré dynamiquement à partir d'une source plus générique ? Cela garderait les choses flexibles et nous éviterait une édition de fichiers sans fin !
Ansible peut fonctionner avec des fichiers hôtes créés dynamiquement, ce qui nous offre un moyen plus flexible de suivre les serveurs. Dans cet exemple, nous utiliserons un fichier Excel pour organiser nos hôtes.
Exemple de structure hosts_data.xlsx :
Host Name | Server Environment | Ansible User | Server Type | DNS | Notes |
---|---|---|---|---|---|
mint | dev | richard | desktop | desktop.sebostech.LOCAL | Mint desk top |
ansible_node | dev | ansible_admin | Ansible | ansible_node.sebostech.local | Development server; Only updates monthly |
clone_master | dev | ansible_admin | clone | clone.dev.sebostech.local | Development server; Only updates monthly |
mele | staging | richard | nas | nas.stage.sebostech.local | Testing server; Used for application testing |
pbs | production | root | backup server | pbs.prod.sebostech.local | Testing server; Used for application testing |
pve | production | root | hypervisor | api.stage.sebostech.local | Testing server; Used for application testing |
samba | production | richard | nas | nas.prod.sebostech.local | Critical server; Requires daily backup |
firewall | production | richard | firewall | firewall.sebostech.local | Critical server; Requires daily backup |
La plupart des services informatiques ont déjà une liste de serveurs cachée dans un fichier Excel, alors pourquoi ne pas en faire bon usage ? Cette approche permet de garder facilement nos hôtes Ansible organisés et à jour sans mises à jour manuelles constantes.
Mais comment Ansible utilise-t-il le fichier Excel ? Voyons comment nous pouvons transformer ces données en un inventaire dynamique utilisable !
## This will run agains all host ansible-playbook -i dynamic_inventory.py playbook.yml
Vous pouvez également utiliser l'option de variables d'environnement pour cibler des groupes spécifiques, en fonction de l'environnement du serveur, du type de serveur ou même d'une combinaison des deux :
## Just production SERVER_ENVIRONMENT="production" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## Just nas SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## production nas SERVER_ENVIRONMENT="production" SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"
Besoin de nouveaux groupes ? Mettez simplement à jour le fichier Excel et ajustez le script Python en conséquence, aussi simple que cela !
Pour un aperçu du code Python, voir ici.
Lorsque j'ai commencé à utiliser Ansible, le fichier hosts était mon outil de prédilection. Mais à mesure que j'ajoutais plus de serveurs, en particulier ceux à double rôle, ce fichier devenait de plus en plus complexe.
Pourriez-vous utiliser un fichier hosts traditionnel pour y parvenir ? Bien sûr, mais il y a quelques inconvénients.
Avec un fichier hosts, vous vous retrouverez probablement avec des entrées en double ou des variables supplémentaires pour capturer toute la structure dont vous avez besoin. Un fichier Excel, en revanche, fournit une structure propre et facile à entretenir qui permet de garder les choses organisées.
Dans un environnement d'entreprise, il y a de fortes chances qu'il existe déjà au moins un fichier Excel avec une liste de serveurs, alors pourquoi ne pas en profiter ?
Si vous souhaitez que j'approfondisse le code Python, faites-le-moi savoir !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!