simondelamare …...principessurlesoutilsdegestiondeconfiguration...

37
Déploiement et configuration avec Ansible Simon Delamare Laboratoire de l’Informatique du Parallélisme Journée ARAMIS, 13 avril 2017 S. Delamare Déploiement et configuration avec Ansible ARAMIS 1 / 29

Upload: others

Post on 03-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Déploiement et configuration avec Ansible

Simon DelamareLaboratoire de l’Informatique du Parallélisme

Journée ARAMIS, 13 avril 2017

S. Delamare Déploiement et configuration avec Ansible ARAMIS 1 / 29

Page 2: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Introduction

S. Delamare Déploiement et configuration avec Ansible ARAMIS 2 / 29

Page 3: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Qu’est-ce qu’Ansible

Automatisation des tâches d’adminSur un parc de machinesDéployer des applications, configurer, gérer les services

Développement :https://github.com/ansible/ansibleÉcrit en python (les utilisateurs manipulent surtout du YAML)GPLv3Première version il y a 5 ans, version 2.2.1 il y a 3 mois

S. Delamare Déploiement et configuration avec Ansible ARAMIS 3 / 29

Page 4: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Principes sur les outils de gestion de configuration

“Recettes” de configuration centralisées, appliquées sur les machines(= noeuds)

Pas de config “à la main”

Fournit des modules de haut niveau pour manipulations courantes (vs.script shell) : Installation de paquets, gestion de servicesOn décrit l’état souhaité plutôt que les étapes pour y arriver (vs. scriptshell)

Idempotence : une recette aboutit au même résultat qu’on l’applique une ouplusieurs foisLes recettes doivent être écrites de cette façon pour que l’état soit stable

S. Delamare Déploiement et configuration avec Ansible ARAMIS 4 / 29

Page 5: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Principes sur les outils de gestion de configuration

“Recettes” de configuration centralisées, appliquées sur les machines(= noeuds)

Pas de config “à la main”

Fournit des modules de haut niveau pour manipulations courantes (vs.script shell) : Installation de paquets, gestion de services

On décrit l’état souhaité plutôt que les étapes pour y arriver (vs. scriptshell)

Idempotence : une recette aboutit au même résultat qu’on l’applique une ouplusieurs foisLes recettes doivent être écrites de cette façon pour que l’état soit stable

S. Delamare Déploiement et configuration avec Ansible ARAMIS 4 / 29

Page 6: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Principes sur les outils de gestion de configuration

“Recettes” de configuration centralisées, appliquées sur les machines(= noeuds)

Pas de config “à la main”

Fournit des modules de haut niveau pour manipulations courantes (vs.script shell) : Installation de paquets, gestion de servicesOn décrit l’état souhaité plutôt que les étapes pour y arriver (vs. scriptshell)

Idempotence : une recette aboutit au même résultat qu’on l’applique une ouplusieurs foisLes recettes doivent être écrites de cette façon pour que l’état soit stable

S. Delamare Déploiement et configuration avec Ansible ARAMIS 4 / 29

Page 7: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Rapport avec le devops ?

Centralisation des configurationsInfrastructure as a code: L’état d’une l’infra décrite par des recettesTravail en équipe (utilisation d’un VCS)Partage du savoir : Les devs connaissent l’env de prod, les opsconnaissent les modification à appliquer à la prod. avant le déploiementd’une appli.

AutomatisationMoins de tâches répétitives, manuelles → Raccourcir les cycles dedev./publication/déploiement/utilisationIl devient très plus simple d’instancier une plateforme de test

S. Delamare Déploiement et configuration avec Ansible ARAMIS 5 / 29

Page 8: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Les autres outils

Parmi les plus connus :CFEngineChefPuppetSaltAnsible

Avantages souvent cités pour Ansible :Simplicité :

Recette en YAMLRien à installer sur les noeudsMode push (par défaut): pas de serveur dédié

Complet : Description du parc machine, commandes ad-hoc, . . .Inconvénients :

Recettes : plus une succession de tâches à appliquer qu’une vision “hautniveau” du résultat souhaitéRisque de mauvaises pratiques, erreurs non détectéesPeut être plus lent (tâches appliquées individuellement au lieu d’être analyséesglobalement)

S. Delamare Déploiement et configuration avec Ansible ARAMIS 6 / 29

Page 9: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases d’Ansible

S. Delamare Déploiement et configuration avec Ansible ARAMIS 7 / 29

