meetup ansible montrÉal mmeeeettuupp …people.redhat.com/.../avril2017/meetup-ansible.pdf ·...

36
MEETUP ANSIBLE MEETUP ANSIBLE MEETUP ANSIBLE MEETUP ANSIBLE MEETUP ANSIBLE MEETUP ANSIBLE MONTRÉAL MONTRÉAL MONTRÉAL MONTRÉAL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE AU SEIN D'UNE ÉQUIPE DE SYSADMINS mercredi 12 avril 2017, par Grégory Colpart

Upload: others

Post on 19-Jul-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

MEETUPANSIBLEMEETUPANSIBLEMEETUPANSIBLEMEETUPANSIBLEMEETUPANSIBLEMEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLE

MEETUPANSIBLEMEETUPANSIBLE

MONTRÉALMONTRÉALMONTRÉALMONTRÉALMONTRÉALMONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉAL

MONTRÉALMONTRÉALADOPTIOND'ANSIBLE

AUSEIND'UNEÉQUIPEDESYSADMINSmercredi12avril2017,parGrégoryColpart

Page 2: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

Infogérance/Hébergement/InfonuagiqueManagedHostingProviderLinux,infraweb,HA,Ansible,DockerUneéquipeàMontréal+enFrance(24/7)Clients:agencesweb,SaaS,médias

Page 3: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

MÉTIERD'EVOLIXUnecentained'infraclientsUnàplusieursdizainesdeserveursparinfraTotald'environ700serveurshétérogènesinfogérésServeursDebian/BSDCultureSysAdmin:shell,100%outilslibres

Page 4: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

HISTORIQUE:COMMENTINSTALLERUNSERVEUR?

toutàlamaincopier/collerchecks(evocheck)scriptshellprivé(evolinuxv1)

Page 5: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE
Page 6: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

AUTOMATION?(Tempsd'unetâche)×(nombred'exécution)VS

Tempsd'automatisation

Page 7: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2013:GESTIOND'UNEINFRACLIENTAVECPUPPET

Page 8: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2014:PLAYBOOKANSIBLEPOURDESPETITESTÂCHESPONCTUELLES

ajoutd'unenouvelleadresseIPsurtousnosserveurs

Page 9: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

DÉCLICIMMÉDIAT...adoptionprogressiveparcertainsSysAdminsfacileàappréhender(modulecommand/shell)homogénéité,fiabilité,rapidité

Page 10: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

ONL'ADOPTEPOUR:actionsurgentes(màjsécuritécommeopenssl)tâchesrépétitives(utilisateurs,firewall)

demandesspécifiques(extensioncluster,instancesdeservices)

Page 11: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2015:ADOPTIONOFFICIELLED'ANSIBLEinventorygénéréàpartirdenotreannuaireLDAPmigrationd'Ansible1.7vers2.0(sudo→become)

Page 12: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2016:CRÉATIONSDERÔLESANSIBLEDANSUNDÉPÔTDÉDIÉ/PUBLIC

conversiondenotrescriptshelld'installationenensembledeplaybooks/rôlesAnsible

Page 13: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2016:INSTALLATIOND'INFRACLIENTCOMPLEXESCOMPLÈTEMENTORCHESTRÉESAVECANSIBLE

Page 14: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

2017:MIGRATIOND'ANSIBLE2.0VERSVERSION2.2

Page 15: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

LESKILLERSFEATURESD'ANSIBLEconceptidempotenceagent-lesspermettantuneadoptionprogressive

Page 16: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

CHOIXD'ORGANISATIONrôlesAnsiblepublics(déploiementencoursversAnsibleGalaxy)outillageAnsiblepublic:tasks,conventions,etc.outillageAnsibleprivé:vaultpourvariables,tasks,etc.scriptsdegestion:générationdesvariables(dialog),syncGit,etc.playbooksdansundépôtpartagéavecleclient

Page 17: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

CONVENTIONSlastructuredesrôles(ansiblegalaxy,README.md)leformatYAML(pasdesyntaxecompacte)l'utilisationdelaprécédencedesvariablesutilisationducheckmodedépôtspublics:commentairesetdocsenanglais

Page 18: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

