On 29/10/2014 19:59, Jonathan Leroy wrote:
Bonsoir,
Un exemple concret : mise à jour de tous les serveurs disposants de PHP 5.5 vers sa dernière version (5.5.18). Dans l'outil en question, je recherche tous les serveurs sur lesquels PHP 5.5 est installé, et envoi aux clients concernés un email les informants de la mise à jour.
En fait, il me faudrait une sorte de intercom.io mais orienté admin sys :)
Hello Jonathan,
Je dirai que ça dépend un peu de ton inventaire actuel. Mais si tu as moyen d'avoir un export sauce YAML de tes associations client/serveur (ou encore plus simple, un fichier par host avec une variable pointant sur l'email du client), avec Ansible c'est plié rapidement.
Exemple, imaginons que pour chaque host, tu aies une variable 'email_client', et que les serveurs utilisent Apt, tu peux faire quelque chose dans ce genre là :
- name: Recupère la version du package voulu shell: "dpkg -s {{ package }} 2> /dev/null | grep 'Version' | cut -f2 -d' '" register: version
- name: Prévient les clients si une mise à jour est nécessaire local_action: mail host='smtp.server' port=25 subject="Mise à jour imminente" body="Version {{ version }} obsolete - màj en vue" from="jonathan@unsigned.inikup.com" to="{{ email_client }}" when: version_cible not in version.stdout and not do_it
- name: Effectue la mise à jour si demandé apt: name={{ package }} state=latest update_cache=yes when: do_it
Avec, coté ligne de commande :
# pour prévenir ansible-playbook upgrade.yml -e 'package=php5 version_cible=5.5.18 do_it=false'
# pour mettre à jour ansible-playbook upgrade.yml -e 'package=php5 version_cible=5.5.18 do_it=true'
Après, si tu veux juste prévenir le client après la mise à jour vers la dernière version, c'est encore plus simple :
- name: Effectue la mise à jour apt: name=php5 state=latest update_cache=yes notify: Prévenir client
(le handler de notification 'Prévenir client' étant globalement équivalent à l'envoi du mail ci-dessus).
et :
ansible-playbook upgrade.yml -e 'package=php5'
Bon, c'est fait à l'arrache sur un coin de nappe, et il y a plein de manière que ça foire, donc YMMV, mais tu vois l'idée.
A+
M