Page 10: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Installation

Installation, sur le poste de travail de l’utilisateur (le contrôleur) :

p ip i n s t a l l a n s i b l e

Installation, sur les noeuds : ssh, python

Pas d’agent, tout passe par SSH.

S. Delamare Déploiement et configuration avec Ansible ARAMIS 8 / 29

Page 11: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Installation

Installation, sur le poste de travail de l’utilisateur (le contrôleur) :

p ip i n s t a l l a n s i b l e

Installation, sur les noeuds : ssh, python

Pas d’agent, tout passe par SSH.

S. Delamare Déploiement et configuration avec Ansible ARAMIS 8 / 29

Page 12: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Installation

Installation, sur le poste de travail de l’utilisateur (le contrôleur) :

p ip i n s t a l l a n s i b l e

Installation, sur les noeuds : ssh, python

Pas d’agent, tout passe par SSH.

S. Delamare Déploiement et configuration avec Ansible ARAMIS 8 / 29

Page 13: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Inventaire

Fichier avec la liste des noeuds gérés par Ansible

web . example . orgdb . example . org

S. Delamare Déploiement et configuration avec Ansible ARAMIS 9 / 29

Page 14: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Inventaire

Fichier avec la liste des noeuds gérés par AnsibleOrganisés en groupes

[ w eb s e r v e r s ]web1 . example . orgweb2 . example . org

[ d b s e r v e r s ]db1 . example . orgdb2 . example . org

S. Delamare Déploiement et configuration avec Ansible ARAMIS 10 / 29

Page 15: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Inventaire

Fichier avec la liste des noeuds gérés par AnsibleOrganisés en groupesAssociés à des variables

[ w eb s e r v e r s ]web1 . example . orgweb2 . example . org

[ d b s e r v e r s ]db1 . example . org master=t r u edb2 . example . org

[ web s e r v e r s : v a r s ]h t tp_por t=80

S. Delamare Déploiement et configuration avec Ansible ARAMIS 11 / 29

Page 16: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Modules

Unité de base pour la réalisation d’une tâche sur un noeud.Abstraction par Ansible

Exemples : apt, yum, service, shell, copy, template, file, lineinfile, cron,user. . .Liste des modules (et leurs arguments):

http://docs.ansible.com/ansible/modules_by_category.html

a n s i b l e a l l −m apt −a pkg=vima n s i b l e web s e r v e r s −m copy −a s r c=~/ i ndex . html d e s t=/va r /www/ index . htmla n s i b l e db1 . example . org −m s h e l l −a " ps aux "

S. Delamare Déploiement et configuration avec Ansible ARAMIS 12 / 29

Page 17: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Démo 1

S. Delamare Déploiement et configuration avec Ansible ARAMIS 13 / 29

Page 18: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Playbooks

Fichier décrivant l’application d’une opérationtâches à appliquer sur certains noeuds

− ho s t s : web s e r v e r sv a r s :

h t tp_por t : 80t a s k s :

− name : I n s t a l l Apacheapt : pkg=apache2 s t a t e=p r e s e n t

− name : I n s t a l l d e f a u l t i nd ex . htmlcopy : s r c=index . html d e s t=/va r /www/ index . html

S. Delamare Déploiement et configuration avec Ansible ARAMIS 14 / 29

Page 19: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Playbooks

Fichier décrivant l’application d’une opérationtâches à appliquer sur certains noeudshandlers: tâches à appliquer en cas de changement

− ho s t s : web s e r v e r sv a r s :

h t tp_por t : 80t a s k s :

− name : I n s t a l l Apacheapt : pkg=apache2 s t a t e=p r e s e n t

− name : Copy d e f a u l t i nd e x . htmlcopy : s r c=index . html d e s t=/va r /www/ index . html

− name : Setup d e f a u l t c o n f i g u r a t i o nt emp la t e : s r c=apache . con f . j 2 d e s t=/e t c / apache2 / s i t e−enab l ed/000− d e f a u l t . con fn o t i f y : Re load apache

h a nd l e r s :− name : Re load apache

s e r v i c e : name=apache2 s t a t e=r e l o a d ed

template: génère (et copie) un fichier “paramétrisé”:Utilise jinja2conditions, boucles, etc.

S. Delamare Déploiement et configuration avec Ansible ARAMIS 15 / 29

Page 20: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Playbooks

