simondelamare …...principessurlesoutilsdegestiondeconfiguration...

Post on 03-Jun-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Introduction

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

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

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

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

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

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

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

Bases d’Ansible

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

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

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

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

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

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

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

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

Démo 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Démo 3

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

Exemple au LIP

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

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

Démo 4

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

Conclusion

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

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

top related