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

Post on 19-Jul-2020

12 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

@EvolixCanadahello@evolix.ca

top related