Fichier décrivant l’application d’une opérationtâches à appliquer sur certains noeudshandlers: tâches à appliquer en cas de changement

− ho s t s : web s e r v e r sv a r s :

h t tp_por t : 80t a s k s :

− name : I n s t a l l Apacheapt : pkg=apache2 s t a t e=p r e s e n t

− name : Copy d e f a u l t i nd e x . htmlcopy : s r c=index . html d e s t=/va r /www/ index . html

− name : Setup d e f a u l t c o n f i g u r a t i o nt emp la t e : s r c=apache . con f . j 2 d e s t=/e t c / apache2 / s i t e−enab l ed/000− d e f a u l t . con fn o t i f y : Re load apache

h a nd l e r s :− name : Re load apache

s e r v i c e : name=apache2 s t a t e=r e l o a d ed

template: génère (et copie) un fichier “paramétrisé”:Utilise jinja2conditions, boucles, etc.

S. Delamare Déploiement et configuration avec Ansible ARAMIS 15 / 29

Page 21: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Playbooks

template: génère (et copie) un fichier “paramétrisé”:Utilise jinja2conditions, boucles, etc.

<V i r t u a lHo s t ∗ : {{ ht tp_por t }} >ServerAdmin webmas t e r@ loca l ho s tDocumentRoot / va r /www/<D i r e c t o r y "/ va r /www/">

A l l owOve r r i d e A l l</D i r e c t o r y >

</V i r t u a lHo s t >

S. Delamare Déploiement et configuration avec Ansible ARAMIS 16 / 29

Page 22: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Rôles

Organisation fonctionnelle des playbooksPlaybook trop grosRéutilisation

r o l e s /apache−s e r v e r /

t a s k s /main . yml

h a nd l e r s /main . yml

f i l e s /i ndex . html

t emp la t e /apache . con f . j 2

