From fec75022f26dd2a652adb15dfd0ebc613a087824 Mon Sep 17 00:00:00 2001 From: Vincent Mazenod <vmazenod@gmail.com> Date: Wed, 19 Dec 2018 16:59:57 +0100 Subject: [PATCH] ansible --- content/slides/cri/md/ansible.md | 174 +++++++++++++++++++++++-------- 1 file changed, 130 insertions(+), 44 deletions(-) diff --git a/content/slides/cri/md/ansible.md b/content/slides/cri/md/ansible.md index 475ec30..8ed310e 100644 --- a/content/slides/cri/md/ansible.md +++ b/content/slides/cri/md/ansible.md @@ -23,6 +23,8 @@ * marche bien en python 3 * virtualenv +* [ansible docs](https://docs.ansible.com/) + ## ansible @@ -42,50 +44,119 @@ ## terminologie * **mgmt node** (machine pilote) machine surlaquelle ansible est installé et responsable de la configuration de toutes les machines gérées. -* **Inventory** (inventaire) fichier contenant les ip de tous les serveurs à configurer -* **Playbook** gère la configuration à déployer sur chaque serveur -* **Task** fichier où sont définies les actions réalisées par le playbook -* **Module** actions plus ou moins complexe utilisables à partir des **tasks**. ansible possède de [nombreux modules natifs](https://docs.ansible.com/ansible/latest/modules/modules_by_category.html). Il est possible d'écrire ses propres modules. -* **Role** permet d'organiser les playbooks en parties claires et réutilisables -* **Play** est l'exécution d'un playbook sur un serveur -* **Facts** information collectée par ansible sur le système du serveur à configurer -* **Handlers** similaire aux **tasks** mais appelable à partir d'une **task** (redémarrage de service par exemple) - - -ansible all --inventory-file=inventory.ini --module-name ping -u root - -* modules - -* task - * register - * debug - * loop - * set_fact - * pre_task -* roles - -* playbook - * ligne de commande - * --check --diff - * verbosité - * tags - -* variable (see debug task) - * hierarchie - * from env ou Vault - * acces dynamique - * ansible-vault : utiliser vault - * https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html -* plugin - * callback - * filter - * lookup -* modules ansible utile - * pexpect -* remote roles - - -* skeleton https://github.com/mrjk/ansible-skel +* **inventory** (inventaire) fichier contenant les ip de tous les serveurs à configurer +* **playbook** gère la configuration à déployer sur chaque serveur +* **task** fichier où sont définies les actions réalisées par le playbook + + +## terminologie + +* **module** actions plus ou moins complexe utilisables à partir des **tasks**. ansible possède de [nombreux modules natifs](https://docs.ansible.com/ansible/latest/modules/modules_by_category.html). Il est possible d'écrire ses propres modules. +* **role** permet d'organiser les playbooks en parties claires et réutilisables + + +## terminologie + +* **play** est l'exécution d'un playbook sur un serveur +* **facts** information collectée par ansible sur le système du serveur à configurer +* **handlers** similaire aux **tasks** mais appelable à partir d'une **task** (redémarrage de service par exemple) + + +## inventory + +* fichier texte au format *ini* +* organiser par groupes +* [inventory docs](https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html) + +```ini +localhost ansible_connection=local + +[webservers] +jumper ansible_port=5555 ansible_host=192.0.2.50 +bar.example.com ansible_user=limosadm + +[dbservers] +one.example.com +two.example.com +www[03:10].example.com +``` + + +## ansible / ad-hoc command + +``` +$ ansible all --inventory-file=inventory.ini \ + --module-name ping -u root +$ ansible atlanta -a "/usr/bin/foo" \ + -u username --become --become-user \ + otheruser --ask-become-pass +``` + +* [docs ad-hoc command](https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html) + * shell + * packages + * users / groups + * déploiement (git) + * services + + +## playbook + +[docs playbooks](https://docs.ansible.com/ansible/latest/user_guide/playbooks.html) + +* ligne de commande +* --check --diff +* verbosité + + +## variable + +* hierarchie +* from env ou Vault +* acces dynamique +* ansible-vault : utiliser vault +* https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html + + +## task / basic + +* debug +* raw +* shell +* command + + +## task / basic + +* register +* loop +* set_fact +* pre_task +* when +* tags + + +## modules + +* file +* infile +* copy +* template +* package +* stat +* get_url +* unarchive +* user +* systemd +* pip +* pexpect (require pexcpect) + + +## roles + + +## remote roles + ### Récupérer les roles nécessaires @@ -96,3 +167,18 @@ ansible all --inventory-file=inventory.ini --module-name ping -u root ``` ansible-galaxy install -f -r requirements.yml -p ansible/roles/public ``` + + +## plugins + +* callback +* filter +* lookup +* module_utils + + +## skeleton +https://github.com/mrjk/ansible-skel + + +## ansible.cfg -- GitLab