meetup ansible montrÉal mmeeeettuupp …people.redhat.com/.../avril2017/meetup-ansible.pdf ·...
TRANSCRIPT
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
Infogérance/Hébergement/InfonuagiqueManagedHostingProviderLinux,infraweb,HA,Ansible,DockerUneéquipeàMontréal+enFrance(24/7)Clients:agencesweb,SaaS,médias
MÉTIERD'EVOLIXUnecentained'infraclientsUnàplusieursdizainesdeserveursparinfraTotald'environ700serveurshétérogènesinfogérésServeursDebian/BSDCultureSysAdmin:shell,100%outilslibres
HISTORIQUE:COMMENTINSTALLERUNSERVEUR?
toutàlamaincopier/collerchecks(evocheck)scriptshellprivé(evolinuxv1)
AUTOMATION?(Tempsd'unetâche)×(nombred'exécution)VS
Tempsd'automatisation
2013:GESTIOND'UNEINFRACLIENTAVECPUPPET
2014:PLAYBOOKANSIBLEPOURDESPETITESTÂCHESPONCTUELLES
ajoutd'unenouvelleadresseIPsurtousnosserveurs
DÉCLICIMMÉDIAT...adoptionprogressiveparcertainsSysAdminsfacileàappréhender(modulecommand/shell)homogénéité,fiabilité,rapidité
ONL'ADOPTEPOUR:actionsurgentes(màjsécuritécommeopenssl)tâchesrépétitives(utilisateurs,firewall)
demandesspécifiques(extensioncluster,instancesdeservices)
2015:ADOPTIONOFFICIELLED'ANSIBLEinventorygénéréàpartirdenotreannuaireLDAPmigrationd'Ansible1.7vers2.0(sudo→become)
2016:CRÉATIONSDERÔLESANSIBLEDANSUNDÉPÔTDÉDIÉ/PUBLIC
conversiondenotrescriptshelld'installationenensembledeplaybooks/rôlesAnsible
2016:INSTALLATIOND'INFRACLIENTCOMPLEXESCOMPLÈTEMENTORCHESTRÉESAVECANSIBLE
2017:MIGRATIOND'ANSIBLE2.0VERSVERSION2.2
LESKILLERSFEATURESD'ANSIBLEconceptidempotenceagent-lesspermettantuneadoptionprogressive
CHOIXD'ORGANISATIONrôlesAnsiblepublics(déploiementencoursversAnsibleGalaxy)outillageAnsiblepublic:tasks,conventions,etc.outillageAnsibleprivé:vaultpourvariables,tasks,etc.scriptsdegestion:générationdesvariables(dialog),syncGit,etc.playbooksdansundépôtpartagéavecleclient
CONVENTIONSlastructuredesrôles(ansiblegalaxy,README.md)leformatYAML(pasdesyntaxecompacte)l'utilisationdelaprécédencedesvariablesutilisationducheckmodedépôtspublics:commentairesetdocsenanglais
mailto={{log2mail_alert_emailorgeneral_alert_email}}
CHOIXDENEPASUTILISERANSIBLETOWER
100%librepasd'interfacegraphique
FOCUSSURL'INVENTORYinventoryviaLDAPpourlaprodinventoryparclient,notammentpourlestests
FOCUSSURLESMODULESIlexistedescentainesdemodules...
CHOIXFIXEDECERTAINSMODULES+CONVENTIONSD'UTILISATION
lineinfilevsblockinfilevscopy/template
CONVENTIONS(SUITE)utilisationdestagssecrets:vaultdansunrepositoryprivétestspourvérificationdel'applicationdesconventionsServeurscentraux...maisoptionnels
[defaults]inventory=$HOME/.ansible/hostsgathering=smart
[ssh_connection]ssh_args=-oControlMaster=auto-oControlPersist=300spipelining=True
[defaults]inventory=$HOME/.ansible/hosts[ssh_connection]ssh_args=-oControlMaster=no-oControlPersist=no
ENJEUDETRANSMISSIONDUSAVOIRtoutlemondedoitêtredanslabarquelesdécouvertesdoiventêtretransmiseslesconventionsetbonnespratiquesprêchéesetrabachéesfaireducollectif/collaboratifetpasavoirunleaderetdessuiveurs
PAIR-PROGRAMMINGTRÈSEFFICACE
ADOPTIOND'ANSIBLEPOURUNEINFRAULTRA-HÉTÉROGÈNE
quelquesserveursgérésad-hocquelquesinfrasglobaliséesmigrationtrèsprogressivedesinfraslegacymaintenancecomplexedansuncontextedeproduction
FOCUSSURLADOCUMENTATIONimportantpourfaciliterlatransmissionexplicitedusavoir,desbonnespratiques,desconventions.
TRAITERLESPLAYBOOKS/ROLESCOMMEDUCODE:desbonsmessagesdecommitsdescommentaireslàoùc'estpertinent(lepourquoi,paslequoi/comment)normerlesREADMEcentraliserlesinfosclés(conventions.md…)écriredestests
FOCUSSURLASÉCURITÉFaillesdesécurité,commeCVE-2016-9587
TESTSIndispensablescommepourducode«classique»
testerlasyntaxelinttesterl'éxécutionsansbug,puistesterl'idempotence(viaKitchen)testerlerésultat(viaserverspeclancéparKitchen)
Seservirdestestscommechasseauxbugs,maisaussipourempêcherlesrégressionsLecodeAnsibleestcommeducodeclassique:ilévolue,serefactore…etilestfaciledecasserquelquechosequiaétévalidéprécédemment
QUELQUESDÉFAUTSD'ANSIBLELesmessagesdesortieenJSONsontconçuspourAnsibleTower,paspourdeshumainspasdegestiondesaccréditations,l'idéalseraitunagentfaçonSSHpourmotsdepassevault/sudo/sshladocumentationestuniquementorientéepourladernièreversion
NOTATIONENOCTALENYAMLmode:0755→Good!mode:755→Bad!mode:1777→Bad!mode:"0755"→Goodmode:"1777"→Good
CONCLUSIONAnsible,idéalpouruneadoptionprogressiveauseind'uneéquipedeSysAdminsÊtreattentifauchangementdeculturequecelaapporteaméliorations:+detestsetpushsurAnsiblegalaxy
POURENSAVOIRPLUS...RôlesAnsibleEvolix:
WikiEvolix:Twitter:Mail:
forge.evolix.org/projects/ansible-roleswiki.evolix.org