Ansible Galaxy (https://galaxy.ansible.com/) : Dépot de rôles prêts à l’emploi

S. Delamare Déploiement et configuration avec Ansible ARAMIS 17 / 29

Page 23: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Rôles

Organisation fonctionnelle des playbooksPlaybook trop grosRéutilisation

r o l e s /apache−s e r v e r /

t a s k s /main . yml

h a nd l e r s /main . yml

f i l e s /i ndex . html

t emp la t e /apache . con f . j 2

Ansible Galaxy (https://galaxy.ansible.com/) : Dépot de rôles prêts à l’emploi

S. Delamare Déploiement et configuration avec Ansible ARAMIS 17 / 29

Page 24: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Rôles

organisation fonctionnelle des playbooksappelés depuis un playbook de plus haut niveau

− ho s t s : web s e r v e r sr o l e s :

− apache−s e r v e r− example−web s i t e

S. Delamare Déploiement et configuration avec Ansible ARAMIS 18 / 29

Page 25: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Rôles

organisation fonctionnelle des playbooksappelés depuis un playbook de plus haut niveau

− ho s t s : web s e r v e r sr o l e s :

− common−admin−t o o l s− common−mon i to r ing−t o o l s− apache−s e r v e r− example−web s i t e

− ho s t s : d b s e r v e r sr o l e s :

− common−admin−t o o l s− common−mon i to r ing−t o o l s− po s t g r e s−s e r v e r

S. Delamare Déploiement et configuration avec Ansible ARAMIS 19 / 29

Page 26: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Rôles

organisation fonctionnelle des playbooksappelés depuis un playbook de plus haut niveau

− ho s t s : a l lr o l e s :

− common−admin−t o o l s− common−mon i to r ing−t o o l s

− ho s t s : web s e r v e r s− apache−s e r v e r− example−web s i t e

− ho s t s : d b s e r v e r sr o l e s :

− po s t g r e s−s e r v e r

S. Delamare Déploiement et configuration avec Ansible ARAMIS 20 / 29

Page 27: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Variables

Noeud associé à des variablesPeuvent être définies, dans l’inventaire, le playbook, les rôles, les facts

facts : variables générées dynamiquement avec des informations sur lamachine :

ansible_distribution_releaseansible_default_ipv4.addressansible_memtotal_mb. . .

S. Delamare Déploiement et configuration avec Ansible ARAMIS 21 / 29

Page 28: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Variables

Noeud associé à des variablesPeuvent-être définies, dans l’inventaire, le playbook, les rôles, les factsUtilisées dans les playbooks :

− name : I n s t a l l a t i o n du paquet fooapt : name=foo={{ f o o_v e r s i o n }}

− name : Demarrage du s e r v i c e redundants e r v i c e : name=redundant s t a t e=s t a r t e dwhen : " not ba ckup s e r v e r "

Ou dans les templates

#backpo r t . l i s t . j 2deb ht tp : // f t p . f r . deb i an . org / deb i an {{ a n s i b l e _ d i s t r i b u t i o n _ r e l e a s e }}−backpo r t s main

Il est possible d’accéder aux groupes et aux variables des autres noeuds

S. Delamare Déploiement et configuration avec Ansible ARAMIS 22 / 29

Page 29: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Variables

Noeud associé à des variablesPeuvent-être définies, dans l’inventaire, le playbook, les rôles, les factsUtilisées dans les playbooks :

− name : I n s t a l l a t i o n du paquet fooapt : name=foo={{ f o o_v e r s i o n }}

− name : Demarrage du s e r v i c e redundants e r v i c e : name=redundant s t a t e=s t a r t e dwhen : " not ba ckup s e r v e r "

Ou dans les templates

#backpo r t . l i s t . j 2deb ht tp : // f t p . f r . deb i an . org / deb i an {{ a n s i b l e _ d i s t r i b u t i o n _ r e l e a s e }}−backpo r t s main

Il est possible d’accéder aux groupes et aux variables des autres noeuds

S. Delamare Déploiement et configuration avec Ansible ARAMIS 22 / 29

Page 30: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Variables

Noeud associé à des variablesPeuvent-être définies, dans l’inventaire, le playbook, les rôles, les factsUtilisées dans les playbooks :

− name : I n s t a l l a t i o n du paquet fooapt : name=foo={{ f o o_v e r s i o n }}

− name : Demarrage du s e r v i c e redundants e r v i c e : name=redundant s t a t e=s t a r t e dwhen : " not ba ckup s e r v e r "

Ou dans les templates

#backpo r t . l i s t . j 2deb ht tp : // f t p . f r . deb i an . org / deb i an {{ a n s i b l e _ d i s t r i b u t i o n _ r e l e a s e }}−backpo r t s main

Il est possible d’accéder aux groupes et aux variables des autres noeuds

S. Delamare Déploiement et configuration avec Ansible ARAMIS 22 / 29

Page 31: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Bases : Variables

Il est possible d’accéder aux groupes et aux variables des autres noeuds:

#dhcpd . con f . j 2

group {{% f o r hos t i n g roups [ ' dh c p c l i e n t s ' ] | s o r t %}

hos t {{ hos t }} {hardware e t h e r n e t {{ h o s t v a r s [ ho s t ] [ ' macaddr ' ] }} ;f i x e d−add r e s s {{ hos t }} .{{ domain }} ;

}{% end f o r %}}

S. Delamare Déploiement et configuration avec Ansible ARAMIS 23 / 29

Page 32: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Démo 3

S. Delamare Déploiement et configuration avec Ansible ARAMIS 24 / 29

Page 33: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Exemple au LIP

S. Delamare Déploiement et configuration avec Ansible ARAMIS 25 / 29

Page 34: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Gestion de l’infrastructure du LIP

Environ 120 noeuds gérés20 groupes, 46 rôlesRecettes dans dépôt Git : collaborer, suivre les évolutions, revenir enarrièreY compris les secrets (mot de passe, etc.), chiffrésGénération automatique de pages d’information aux utilisateursGestion dynamique de l’inventaire (module maison)Intégration à Vagrant

S. Delamare Déploiement et configuration avec Ansible ARAMIS 26 / 29

Page 35: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Démo 4

S. Delamare Déploiement et configuration avec Ansible ARAMIS 27 / 29

Page 36: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Conclusion

S. Delamare Déploiement et configuration avec Ansible ARAMIS 28 / 29

Page 37: SimonDelamare …...Principessurlesoutilsdegestiondeconfiguration “Recettes”deconfigurationcentralisées,appliquéessurlesmachines (=noeuds) Pasdeconfig“àlamain

Conclusion

Ansible : Gestion des configurations, déploiement d’application,automatisation, gestion du parc de machines

S’inscrit pleinement dans une démarche devopsUn survol des fonctionnalités

Vault, gestion de machines Windows et d’équipement réseau, les UI, lemode pull, etc.Mais on peut déjà faire beaucoup

À essayer !

S. Delamare Déploiement et configuration avec Ansible ARAMIS 29 / 29