Ji peywira duyemîn dest pê dike, her kod dibe mîras, ji ber ramanên destpêkê dest pê dikin ku ji rastiya tund cuda bibin. Ev ne baş e û ne jî xirab e, ew diyariyek e ku nîqaşkirina pê re dijwar e û divê were jiyîn. Beşek ji vê pêvajoyê refaktor e. Refactoring Binesaziya wek Code. Bila çîrok dest pê bike ka meriv çawa di salekê de Ansible veguhezîne û dîn nebe.
Jidayikbûna Mîrasê
Roja #1: Nexweşê Zero
Carekê projeyek bi şert hebû. Ew tîmek pêşveçûna Dev û endezyarên Ops bû. Wan heman pirsgirêk çareser dikirin: Meriv çawa serveran bicîh dike û serîlêdanek dimeşîne. Pirsgirêk ev bû ku her tîmek bi awayê xwe ev pirsgirêk çareser kir. Di projeyê de, biryar hate girtin ku Ansible bikar bînin da ku zanînê di navbera tîmên Dev û Ops de hevdeng bikin.
Roja #89: Jidayikbûna Mîrasê
Bêyî ku bi xwe hay jê hebin, wan dixwest ku bi qasî ku pêkan be wiya bikin, lê ew wekî mîras derket. Ev çawa dibe?
Li vir peywirek me ya lezgîn heye, werin em xapandinek qirêj bikin û dûv re sererast bikin.
Hûn ne hewce ne ku belgeyan binivîsin û her tişt eşkere ye ku li vir çi diqewime.
Ez Ansible / Python / Bash / Terraform dizanim! Binêre ez çawa dikarim birevim!
Ez Pêşdebirek Full Stack Overflow me û vê ji stackoverflow kopî kir, ez nizanim ew çawa dixebite, lê ew xweş xuya dike û pirsgirêkê çareser dike.
Wekî encamek, hûn dikarin celebek kodek nefêmkirî ya ku jê re belgeyek tune ye, ne diyar e ka ew çi dike, gelo hewce ye, lê pirsgirêk ev e ku hûn hewce ne ku wê pêşve bibin, biguhezînin, kulm û piştgirî lê zêde bikin. , rewşê hîn xerabtir dike.
Modela IaC ya ku di destpêkê de hatî fikirîn û pêkanîn êdî hewcedariyên bikarhêneran / karsazî / tîmên din nagire, û dema ku meriv guheztinên binesaziyê pêk bîne êdî nayê qebûlkirin. Di vê demê de, têgihiştin ku dem dema çalakiyê ye.
Refactoring IaC
Roja # 139: Ma hûn bi rastî hewcedarê vesazkirinê ne?
Berî ku hûn bilezînin ser refactor, divê hûn çend pirsên girîng bersiv bidin:
Çima hûn van hemî hewce ne?
Wextê te heye?
Ma zanîn bes e?
Heke hûn nizanin ka meriv çawa bersiva pirsan bide, wê hingê vesazkirin dê berî ku dest pê bike bi dawî bibe, an jî dibe ku ew xirabtir bibe. Bo xwedî ezmûn ( Tiştê ku ez ji ceribandina 200 Xetên Koda Binesaziyê fêr bûm), dûv re proje daxwazek alîkariyê wergirt da ku rola rast bike û wan bi ceribandinan veşêre.
Roja #149: Amadekirina refaktorkirinê
Ya yekem ew e ku meriv amade bike. Em ê çi bikin biryar bidin. Ji bo vê yekê, em danûstandinê dikin, qadên pirsgirêkê peyda dikin û awayên çareserkirina wan peyda dikin. Em têgînên encam bi rengekî tomar dikin, mînakî gotarek li hevûdu, da ku gava pirs derkeve holê "çi çêtirîn e?" an "kîjan rast e?" Me rêya xwe winda nekir. Di doza me de, em li ser ramanê sekinîn parçe bike û hukum bike: em binesaziyê bi perçeyên biçûk/qûçikan perçe dikin. Ev nêzîkatî dihêle hûn perçeyek binesaziyek veqetandî bavêjin, fêm bikin ka ew çi dike, wê bi ceribandinan veşêre û bêyî tirsa ji şikandina tiştekê biguhezîne.
Derket holê ku ceribandina binesaziyê dibe kevirê bingehîn û li vir hêjayî gotinê ye ku pîramîda ceribandina binesaziyê. Bi rastî heman ramana ku di pêşkeftinê de ye, lê ji bo binesaziyê: em ji ceribandinên bilez ên erzan ên ku tiştên hêsan kontrol dikin, wek xêzkirin, berbi ceribandinên bêkêmasî yên biha yên ku tevahiya binesaziyê bicîh dikin, diçin.
Hewldanên ceribandinê yên bêkêmasî
Berî ku em herin rave bikin ka me çawa ceribandinên Ansible li ser projeyê vegirtiye, ez ê hewil û nêzîkatiyên ku min berê fersend bikar bînim diyar bikim da ku çarçoweya biryarên hatine girtin fam bikim.
Hejmara roj -997: Dabînkirina SDS
Cara yekem ku min Ansible ceriband li ser projeyek bû ku ji bo pêşvebirina SDS (Storage Defined Software). Li ser vê mijarê gotarek cuda heye Di dema ceribandina belavkirina xwe de meriv çawa bisiklêtan li ser çarçikan bişkîne, lê bi kurtasî, me bi pîramîdek ceribandinê ya berevajî bi dawî kir û ceribandinê me 60-90 hûrdem li ser yek rolê derbas kir, ku ev demek dirêj e. Bingeh testên e2e bû, yanî. me sazkirinek bêkêmasî saz kir û dûv re ew ceriband. Tiştê ku hê girantir dikir îcada duçerxeya xwe bû. Lê divê ez bipejirînim, ev çareserî xebitî û destûr da serbestberdanek bi îstîqrar.
Roja # -701: Metbexa bêserûber û ceribandinê
Pêşkeftina ramana ceribandina Ansible karanîna amûrên amade bû, ango ceribandina metbexê / metbexê-ci û vekolînê. Hilbijartin ji hêla zanîna Ruby ve hate destnîşankirin (ji bo bêtir agahdarî, li gotara li ser Habré binêre: Ma bernamenûsên YML xewna ceribandina Ansible dikin?) zûtir xebitî, bi qasî 40 hûrdem ji bo 10 rolan. Me pakêtek makîneyên virtual çêkir û di hundurê de ceribandinan kir.
Bi gelemperî, çareserî xebitî, lê ji ber heterojeniyê hinek sediment hebû. Gava ku hejmara kesên hatine ceribandin zêde bû 13 rolên bingehîn û 2 rolên meta ku rolên piçûktir berhev dikirin, wê hingê ji nişkê ve ceribandinan 70 hûrdem dest pê kirin, ku hema hema 2 carî dirêjtir e. Zehmet bû ku meriv qala pratîkên XP (bernamesaziya tund) bike ji ber ku ... kes naxwaze 70 hûrdem li bendê bimîne. Sedema guhertina nêzîkatiyê ev bû
Roja # -601: Ansible û molekul
Bi têgihiştinî, ev dişibihe metbexê testê, tenê me ceribandina rolê bar kir doker û stûn guhert. Wekî encamek, dem ji bo 20 rola 25-7 hûrdeman bi îstîqrar kêm bû.
Bi zêdekirina hejmara rolên ceribandin 17 û lînkirina 45 rolan, me ev di 28 hûrdeman de li ser 2 xulamên jenkins meşandin.
Roja #167: Zêdekirina testên Ansible li projeyê
Bi îhtimaleke mezin, ew ê ne mumkun be ku bi lez û bez karê refaktorkirinê were kirin. Pêdivî ye ku peywir were pîvandin da ku hûn wê bikin perçeyên piçûk û bi kevçîyek fîlan perçe perçe bixwin. Pêdivî ye ku têgihîştinek hebe ku hûn di rêça rast de dimeşin, heya kengê biçin.
Bi gelemperî, ne girîng e ka ew ê çawa were kirin, hûn dikarin li ser kaxezek binivîsin, hûn dikarin çîtikan li ser dolabê bixin, hûn dikarin di Jira de peywiran biafirînin, an jî hûn dikarin Google Docs vekin û rewşa heyî binivîsin. va. Ling ji rastiya ku pêvajo ne zû ye, mezin dibin, ew ê dirêj û bêhêz be. Ne mimkûn e ku kes bixwaze ku hûn ji ramanan bişewitînin, westiyayî bibin û di dema refaktorkirinê de serdest bibin.
Refactoring hêsan e:
Xwarin.
Xew.
Navê dizî.
testa IaC.
Dûbare
û em vê yekê dubare dikin heta ku em bigihîjin armanca armanckirî.
Dibe ku ne gengaz be ku meriv tavilê dest bi ceribandina her tiştî bike, ji ber vê yekê peywira me ya yekem ev bû ku em bi linting û kontrolkirina hevoksaziyê dest pê bikin.
Roja # 181: Kesk Build Master
Linting pêngavek yekem a piçûk berbi Green Build Master e. Ev ê hema hema tiştek neşikîne, lê ew ê bihêle ku hûn pêvajoyên debug bikin û li Jenkins avahiyên kesk çêbikin. Fikir ev e ku di nav tîmê de adet pêşve bibin:
Testên sor xirab in.
Ez hatim ku tiştek rast bikim û di heman demê de kodê ji ya beriya we hinekî çêtir bikim.
Roja #193: Ji lincê heya ceribandinên yekîneyê
Piştî ku hûn pêvajoya girtina kodê di nav masterê de ava bikin, hûn dikarin pêvajoya başkirina gav-gav-gav bidin dest pê kirin - li şûna lingan bi rolên destpêkirinê re, hûn jî dikarin wê bêyî bêhêziyê bikin. Pêdivî ye ku hûn fêm bikin ka meriv çawa rolan bicîh tîne û ew çawa dixebitin.
Roja #211: Ji yekîneyê heya ceribandinên entegrasyonê
Gava ku piraniya rolan bi ceribandinên yekîneyê ve têne nixumandin û her tişt tê rijandin, hûn dikarin li ser lê zêdekirina ceribandinên entegrasyonê biçin. Ewan. Di binesaziyê de ne yek kerpîçek ceribandinê, lê berhevokek wan, mînakî, mîhengek nimûneyek tevahî.
Bi karanîna jenkins, me gelek qonax çêkirin ku rol / pirtûkên lîstikê bi hev re xêz kirin, dûv re ceribandinên yekîneyê di konteyneran de, û di dawiyê de ceribandinên entegrasyonê.
Jenkins + Docker + Ansible = Tests
Depoyê kontrol bikin û qonaxên avakirinê biafirînin.
Qonaxên pirtûka lîstikê yên lint paralel bimeşînin.
Qonaxên rola lintê paralel bimeşînin.
Qonaxên rola kontrolkirina hevoksaziyê paralel bimeşînin.
Qonaxên rola testê bi paralel bimeşînin.
Rola Lint.
Girêdana bi rolên din ve kontrol bikin.
Hevoksaziyê kontrol bikin.
Mînaka dokerê biafirînin
Molekulê/default/playbook.yml bixebitîne.
Nerazîbûnê kontrol bikin.
Testên entegrasyonê bimeşînin
Qedandin
Roja # 271: Faktora Otobusê
Di destpêkê de, refaktorkirin ji hêla komek piçûk a du-sê kesan ve hate kirin. Wan koda di masterê de nirxand. Bi demê re, tîmê zanîna nivîsandina kodê û vekolîna kodê pêşxist ku beşdarî belavkirina zanyariyê di derheqê binesaziyê de û çawa dixebite. Li vir xala balkêş ew bû ku nirxandêr yek bi yek, li gorî bernameyek, yanî. bi îhtîmalek hindek hûn ê hilkişin nav binesaziyek nû.
Û divê li vir rehet be. Ew hêsan e ku meriv vekolînek bike, bibîne ku di çarçoweya kîjan peywirê de hatî kirin, û dîroka nîqaşan. Me jenkins + bitbucket + jira yekgirtî ne.
Lê bi vî rengî, vekolîn ne dermanek e; bi rengekî, em ketin koda masterê, ku me ceribandinên flopê kir:
Bi demê re, bêtir ceribandin hebûn, avahî hêdîtir dimeşin, di rewşa herî xirab de heya saetekê. Li ser yek ji retroyan hevokek mîna "baş e ku ceribandin hene, lê hêdî ne" hebû. Wekî encamek, me dev ji ceribandinên entegrasyonê yên li ser makîneyên virtual berda û wan ji bo Docker adapte kir ku wê zûtir bike. Di heman demê de me testinfra bi verastkerek ansible veguhezand da ku hejmara amûrên têne bikar anîn kêm bike.
Bi awayekî hişk, komek tedbîr hebûn:
Veguhere docker.
Testkirina rolê, ku ji ber pêwendiyan tê dubare kirin, rake.
Hejmara koleyan zêde bike.
Fermana ceribandinê.
Kapasîteya lincê GIŞT herêmî bi yek fermanê.
Wekî encamek, Pipeline li ser jenkins jî yekgirtî bû
Qonaxên avakirinê biafirînin.
Lint hemû di paralel.
Qonaxên rola testê bi paralel bimeşînin.
Qedandin.
Ders hîn bûn
Ji guherbarên gerdûnî dûr bixin
Ansible guhêrbarên gerdûnî bikar tîne, di formê de çareseriyek qismî heye taybet_role_vars, lê ev ne dermanek e.
Ez ji we re mînakek bidim. Bila ji me re hebe role_a и role_b
Tiştê xweş ev e ku encama pirtûkên lîstikê dê bi tiştên ku her gav ne diyar in ve girêdayî be, wek mînak rêza rêzkirina rolan. Mixabin, ev cewhera Ansible ye û ya çêtirîn ku dikare were kirin ev e ku meriv cûreyek peymanek bikar bîne, mînakî, di hundurê rolek de, tenê guhêrbara ku di vê rolê de hatî destnîşan kirin bikar bîne.
Me li hev kir ku em pêşpirtikên guhêrbar bikar bînin; ne zêde ye ku em kontrol bikin ku ew wekî ku em hêvî dikin hatine destnîşan kirin û, mînakî, ji hêla nirxek vala ve nehatine derbas kirin.
BAŞ: Guherbaran kontrol bikin.
- name: "Verify that required string variables are defined"
assert:
that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
fail_msg: "{{ ahs_var }} needs to be set for the role to work "
success_msg: "Required variables {{ ahs_var }} is defined"
loop_control:
loop_var: ahs_var
with_items:
- ahs_item1
- ahs_item2
- ahs_item3
Ji ferhengên haş dûr bixin, avahiyek guncan bikar bînin
Ger rolek di yek ji parametreyên xwe de li benda haş/ferhengekê be, wê hingê heke em bixwazin yek ji pîvanên zarokê biguhezînin, pêdivî ye ku em tevahî hash/ferhengê bişopînin, ku dê tevliheviya veavakirinê zêde bike.
Rol û pirtûkên lîstikê divê bêhêz bin, ji ber vekêşana konfigurasyonê û tirsa şikandina tiştek kêm dike. Lê heke hûn molekulê bikar bînin, wê hingê ev tevgera xwerû ye.
Ji karanîna modulên şêlê fermanê dûr bixin
Bi karanîna modulek şêlê, li şûna ya ragihandinê, ku bingeha Ansible-yê ye, dibe sedema paradîgmayek danasîna mecbûrî.
Rolên xwe bi molekulê ceribandin
Molekul tiştekî pir maqûl e, em li çend senaryoyan binêrin.
Molekul Mînakên Pirjimar
В molecule.yml di beşa platforms hûn dikarin gelek mêvandarên ku hûn dikarin bicîh bikin diyar bikin.
Di molekulê de gengaz e ku meriv ansible bikar bîne da ku kontrol bike ka mînak bi rengek rast hatî mîheng kirin, ji bilî vê yekê, ev ji berdana 3-ê ve wekî xwerû ye. Ew ne bi qasî testinfra/inspec maqûl e, lê em dikarin kontrol bikin ku naveroka pelê bi hêviyên me re têkildar e:
An jî karûbarê bicîh bikin, li bendê bin ku ew peyda bibe û ceribandinek dûmanê bikin:
---
- name: Verify
hosts: solr
tasks:
- command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
- uri:
url: http://127.0.0.1:8983/solr
method: GET
status_code: 200
register: uri_result
until: uri_result is not failed
retries: 12
delay: 10
- name: Post documents to solr
command: /blah/solr/bin/post -c master /exampledocs/books.csv
Mantiqa tevlihev bixin nav modul û pêvekan
Ansible parêzvanek nêzîkatiyek ragihandinê dike, ji ber vê yekê gava ku hûn şaxkirina kodê, veguherîna daneyê, modulên şêlê dikin, xwendina kod dijwar dibe. Ji bo ku hûn bi vê yekê re şer bikin û fêmkirina wê hêsan bimînin, ne zêde ye ku hûn bi çêkirina modulên xwe bi vê tevliheviyê re şer bikin.
Bi kurtî Serişteyên & Tricks
Ji guherbarên gerdûnî dûr bixin.
Guherbarên rola pêşgir.
Guherbara kontrola loop bikar bînin.
Guherbarên têketinê kontrol bikin.
Ji ferhengên haş dûr bixin, avahiyek guncan bikar bînin.
Lîstik û rolên bêhêz biafirînin.
Ji karanîna modulên şêlê fermanê dûr bixin.
Rolên xwe bi molekulê ceribandin.
Mantiqa tevlihev bixin nav modul û pêvekan.
encamê
Hûn nekarin tenê biçin û binesaziya li ser projeyek nûve bikin, hetta ku we IaC hebe. Ev pêvajoyek dirêj e ku sebir, dem û zanînê hewce dike.
UPD1 2020.05.01 20:30 - Ji bo profîla seretayî ya pirtûkên lîstikê hûn dikarin bikar bînin callback_whitelist = profile_tasks fêm bikin ka çi bi rastî ji bo demek dirêj dixebite. Paşê em derbas dibin Klasîkên lezkirina Ansible. Hûn jî dikarin biceribînin mitogen UPD2 2020.05.03 16:34 - Versiyonek îngilîzî