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]


Recommended