mailto={{log2mail_alert_emailorgeneral_alert_email}}

Page 19: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

CHOIXDENEPASUTILISERANSIBLETOWER

100%librepasd'interfacegraphique

Page 20: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

FOCUSSURL'INVENTORYinventoryviaLDAPpourlaprodinventoryparclient,notammentpourlestests

Page 21: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

FOCUSSURLESMODULESIlexistedescentainesdemodules...

CHOIXFIXEDECERTAINSMODULES+CONVENTIONSD'UTILISATION

lineinfilevsblockinfilevscopy/template

Page 22: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

CONVENTIONS(SUITE)utilisationdestagssecrets:vaultdansunrepositoryprivétestspourvérificationdel'applicationdesconventionsServeurscentraux...maisoptionnels

Page 23: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

[defaults]inventory=$HOME/.ansible/hostsgathering=smart

[ssh_connection]ssh_args=-oControlMaster=auto-oControlPersist=300spipelining=True

Page 24: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

[defaults]inventory=$HOME/.ansible/hosts[ssh_connection]ssh_args=-oControlMaster=no-oControlPersist=no

Page 25: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

ENJEUDETRANSMISSIONDUSAVOIRtoutlemondedoitêtredanslabarquelesdécouvertesdoiventêtretransmiseslesconventionsetbonnespratiquesprêchéesetrabachéesfaireducollectif/collaboratifetpasavoirunleaderetdessuiveurs

Page 26: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

PAIR-PROGRAMMINGTRÈSEFFICACE

Page 27: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

ADOPTIOND'ANSIBLEPOURUNEINFRAULTRA-HÉTÉROGÈNE

quelquesserveursgérésad-hocquelquesinfrasglobaliséesmigrationtrèsprogressivedesinfraslegacymaintenancecomplexedansuncontextedeproduction

Page 28: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

FOCUSSURLADOCUMENTATIONimportantpourfaciliterlatransmissionexplicitedusavoir,desbonnespratiques,desconventions.

Page 29: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

TRAITERLESPLAYBOOKS/ROLESCOMMEDUCODE:desbonsmessagesdecommitsdescommentaireslàoùc'estpertinent(lepourquoi,paslequoi/comment)normerlesREADMEcentraliserlesinfosclés(conventions.md…)écriredestests

Page 30: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

FOCUSSURLASÉCURITÉFaillesdesécurité,commeCVE-2016-9587

Page 31: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

TESTSIndispensablescommepourducode«classique»

testerlasyntaxelinttesterl'éxécutionsansbug,puistesterl'idempotence(viaKitchen)testerlerésultat(viaserverspeclancéparKitchen)

Page 32: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

Seservirdestestscommechasseauxbugs,maisaussipourempêcherlesrégressionsLecodeAnsibleestcommeducodeclassique:ilévolue,serefactore…etilestfaciledecasserquelquechosequiaétévalidéprécédemment

Page 33: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

QUELQUESDÉFAUTSD'ANSIBLELesmessagesdesortieenJSONsontconçuspourAnsibleTower,paspourdeshumainspasdegestiondesaccréditations,l'idéalseraitunagentfaçonSSHpourmotsdepassevault/sudo/sshladocumentationestuniquementorientéepourladernièreversion

Page 34: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

NOTATIONENOCTALENYAMLmode:0755→Good!mode:755→Bad!mode:1777→Bad!mode:"0755"→Goodmode:"1777"→Good

Page 35: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

CONCLUSIONAnsible,idéalpouruneadoptionprogressiveauseind'uneéquipedeSysAdminsÊtreattentifauchangementdeculturequecelaapporteaméliorations:+detestsetpushsurAnsiblegalaxy

Page 36: MEETUP ANSIBLE MONTRÉAL MMEEEETTUUPP …people.redhat.com/.../avril2017/meetup-ansible.pdf · MEETUP ANSIBLE MEETUP ANSIBLE MMOONNTTRRÉÉAALL MONTRÉAL MONTRÉAL ADOPTION D'ANSIBLE

POURENSAVOIRPLUS...RôlesAnsibleEvolix:

WikiEvolix:Twitter:Mail:

forge.evolix.org/projects/ansible-roleswiki.evolix.org

@[email protected]