ProHoster > Blog > Pulega > O mea na ou aʻoaʻoina mai le suʻeina o le 200 laina o le tulafono o Atinaʻe
O mea na ou aʻoaʻoina mai le suʻeina o le 200 laina o le tulafono o Atinaʻe
O se faiga IaC (Infrastructure as Code) e aofia ai e le gata o le code o loʻo teuina i totonu o le faleoloa, ae faʻapea foʻi ma tagata ma faiga o loʻo siomia ai lenei code. E mafai ona toe fa'aogaina auala mai le atina'eina o polokalame i le fa'atonuga o mea tetele ma fa'amatalaga? O se manatu lelei le teu i lou mafaufau a o e faitauina le tusiga.
Faapea ua e sau i se galuega fou, ma latou taʻu atu ia te oe: “Ua matou maua Atinaʻe pei o Faʻamatalaga". O le mea moni e aliali mai Atina'e pei o tala fa'asolopito pe mo se faataitaiga Fa'amaumauga e pei o tala fa'asolopito. O se tulaga moni lava lea, mo se faʻataʻitaʻiga, na faʻamatalaina e Denis Lysenko se mataupu tutusa i se tautalaga E faʻafefea ona sui le atinaʻe atoa ma amata moe lelei, na ia taʻu mai le auala na latou maua ai se atinaʻe talafeagai mo le poloketi mai le tala faasolopito o le bash.
Faatasi ai ma sina manao, e mafai ona tatou faapea atu Atina'e pei o tala fa'asolopito e pei o le code lea:
toe gaosia: E mafai ona e suʻeina tala faʻasolopito, faʻatonu tulafono mai iina, ma e mafai, i le ala, maua se faʻatulagaga galue o se gaioiga.
fa'aliliuga: e te iloa poʻo ai na sau i totonu ma mea na latou faia, toe, e le o se mea moni o lenei mea o le a taʻitaʻia oe i se faʻatulagaga galue i le alu ese.
talafaasolopito: o le tala o ai na faia le mea. na'o oe e le mafai ona fa'aogaina pe a leiloa le server.
O le a se mea e tatau ona ou faia?
Atinaʻe pei o Faʻamatalaga
E oo lava i se tulaga uiga ese e pei o Atina'e pei o tala fa'asolopito e mafai ona e tosoina i taliga Atinaʻe pei o Faʻamatalaga, ae a tatou mananao e fai se mea e sili atu ona faigata nai lo le lelei tuai LAMP server, o le a tatou oʻo mai i le faaiuga o lenei tulafono e tatau ona suia, suia, faʻaleleia. Le isi matou te fia mafaufau i mea tutusa i le va Atinaʻe pei o Faʻamatalaga ma atina'e polokalame.
MAMAGO
I luga o se poloketi faʻaleleia faiga faʻapipiʻi, sa i ai se subtask fetuutuunai SDS i lea taimi ma lea taimi: o loʻo matou tuʻuina atu se faʻasalalauga fou - e manaʻomia ona taʻavale mo nisi suʻega. O le galuega e matua faigofie lava:
saini iinei e ala i le ssh ma faʻatino le poloaiga.
kopi le faila iina.
faasa'o le config iinei.
amata le sauniga iina
...
TUPE MAUA!
Mo le faʻamatalaga faʻamatalaga, o le bash e sili atu nai lo le lava, aemaise lava i le amataga o le poloketi, pe a faatoa amata. Lenei e le leaga le faʻaaogaina o le bash, ae i le aluga o taimi o loʻo i ai talosaga e faʻapipiʻi se mea tutusa, ae fai si ese. O le mea muamua e sau i le mafaufau o le kopi-pasese. Ma o lea ua uma ona i ai ni a matou tusitusiga tutusa e lua e toetoe lava a tutusa le mea. I le aluga o taimi, o le numera o tusitusiga na faʻatupulaia, ma sa matou feagai ma le mea moni o loʻo i ai se pisinisi faʻapitoa mo le faʻapipiʻiina o se faʻapipiʻi e manaʻomia ona faʻafetaui i le va o tusitusiga eseese, e fai lava si faigata.
E foliga mai o loʻo i ai se faʻataʻitaʻiga e pei o le MAMAGO (Aua le toe fai oe lava). O le manatu o le toe faʻaaogaina o le code o iai. E foliga faigofie, ae matou te leʻi oʻo mai i lenei mea i le taimi lava lena. I la matou tulaga, o se manatu faʻatauvaʻa: e vavae ese configs mai tusitusiga. O na. pisinisi fa'atatau ile fa'aogaina o le fa'apipi'i fa'apipi'i ese, configs eseese.
FAʻAALIGA mo CFM
I le aluga o taimi na tuputupu ae le poloketi ma faaauauina masani o le tulai mai o le Ansible. O le mafuaʻaga autu o lona foliga mai o loʻo i ai le tomai i luga o le 'au ma o le bash e leʻo fuafuaina mo le faʻalavelave faʻapitoa. Na amata foʻi ona iai i le Ansible manatu lavelave. Ina ia puipuia manatu lavelave mai le liliu atu i le vevesi, o loʻo i ai mataupu faavae mo le faʻatulagaina o tulafono i le atinaʻeina o polokalama FAAMAU E le gata i lea, mo se faʻataʻitaʻiga, Grigory Petrov i le lipoti "Aisea e manaʻomia ai e se tagata tomai faapitoa IT se faʻailoga a le tagata lava ia" na laga ai le fesili e faapea o se tagata ua mamanuina i se auala e faigofie ai mo ia ona faʻagaioi ma nisi faʻalapotopotoga lautele, i le atinaʻeina o polokalama nei. o mea faitino. Afai tatou te tuufaatasia nei manatu e lua ma faaauau pea ona atiina ae, o le a tatou matauina e mafai foi ona tatou faaaogaina FAAMAU ina ia faafaigofie le tausia ma le suia o lenei manatu i le lumanai.
O le Mataupu Faavae o le Tiutetauave Tasi
E tasi lava le galuega e fai e vasega taitasi.
Leai se manaʻoga e faʻafefiloi code ma fai monolithic divine spaghetti monsters. O mea tetele e tatau ona aofia ai piliki faigofie. E foliga mai afai e te vaevae le Ansible playbook i ni vaega laiti, faitau Ansible roles, ona faigofie ai lea ona tausia.
O le Mataupu Faavae Tatala Tatala
Tatala/tapuni mataupu faavae.
Tatala i fa'aopoopoga: o lona uiga e mafai ona fa'alautele le amio a se fa'alapotopotoga e ala i le fa'atupuina o ituaiga fa'alapotopotoga fou.
Tapuni mo suiga: O se taunuuga o le faʻalauteleina o amioga a se faʻalapotopotoga, e leai se suiga e tatau ona faia i le faʻailoga e faʻaogaina ai na faʻalapotopotoga.
I le taimi muamua, na matou faʻapipiʻiina le faʻataʻitaʻiga i luga o masini masini, ae ona o le mea moni o le faʻaogaina o pisinisi e ese mai le faʻatinoga, na matou faʻaopoopoina le taʻavale i le baremetall e aunoa ma se faʻafitauli.
O le Liskov Substitution Principle
O le mataupu faavae suitulaga a Barbara Liskov. mea i totonu o se polokalame e tatau ona suia i faʻataʻitaʻiga o latou subtypes e aunoa ma le suia o le faʻatinoina saʻo o le polokalame
Afai e te vaʻavaʻai atili i ai, e le o se vaega o soʻo se galuega faʻapitoa e mafai ona faʻaogaina iina FAAMAU, e masani lava e uiga i le CFM, mo se faʻataʻitaʻiga, i luga o se isi poloketi e manaʻomia le faʻapipiʻiina o se pusa Java talosaga i luga o le tele o Java, faʻaumau talosaga, faʻamaumauga, OS, ma isi. I le faʻaaogaina o lenei faʻataʻitaʻiga, o le a ou mafaufau i nisi mataupu faavae FAAMAU
I la matou tulaga, o loʻo i ai se maliliega i totonu o le au atinaʻe e faʻapea afai matou te faʻapipiʻiina le imbjava poʻo le oraclejava, ona matou maua lea o le java binary executable. E tatau lea ona O matafaioi i luga e faʻalagolago i lenei amio; latou te faʻamoemoe java. I le taimi lava e tasi, o lenei mea e mafai ai ona tatou suia le tasi java faʻatinoga / faʻasologa ma le isi e aunoa ma le suia o le faʻaogaina o le faʻaogaina o le talosaga.
O le faʻafitauli iinei o loʻo taoto i le mea moni e le mafai ona faʻatinoina lenei mea i le Ansible, o se taunuuga o nisi o maliliega e aliali mai i totonu o le 'au.
O le Fa'avae Va'aiga Fa'avae
Ta'iala o le vavae'esega: “O le tele o feso'ota'iga fa'apitoa mo tagata fa'atau e sili atu nai lo le tasi fa'amoemoe lautele.
I le taimi muamua, na matou taumafai e tuʻu uma le fesuiaiga o le faʻaogaina o talosaga i totonu o le tasi Ansible playbook, ae sa faigata ona lagolagoina, ma le auala pe a iai se matou atinaʻe i fafo ua faʻamaonia (o loʻo faʻamoemoe le tagata o tausia le taulaga 443), ona mafai lea ona faʻapipiʻiina se atinaʻe mai tagata taʻitoʻatasi. piliki mo se faʻatinoga faʻapitoa.
O le Fa'alagolago i le Fa'avaeina
O le mataupu faavae o le fesuisuiai o le faalagolago. Modules i tulaga maualuluga e le tatau ona faalagolago i modules i tulaga maualalo. O ituaiga uma o modules e tatau ona faʻalagolago i faʻamatalaga. E le tatau ona fa'alagolago i fa'amatalaga. O fa'amatalaga e tatau ona fa'alagolago i fa'amatalaga.
O iinei o le a faʻavae ai le faʻataʻitaʻiga i se antipattern.
O se tasi o tagata faatau sa i ai se ao patino.
Sa matou okaina masini faakomepiuta i totonu o le ao.
Ae ona o le natura o le ao, na faʻapipiʻiina le faʻaogaina o talosaga i le hypervisor o loʻo i ai le VM.
O na. O le maualuga o le fa'aogaina o le fa'aogaina o le fa'aogaina o lo'o fa'agasolo fa'atasi ma fa'alagolago i tulaga maualalo o le hypervisor, ma o lona uiga o fa'afitauli pe a toe fa'aogaina lenei manatu. Aua le faia faapea.
Fegalegaleaiga
Infrastructure e pei o le code e le gata i code, ae faʻapea foʻi i le va o tulafono ma tagata, e uiga i fegalegaleaiga i le va o atinaʻe atinaʻe.
Fa'ailoga pasi
Seʻi tatou faʻapea o loʻo ia te oe Vasya i lau galuega. E iloa e Vasya mea uma e uiga i au atinaʻe, o le a le mea e tupu pe a faʻafuaseʻi ona mou atu Vasya? O se tulaga moni lava lea, ona e ono lavea o ia e se pasi. O nisi taimi e tupu. Afai e tupu lenei mea ma le malamalama e uiga i le code, lona fausaga, pe faʻapefea ona galue, foliga vaaia ma upu faʻaulu e le tufatufaina i totonu o le 'au, ona mafai lea ona e feagai ma le tele o tulaga le lelei. Ina ia faʻaitiitia nei lamatiaga ma tufatufa atu le malamalama i totonu o le 'au, e mafai ona e faʻaogaina auala eseese
Pair Devopsing
E le pei o se tala malie, na inu pia e le au pulega, suia upu faataga, ma se tutusa o polokalame paga. O na. e lua inisinia e nonofo i lalo i le komepiuta e tasi, tasi le piano ma amata faʻapipiʻi au atinaʻe faʻatasi: faʻatulagaina se server, tusia se matafaioi Ansible, ma isi. E foliga manaia, ae e leʻi aoga mo i matou. Ae na aoga tulaga faapitoa o lenei faiga. E sau se tagata faigaluega fou, o lona faufautua e faia se galuega moni faʻatasi ma ia, galue ma faʻafeiloaʻi le malamalama.
O le isi tulaga fa'apitoa o se fa'alavelave fa'afuase'i. I le taimi o se faʻafitauli, o se vaega o i latou o loʻo tiute ma i latou o loʻo aʻafia e faʻapotopotoina, e toʻatasi le taʻitaʻi, e faʻasoa lana lau ma faʻalogoina le ala o mafaufauga. O isi tagata auai e mulimuli i mafaufauga o le taʻitaʻi, sipai i togafiti mai le faʻamafanafanaga, siaki latou te leʻi misia se laina i le ogalaau, ma aʻoaʻo mea fou e uiga i le faiga. O lenei faiga na sili atu ona aoga nai lo le leai.
Tulafono Iloiloga
I le tulaga, sa sili atu ona aoga le faʻasalalauina o le malamalama e uiga i atinaʻe ma le faʻaogaina e faʻaaoga ai le iloiloga code:
O mea tetele o loʻo faʻamatalaina e le code i totonu o le fale teu oloa.
E tupu suiga i se lala ese.
I le taimi o se talosaga tuʻufaʻatasia, e mafai ona e vaʻai i le delta o suiga i atinaʻe.
O le mea taua iinei o le au suʻesuʻe na filifilia taʻitoʻatasi, e tusa ai ma se faʻatulagaga, i.e. fa'atasi ai ma sina tikeri o le avanoa e te a'e ai i se vaega fou o atina'e.
Faiga Fa'ailoga
I le aluga o taimi, na amata ona aliali mai feʻau i taimi o iloiloga, aua ... o tagata su'esu'e sa i ai a latou lava sitaili ma o le fesuia'iga a le au su'esu'e na fa'aputu i latou i sitaili eseese: 2 avanoa po'o le 4, camelCase po'o le snake_case. E le'i mafai ona fa'atino loa lea tulaga.
O le manatu muamua o le fautuaina lea o le faʻaaogaina o le linter, pe a uma, o tagata uma o se inisinia, o tagata uma e atamamai. Ae o faatonu eseese, OS, e le faigofie
O lenei mea na tupu i totonu o se pusa na tusi e faʻavaivaia mo faʻafitauli faʻafitauli taʻitasi ma faʻapipiʻi le gaosiga o le linter. Ae i le tele o tulaga sa i ai mea e sili atu ona taua e fai ma o le tulafono na tumau pea le le faʻamautuina.
Matai Faufale Green
Ua mavae le taimi, ma ua tatou oo mai i le faaiuga o le faia e le pasi nisi o suega e le mafai ona faatagaina i totonu o le matai. Voila! Na matou fatuina le Green Build Master, lea na faʻataʻitaʻiina i le atinaʻeina o polokalama mo se taimi umi:
O lo'o fa'agasolo le atina'e i se lala ese'ese.
O lo'o fa'agasolo su'ega i lenei filo.
Afai e le manuia su'ega, o le a le mafai e le code ona maua i totonu o le matai.
O le faia o lea faaiuga sa matua tiga lava, aua... na mafua ai le tele o feeseeseaiga, ae sa aoga, aua... Na amata ona maua e faʻamatalaga talosaga mo tuʻufaʻatasiga e aunoa ma se eseesega i le faiga, ma i le aluga o taimi na amata ona faʻaititia le numera o faʻafitauli.
Su'ega IaC
E le gata i le siakiina o sitaili, e mafai ona e faʻaogaina isi mea, mo se faʻataʻitaʻiga, e siaki ai e mafai ona faʻapipiʻi moni au atinaʻe. Pe siaki fo'i o suiga o atina'e e le o'o atu ai i le leiloa o tupe. Aisea e ono manaomia ai lenei mea? O le fesili e lavelave ma filosofia, e sili atu le tali i se tala o loʻo i ai se auto-scaler i luga o le Powershell e leʻi siakiina tulaga tuaoi => sili atu VM na faia nai lo le manaʻomia => na faʻaalu e le kalani le tele o tupe nai lo le fuafuaina. E le manaia tele lenei mea, ae e mafai lava ona maua lenei mea sese i laʻasaga muamua.
Atonu e fesili se tasi, aisea ua atili ai ona lavelave mea tetele? Su'ega mo atina'e, e pei lava o le code, e le'o le fa'afaigofieina, ae e uiga i le iloa pe fa'apefea ona galue au atina'e.
IaC Su'ega Pyramid
Su'ega IaC: Su'esu'ega Fa'amau
Afai e te faʻapipiʻiina le atinaʻe atoa i le taimi e tasi ma siaki pe aoga, atonu e te iloa e tele se taimi e manaʻomia ma e manaʻomia ai le tele o le taimi. O le mea lea, o le faavae e tatau ona avea ma se mea e galue vave, e tele naua, ma e aofia ai le tele o nofoaga anamua.
Bash e fai togafiti
Seʻi o tatou vaavaai i se faaaʻoaʻoga faatauvaa. filifili uma faila i le lisi o loʻo i ai nei ma kopi i se isi nofoaga. O le mea muamua e sau i lou mafaufau:
for i in * ; do
cp $i /some/path/$i.bak
done
Ae fa'apefea pe a iai se avanoa i le igoa faila? Ia, lelei, matou te popoto, matou te iloa le faʻaogaina o upusii:
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
Malo lava? Leai! Ae faʻapefea pe a leai se mea i totonu o le lisi, i.e. e le aoga le globbing.
find . -type f -exec mv -v {} dst/{}.bak ;
Manuia nei? Leai... Ua galo le mea e mafai ona i ai i le igoa faila n.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
Mea faigaluega su'esu'e static
O le faʻafitauli mai le laasaga muamua e mafai ona maua pe a galo ia i matou upusii, aua o loʻo i ai le tele o fofo i le natura. Shellcheck, i se tulaga lautele e tele naua, ma e foliga mai e mafai ona e mauaina se linter mo lau faaputuga i lalo o lau IDE.
E pei ona tatou vaʻaia mai le faʻataʻitaʻiga talu ai, o linters e le malosi ma e le mafai ona faʻaalia uma vaega faʻafitauli. E le gata i lea, e ala i faʻataʻitaʻiga ma suʻega i le atinaʻeina o polokalama, e mafai ona tatou manatua suʻega iunite. O le mea e vave ona oo mai i lou mafaufau o le suniti, Iunite, rspec, sili atu. Ae o le a le mea e fai i le ansible, chef, saltstack ma isi e pei o latou?
I le amataga lava na matou talanoa ai FAAMAU ma o a tatou atinae e tatau ona aofia ai piliki laiti. Ua oo mai lo latou taimi.
O mea tetele ua vaevaeina i piliki laiti, mo se faataitaiga, matafaioi Ansible.
O nisi ituaiga o siosiomaga o loʻo faʻapipiʻiina, pe o le docker poʻo se VM.
Matou te faʻaogaina la matou matafaioi Ansible i lenei siosiomaga suʻega.
Matou te siaki pe na lelei mea uma e pei ona matou faʻamoemoeina (matou te faia suʻega).
Matou te filifili e lelei pe leai.
IaC Su'ega: Unit Su'ega meafaigaluega
Fesili, o a su'ega mo le CFM? E mafai ona e faʻataʻitaʻiina le tusitusiga, pe mafai foi ona e faʻaogaina fofo saunia mo lenei:
Fa'ata'ita'iga mo testinfra, siaki o tagata fa'aoga test1, test2 o lo'o i ai ma o lo'o i totonu o se vaega sshusers:
def test_default_users(host):
users = ['test1', 'test2' ]
for login in users:
assert host.user(login).exists
assert 'sshusers' in host.user(login).groups
O le a le mea e filifili? O le fesili e faigata ma le mautonu, o se faʻataʻitaʻiga lea o suiga i galuega faatino ile github mo le 2018-2019:
IaC Su'ega fa'avae
O le fesili e tulaʻi mai: faʻafefea ona tuʻufaʻatasia uma ma faʻalauiloa? E mafai ave ma fai e oe lava pe afai e lava le numera o inisinia. Pe mafai foi ona e faia ni fofo ua saunia, e ui lava e le tele naua:
Mo le 25-35 matafaioi sa galue 40-70 minute, lea e umi.
O le isi laasaga o le suiga i jenkins/docker/ansible/molecule. Idiologically mea uma e tutusa
Lint tusi ta'aloga.
Faatulaga ia matafaioi.
La'u pusa
Fa'aaoga matafaioi Ansible.
Tamomoe testinfra.
Siaki le fa'aletonu.
O le fa'amama mo le 40 matafaioi ma su'ega mo le sefulu na amata ona alu pe a ma le 15 minute.
O le mea e filifili e fa'alagolago i le tele o mea, e pei o le fa'aputu na fa'aaogaina, tomai i le 'au, ma isi. o iinei e filifili tagata uma mo i latou lava pe faʻafefea ona tapunia le fesili suʻega Unit
Su'ega IaC: Su'ega Fa'atasi
O le isi laasaga i le faʻataʻitaʻiga o faʻataʻitaʻiga o le a avea ma suʻega tuʻufaʻatasia. E tutusa ma su'ega Unit:
O mea tetele ua vaevaeina i piliki laiti, mo se fa'ata'ita'iga Ansible roles.
O nisi ituaiga o siosiomaga o loʻo faʻapipiʻiina, pe o le docker poʻo se VM.
Mo lenei siosiomaga su'ega fa'aoga toatele Matafaioi e mafai.
Matou te siaki pe na lelei mea uma e pei ona matou faʻamoemoeina (matou te faia suʻega).
Matou te filifili e lelei pe leai.
I le tautala faʻapitoa, matou te le siakiina le faʻatinoina o se elemene taʻitasi o le faiga e pei o suʻega iunite, matou te siaki pe faʻafefea ona faʻatulagaina le server atoa.
Su'ega IaC: Su'ega Fa'ai'u i le Fa'ai'uga
I le pito i luga o le pyramid e faʻafeiloaʻi ai i matou e suʻega End to End. O na. Matou te le siakiina le faʻatinoina o se 'auʻaunaga tuʻufaʻatasia, se faʻamatalaga eseʻese, poʻo se piliki ese oa matou atinaʻe. Matou te siakiina le tele o sapalai e fesoʻotaʻi faʻatasi, o matou atinaʻe e galue e pei ona matou faʻamoemoeina. O le mea e leaga ai, ou te leʻi vaʻai lava i fofo faʻapipiʻi ua saunia, masalo ona... O mea tetele e masani ona tulaga ese ma faigata ona faʻataʻitaʻiina ma fausia se faʻavae mo suʻega. O se taunuuga, e faia e tagata uma a latou lava fofo. E i ai se manaoga, ae leai se tali. O le mea lea, o le a ou taʻu atu ia te oe le mea o loʻo i ai ina ia faʻamalosia ai isi e faʻalogo mafaufauga pe faʻafefe loʻu isu i le mea moni o mea uma na faia i aso ua leva i luma atu ia i tatou.
O se galuega faatino ma se talafaasolopito mauoa. O lo'o fa'aaogaina i fa'alapotopotoga tetele ma masalo o lo'o fa'afeagai fa'atasi uma outou ma ia. O le talosaga e lagolagoina le tele o faʻamaumauga, tuʻufaʻatasia, ma isi. O le iloaina o le mea e ono foliga mai o le tele o faila faila, ma le iloa poʻo fea suʻega e faʻatino i le siosiomaga o Jenkins.
O lenei polokalame na galue mo se taimi umi, seia oʻo i totonu o le faʻavae suʻesuʻega matou te leʻi taumafai e faʻafeiloaʻi lenei mea i le Openshift. O pusa e tumau pea, ae ua suia le siosiomaga faʻalauiloa (Talofa DRY toe).
O le suʻesuʻega na faʻaauau pea, ma i le suiga na latou maua ai se mea e pei o le APB (Ansible Playbook Bundle), lea e mafai ai ona e faʻapipiʻiina le malamalama i le faʻaogaina o atinaʻe i totonu o se atigipusa. O na. o lo'o i ai se mea e mafai ona toe fa'aaogaina, fa'ata'ita'iina o le malamalama i le fa'aogaina o atina'e.
O nei mea uma na faʻalogo lelei seia oʻo ina matou oʻo atu i se atinaʻe eseese: matou te manaʻomia Windows mo suʻega. O se taunuuga, o le malamalama o le a, o fea, faʻafefea ona faʻapipiʻi, ma suʻega o loʻo i jenkins.