ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

He hoʻokokoke IaC (Infrastructure as Code) ʻaʻole wale ke code i mālama ʻia i loko o ka waihona, akā pū kekahi me nā kānaka a me nā kaʻina hana e hoʻopuni ana i kēia code. Hiki ke hoʻohana hou i nā ala mai ka hoʻomohala polokalamu i ka hoʻokele waiwai a me ka wehewehe? He mea maikaʻi e hoʻomanaʻo i kēia manaʻo ke heluhelu ʻoe i ka ʻatikala.

English mana

ʻO kēia kahi kope o kaʻu nā hana hana maluna o DevopsConf 2019-05-28.

Paheʻe a me nā wikiō

ʻO ka ʻoihana e like me ka mōʻaukala bash

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Inā paha e hele mai ʻoe i kahi papahana hou, a haʻi lākou iā ʻoe: “ua loaʻa iā mākou Hoʻolālā e like me ke code". I ka ʻoiaʻiʻo, ua puka mai ʻO ka ʻoihana e like me ka mōʻaukala bash a i ʻole he laʻana ʻO ka palapala e like me ka mōʻaukala bash. He kūlana maoli kēia, no ka laʻana, ua wehewehe ʻia kahi hihia like e Denis Lysenko ma kahi ʻōlelo Pehea e hoʻololi ai i ka ʻōnaehana holoʻokoʻa a hoʻomaka e hiamoe me ka maluhia, ua haʻi ʻo ia pehea i loaʻa ai iā lākou kahi ʻōnaehana kūpono no ka papahana mai ka mōʻaukala bash.

Me kekahi makemake, hiki iā mākou ke ʻōlelo i kēlā ʻO ka ʻoihana e like me ka mōʻaukala bash ua like kēia me ke code:

  1. hana hou: Hiki iā ʻoe ke lawe i ka mōʻaukala bash, holo i nā kauoha mai laila mai, a hiki paha iā ʻoe, ma ke ala, e kiʻi i kahi hoʻonohonoho hana ma ke ʻano he huahana.
  2. hoʻololi ʻana: ʻike ʻoe i ka mea i komo mai a me kā lākou i hana ai, ʻaʻole ia he ʻoiaʻiʻo e alakaʻi kēia iā ʻoe i kahi hoʻonohonoho hana ma ka puka.
  3. moʻolelo mōʻaukala: ka moolelo o ka mea nana i hana. ʻaʻole hiki iā ʻoe ke hoʻohana inā nalowale ke kikowaena.

He aha e hana ai?

Hoʻolālā e like me ke code

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO kahi hihia ʻē aʻe e like me ʻO ka ʻoihana e like me ka mōʻaukala bash hiki iā ʻoe ke huki ma nā pepeiao Hoʻolālā e like me ke code, akā inā makemake mākou e hana i kahi mea paʻakikī ma mua o ka server LAMP kahiko maikaʻi, e hele mākou i ka hopena e pono e hoʻololi ʻia kēia code, hoʻololi, hoʻomaikaʻi. A laila makemake mākou e noʻonoʻo i nā mea like ma waena Hoʻolālā e like me ke code a me ka hoʻomohala polokalamu.

MALOO

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ma kahi papahana hoʻomohala ʻōnaehana mālama, aia kahi subtask hoʻonohonoho i ka SDS i kēlā me kēia manawa: ke hoʻokuʻu nei mākou i kahi hoʻokuʻu hou - pono e ʻōwili ʻia no ka hoʻāʻo hou ʻana. He mea maʻalahi ka hana:

  • e komo i loko ma o ssh a hoʻokō i ke kauoha.
  • kope i ka faila ma laila.
  • hoʻoponopono i ka config maanei.
  • e hoʻomaka i ka lawelawe ma laila
  • ...
  • POMAIKAI!

No ka loiloi i wehewehe ʻia, ʻoi aku ka nui o ka bash, ʻoi aku ka nui o ka hoʻomaka ʻana o ka papahana, i ka wā e hoʻomaka ai. ʻO kēia ʻAʻole maikaʻi ke hoʻohana ʻoe i ka bash, akā i ka wā lōʻihi, aia nā noi e kau i kahi mea like, akā ʻokoʻa iki. ʻO ka mea mua i hiki i ka naʻau ke kope-paste. A i kēia manawa ua loaʻa iā mākou ʻelua palapala like loa e hana like i ka mea like. I ka hala ʻana o ka manawa, ua ulu ka nui o nā palapala, a ua kū mākou i ka ʻoiaʻiʻo aia kekahi loiloi ʻoihana no ka hoʻonohonoho ʻana i kahi hoʻonohonoho pono e hoʻonohonoho ʻia ma waena o nā palapala like ʻole, paʻakikī loa kēia.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻIke ʻia aia kahi hana e like me DRY (Mai hana hou iā ʻoe iho). ʻO ka manaʻo e hoʻohana hou i ka code i loaʻa. He mea maʻalahi ia, akā ʻaʻole mākou i hiki koke i kēia. I kā mākou hihia, he manaʻo banal: e hoʻokaʻawale i nā configs mai nā palapala. ʻO kēlā mau mea. ʻoihana noʻonoʻo o ke ʻano o ka hoʻonohonoho ʻana i hoʻokaʻawale ʻia, configs kaʻawale.

SOLID no CFM

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ma ka manawa ua ulu ka papahana a hoomau maoli ʻo ka puka ʻana mai o Ansible. ʻO ke kumu nui o kona hiʻohiʻona, aia ka ʻike ma ka hui a ʻaʻole i hoʻolālā ʻia kēlā bash no ka loiloi paʻakikī. Ua hoʻomaka pū ʻo Ansible e loaʻa i ka loiloi paʻakikī. No ka pale ʻana i nā loina paʻakikī mai ka hoʻololi ʻana i ka haunaele, aia nā loina no ka hoʻonohonoho ʻana i nā code i ka hoʻomohala polokalamu PAʻA Eia kekahi, no ka laʻana, ʻo Grigory Petrov i ka hōʻike "No ke aha e pono ai kahi loea IT i kahi hōʻailona pilikino" i hāpai i ka nīnau i hoʻolālā ʻia ke kanaka ma ke ʻano he mea maʻalahi iā ia ke hana me kekahi mau hui kaiaulu, i ka hoʻomohala ʻana i kēia mau polokalamu. he mau mea. Inā hoʻohui mākou i kēia mau manaʻo ʻelua a hoʻomau i ka hoʻomohala ʻana, e ʻike mākou hiki iā mākou ke hoʻohana PAʻA i mea e maʻalahi ai ka mālama ʻana a me ka hoʻololi ʻana i kēia loiloi i ka wā e hiki mai ana.

ʻO ke Kuʻuna Kuleana Hoʻokahi

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Hoʻokahi wale nō hana o kēlā me kēia papa.

ʻAʻole pono e hoʻohui i ke code a hana i nā monolithic divine spaghetti monsters. Pono nā mea hana i nā pōhaku lepo maʻalahi. ʻIke ʻia inā ʻoe e hoʻokaʻawale i ka puke pāʻani Ansible i mau ʻāpana liʻiliʻi, e heluhelu i nā kuleana Ansible, a laila maʻalahi lākou e mālama.

ʻO ke Kumukānāwai Open Closed

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Kūkākūkā wehe/pani.

  • Wehe i ka hoʻonui: ʻo ia hoʻi, hiki ke hoʻonui ʻia ke ʻano o kahi hui ma ka hana ʻana i nā ʻano hui hou.
  • Paʻa i ka hoʻololi: Ma muli o ka hoʻonui ʻana i ke ʻano o kahi hui, ʻaʻole pono e hoʻololi i ke code e hoʻohana ana i kēlā mau hui.

I ka hoʻomaka ʻana, ua kau mākou i ka ʻōnaehana hoʻāʻo ma nā mīkini virtual, akā ma muli o ka hoʻokaʻawale ʻana o ka loiloi ʻoihana o ka hoʻokau ʻana mai ka hoʻokō ʻana, ua hoʻohui mākou i ka holo ʻana i ka baremetall me ka ʻole o nā pilikia.

ʻO ke Kumukānāwai Hoʻololi Liskov

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ke kumu hoʻololi o Barbara Liskov. Pono e hoʻololi ʻia nā mea i loko o kahi papahana me nā manawa o kā lākou mau subtypes me ka hoʻololi ʻole i ka hoʻokō pono o ka papahana

Inā ʻoe e nānā ākea aʻe, ʻaʻole ia he hiʻohiʻona o kekahi papahana i hiki ke hoʻohana ʻia ma laila PAʻA, mea maʻamau e pili ana i ka CFM, no ka laʻana, ma kahi papahana ʻē aʻe e pono e kau i kahi palapala Java pahu ma luna o nā Java like ʻole, nā kikowaena noi, nā ʻikepili, OS, etc. Ke hoʻohana nei i kēia hiʻohiʻona, e noʻonoʻo wau i nā loina hou aʻe PAʻA

I kā mākou hihia, aia kahi ʻaelike i loko o ka hui ʻoihana inā mākou i hoʻokomo i ka hana imbjava a i ʻole oraclejava, a laila loaʻa iā mākou kahi java binary executable. Pono kēia no ka mea Aia nā kuleana i luna i kēia ʻano; manaʻo lākou iā java. I ka manawa like, hiki iā mākou ke hoʻololi i kahi hoʻokō java / version me kahi ʻē aʻe me ka ʻole o ka hoʻololi ʻana i ka logic deployment application.

Aia ka pilikia ma ʻaneʻi i ka hiki ʻole ke hoʻokō i kēia ma Ansible, ʻo ia ka hopena o kekahi mau ʻaelike i loko o ka hui.

Ke Kumu Hoʻokaʻawale Interface

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ke kumu hoʻokaʻawale hoʻokaʻawale: “Ua ʻoi aku ka maikaʻi o ka nui o nā mea kūʻai aku ma mua o hoʻokahi kikowaena kumu nui.

I ka hoʻomaka ʻana, ua hoʻāʻo mākou e hoʻokomo i nā ʻano like ʻole a pau o ka waiho ʻana i nā noi i loko o kahi puke pāʻani Ansible, akā paʻakikī ke kākoʻo ʻana, a ʻo ke ala i ka wā e loaʻa ai kahi kikowaena waho i kuhikuhi ʻia (manaʻo ka mea kūʻai aku i ka port 443), a laila hiki ke hōʻuluʻulu ʻia kahi ʻōnaehana mai kēlā me kēia. nā pōhaku lepo no kahi hoʻokō kikoʻī.

ʻO ke Kumukānāwai Hoʻololi Kūlohelohe

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ke kumu o ka hoʻohuli hilinaʻi. ʻAʻole pono nā modula ma nā pae kiʻekiʻe ma luna o nā modula ma nā pae haʻahaʻa. Pono nā ʻano modula ʻelua e pili i nā abstractions. ʻAʻole pono nā abstractions e hilinaʻi i nā kikoʻī. Pono nā kiko'ī e pili i nā abstractions.

Maanei e hoʻokumu ʻia ka laʻana ma kahi antipattern.

  1. Loaʻa i kekahi o nā mea kūʻai aku kahi ao pilikino.
  2. Ua kauoha mākou i nā mīkini virtual i loko o ke ao.
  3. Akā ma muli o ke ʻano o ke ao, ua hoʻopaʻa ʻia ka hoʻopili ʻana o ka noi i kahi hypervisor i kau ʻia ai ka VM.

ʻO kēlā mau. Ua kahe ka loina hoʻolālā noi kiʻekiʻe me nā hilinaʻi i nā pae haʻahaʻa o ka hypervisor, a ʻo ia ka pilikia i ka wā e hoʻohana hou ai i kēia loiloi. Mai hana pela.

AaOIeIOUIeXAOAaIN

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻAʻole pili wale ka Infrastructure ma ke code wale nō, akā pili pū kekahi i ka pilina ma waena o nā code a me nā kānaka, e pili ana i nā pilina ma waena o nā mea hoʻomohala.

Kumu kaʻa

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

E manaʻo mākou aia ʻo Vasya ma kāu papahana. Ua ʻike ʻo Vasya i nā mea āpau e pili ana i kāu ʻoihana, he aha ka hopena inā nalowale koke ʻo Vasya? He kūlana ʻoiaʻiʻo loa kēia, no ka mea hiki iā ia ke paʻi ʻia e ke kaʻa. I kekahi manawa hiki mai. Inā loaʻa kēia a me ka ʻike e pili ana i ke code, kona ʻano, pehea e hana ai, nā hiʻohiʻona a me nā ʻōlelo huna ʻaʻole i puʻunaue ʻia i waena o ka hui, a laila hiki iā ʻoe ke hālāwai i kekahi mau kūlana maikaʻi ʻole. No ka hōʻemi ʻana i kēia mau pilikia a hāʻawi i ka ʻike i loko o ka hui, hiki iā ʻoe ke hoʻohana i nā ala like ʻole

Pair Devopsing

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻAʻole like me he mea hoohenehene, ua inu nā mea hoʻokele i ka pia, hoʻololi i nā ʻōlelo huna, a me kahi analogue o ka papahana pālua. ʻO kēlā mau mea. noho ʻelua mau ʻenekinia ma ka kamepiula hoʻokahi, hoʻokahi kīpē a hoʻomaka e hoʻonohonoho i kāu ʻoihana: hoʻonohonoho i kahi kikowaena, kākau i kahi kuleana Ansible, etc. He maikaʻi ke kani, akā ʻaʻole pono iā mākou. Akā ua hana nā hihia kūikawā o kēia hana. Hele mai kahi limahana hou, lawe pū kāna kumu i kahi hana maoli me ia, hana a hoʻololi i ka ʻike.

ʻO kahi hihia kūikawā ʻē aʻe he kāhea hanana. I ka wā pilikia, hui pū kekahi pūʻulu o ka poʻe hana a me ka poʻe i pili, ua koho ʻia kahi alakaʻi, nāna e kaʻana i kāna pale a hoʻokani i ke kaʻa o ka manaʻo. ʻO nā poʻe ʻē aʻe e hahai i nā manaʻo o ke alakaʻi, e kiu i nā hoʻopunipuni mai ka console, e nānā ʻaʻole lākou i hala i kahi laina ma ka log, a aʻo i nā mea hou e pili ana i ka ʻōnaehana. Ua hana pinepine kēia ʻano hana ma mua o ka ʻole.

Loiloi Kuhi

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ma ke kumuhana, ʻoi aku ka maikaʻi o ka hoʻolaha ʻana i ka ʻike e pili ana i ka ʻōnaehana a pehea e hana ai me ka hoʻohana ʻana i ka loiloi code:

  • Hōʻike ʻia ka ʻōnaehana e ke code i loko o ka waihona.
  • Loaʻa nā hoʻololi i kahi lālā kaʻawale.
  • I ka wā o kahi noi hoʻohui, hiki iā ʻoe ke ʻike i ka delta o nā loli i ka ʻōnaehana.

ʻO ka mea koʻikoʻi ma ʻaneʻi ʻo ia ka mea i koho ʻia ka poʻe loiloi, e like me ka papa kuhikuhi, ʻo ia hoʻi. me kekahi degere o ka manaʻo e piʻi ʻoe i kahi ʻāpana hou o ka ʻōnaehana.

Kāhua Code

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

I ka hala ʻana o ka manawa, hoʻomaka nā squabbles i ka wā o nā loiloi, no ka mea... loaʻa i nā mea loiloi ko lākou ʻano ponoʻī a ʻo ka hoʻololi ʻana o nā mea nānā i hoʻopaʻa ʻia me nā ʻano like ʻole: 2 space a i ʻole 4, camelCase a i ʻole snake_case. ʻAʻole hiki ke hoʻokō koke i kēia.

  • ʻO ka manaʻo mua ʻo ia ka paipai ʻana i ka hoʻohana ʻana i ka linter, ma hope o nā mea a pau, he ʻenekinia nā mea a pau, akamai nā mea a pau. Akā ʻaʻole kūpono nā mea hoʻoponopono ʻē aʻe, OS
  • Ua ulu kēia i loko o kahi bot i kākau e lohi no kēlā me kēia pilikia pilikia a hoʻopili i ka puka linter. Akā i ka hapanui o nā hihia, ʻoi aku ka nui o nā mea nui e hana ai a ʻaʻole i hoʻopaʻa ʻia ke code.

Kumu Kūkulu ʻOmaomao

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ua hala ka manawa, a ua hiki mai mākou i ka hopena ʻaʻole hiki ke ʻae ʻia ka hana ʻaʻole i hala i kekahi mau hoʻokolohua. Voila! Ua hana mākou i ka Green Build Master, i hoʻomaʻamaʻa ʻia i ka hoʻomohala polokalamu no ka manawa lōʻihi:

  • Hoʻomaka ka hoʻomohala ʻana ma kahi lālā kaʻawale.
  • Ke holo nei nā hoʻokolohua ma kēia pae.
  • Inā hāʻule nā ​​hoʻokolohua, ʻaʻole e hoʻokomo ke code i ka haku.

He mea ʻeha loa ka hoʻoholo ʻana, no ka mea... ua nui ka hoʻopaʻapaʻa, akā ua kūpono ia, no ka mea... Ua hoʻomaka nā loiloi e loaʻa nā noi no ka hui ʻana me ka ʻole o ka ʻokoʻa i ke ʻano, a i ka wā i hoʻomaka ai ka emi ʻana o ka nui o nā wahi pilikia.

IaC Hoao

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ma waho aʻe o ka nānā ʻana i ke ʻano, hiki iā ʻoe ke hoʻohana i nā mea ʻē aʻe, no ka laʻana, e nānā i hiki i kāu ʻoihana ke hoʻolaha maoli. A i ʻole e nānā inā ʻaʻole e lilo ke kālā ke hoʻololi i ka ʻoihana. No ke aha paha e pono ai kēia? He paʻakikī a me ka noʻonoʻo ka nīnau, ʻoi aku ka maikaʻi o ka pane ʻana me kahi moʻolelo aia kekahi auto-scaler ma Powershell ʻaʻole i nānā i nā kūlana palena => ʻoi aku ka nui o nā VM ma mua o ka pono => ua hoʻolilo ka mea kūʻai aku i ke kālā ma mua o ka mea i hoʻolālā ʻia. ʻAʻole ʻoluʻolu loa kēia, akā hiki nō ke hopu i kēia hewa i nā pae mua.

E nīnau paha kekahi, no ke aha e hoʻonui ai i ka ʻoihana paʻakikī? ʻAʻole pili ka hoʻāʻo ʻana i nā ʻōnaehana, e like me ke code, akā e pili ana i ka ʻike pehea e hana ai kāu ʻoihana.

Pyramid ho'āʻo iaC

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

IaC Ho'āʻo: Static Analysis

Inā hoʻonoho ʻoe i ka ʻōnaehana holoʻokoʻa i ka manawa hoʻokahi a nānā i ka hana ʻana, ʻike paha ʻoe he nui ka manawa a makemake i ka manawa nui. No laila, ʻo ke kumu ka mea e hana wikiwiki ai, he nui ia, a uhi ʻia nā wahi primitive he nui.

He paʻakikī ʻo Bash

E nānā kākou i kahi laʻana liʻiliʻi. koho i nā faila a pau i ka papa kuhikuhi o kēia manawa a kope i kahi ʻē aʻe. ʻO ka mea mua i hiki i ka manaʻo:

for i in * ; do 
    cp $i /some/path/$i.bak
done

He aha inā he wahi ma ka inoa faila? ʻAe, ʻae, akamai mākou, ʻike mākou i ka hoʻohana ʻana i nā huaʻōlelo:

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

Hana maikaʻi? ʻAʻole! He aha inā ʻaʻohe mea ma ka papa kuhikuhi, ʻo ia. ʻAʻole e holo ka globbing.

find . -type f -exec mv -v {} dst/{}.bak ;

Hana maikaʻi i kēia manawa? ʻAʻole... Poina i ka mea hiki ke loaʻa i ka inoa faila n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

Nā mea hana hoʻopaʻa paʻa

Hiki ke loaʻa ka pilikia mai ka ʻanuʻu mua i ka poina iā mākou i nā ʻōlelo, no kēia mea he nui nā lāʻau lapaʻau ma ke ʻano. Shellcheck, ma ka laulā he nui o lākou, a ʻoi aku paha e hiki iā ʻoe ke loaʻa kahi linter no kāu waihona ma lalo o kāu IDE.

'ōlelo
Hana 'Ōlelo

ke kī
Shellcheck

Ruby
ʻO RuboCop

python
pylint

Ansible
Ansible Lint

IaC ho'āʻo: Unit ho'āʻo

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

E like me kā mākou i ʻike ai mai ka laʻana mua, ʻaʻole mana loa nā linters a ʻaʻole hiki ke kuhikuhi i nā wahi pilikia āpau. Eia hou, ma ka hoʻohālikelike me ka hoʻāʻo ʻana i ka hoʻomohala ʻana i nā polokalamu, hiki iā mākou ke hoʻomanaʻo i nā hoʻokolohua ʻāpana. ʻO ka mea i hiki koke mai i ka manaʻo sunit, junit, rspec, pytest. Akā he aha ka mea e hana ai me ansible, chef, saltstack a me nā mea ʻē aʻe e like me lākou?

I ka hoʻomaka ʻana ua kamaʻilio mākou PAʻA a he mau pōhaku lepo liʻiliʻi kā mākou hana. Ua hiki mai ko lakou manawa.

  1. Hoʻokaʻawale ʻia ka ʻoihana i nā pōhaku liʻiliʻi, no ka laʻana, Ansible roles.
  2. Hoʻonohonoho ʻia kekahi ʻano kaiapuni, he docker a i ʻole VM.
  3. Hoʻohana mākou i kā mākou kuleana Ansible i kēia kaiapuni hoʻāʻo.
  4. Nānā mākou ua hana nā mea a pau e like me kā mākou i manaʻo ai (holo mākou i nā hoʻokolohua).
  5. Hoʻoholo mākou ua maikaʻi a ʻaʻole maikaʻi.

IaC ho'āʻo: Unit ho'āʻo mea paahana

Nīnau, he aha nā hoʻokolohua no CFM? Hiki iā ʻoe ke holo i ka ʻatikala, a i ʻole hiki iā ʻoe ke hoʻohana i nā hoʻonā i mākaukau no kēia:

CFM
Hana 'Ōlelo

ʻO ke kūpono
Testinfra

Ke aliʻi
Kahunapule

Ke aliʻi
Kūlana kikowaena

paʻakai
ʻIli

Ka laʻana no ka testinfra, e nānā ana i nā mea hoʻohana test1, test2 aia a i loko o kahi hui 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

He aha ka mea e koho ai? He paʻakikī a kānalua ka nīnau, eia kahi hiʻohiʻona o nā loli i nā papahana ma github no 2018-2019:

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

IaC hoʻāʻo ʻana

Aia ka nīnau: pehea e hui pū ai a hoʻomaka? Hiki e lawe a hana iā ʻoe iho inā lawa ka nui o nā ʻenekinia. A i ʻole hiki iā ʻoe ke lawe i nā hoʻonā i hana ʻia, ʻoiai ʻaʻole nui loa o lākou:

CFM
Hana 'Ōlelo

ʻO ke kūpono
Molekule

Ke aliʻi
Keena hoao

ʻOhana hoʻoponopono
Terratest

Ka laʻana o nā hoʻololi i nā papahana ma github no 2018-2019:

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Molecule vs. hale hoʻāʻo

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

I ka wā mua mākou ho'āʻo e hoʻohana i ka hale ʻike:

  1. E hana i kahi VM i ka like.
  2. E hoʻohana i nā kuleana Ansible.
  3. Holo ka nānā.

No 25-35 mau hana he 40-70 mau minuke, he lōʻihi.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ka hana aʻe ʻo ka hoʻololi ʻana i jenkins/docker/ansible/molecule. Idiologically like nā mea a pau

  1. Nā puke pāʻani lint.
  2. E laina i nā kuleana.
  3. ʻO ka pahu hoʻolele
  4. E hoʻohana i nā kuleana Ansible.
  5. Holo testinfra.
  6. Nānā idempotency.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Hoʻomaka ka linting no 40 mau hana a me nā hoʻāʻo no kahi kakini ma kahi o 15 mau minuke.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ka mea e koho ai e pili ana i nā kumu he nui, e like me ka hoʻopaʻa ʻana i hoʻohana ʻia, ka loea i ka hui, etc. ma ʻaneʻi e hoʻoholo nā mea a pau no lākou iho pehea e pani ai i ka nīnau hoʻāʻo Unit

IaC Ho'āʻo: Hoʻohui Hoʻohui

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

ʻO ka hana hou aʻe i ka pyramid hoʻāʻo ʻenehana ʻo ia nā hoʻokolohua hoʻohui. Ua like lākou me nā ho'āʻo Unit:

  1. Hoʻokaʻawale ʻia ka ʻōnaehana i nā pōhaku liʻiliʻi, no ka laʻana nā kuleana Ansible.
  2. Hoʻonohonoho ʻia kekahi ʻano kaiapuni, he docker a i ʻole VM.
  3. No kēia kaiapuni hoʻāʻo e pili he pūpū o Ansible kuleana.
  4. Nānā mākou ua hana nā mea a pau e like me kā mākou i manaʻo ai (holo mākou i nā hoʻokolohua).
  5. Hoʻoholo mākou ua maikaʻi a ʻaʻole maikaʻi.

ʻO ka ʻōlelo koʻikoʻi, ʻaʻole mākou e nānā i ka hana o kahi mea hoʻokahi o ka ʻōnaehana e like me nā hoʻāʻo ʻana, nānā mākou i ka hoʻonohonoho ʻana o ka server ma ke ʻano holoʻokoʻa.

Hoʻāʻo IaC: Hoʻopau a hoʻopau i nā hoʻāʻo

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ma ka piko o ka pyramid, hoʻokipa ʻia mākou e nā hoʻokolohua End to End. ʻO kēlā mau mea. ʻAʻole mākou e nānā i ka hana o kahi kikowaena ʻokoʻa, kahi palapala ʻokoʻa, a i ʻole kahi brick ʻokoʻa o kā mākou ʻoihana. Nānā mākou i ka nui o nā kikowaena i hoʻohui pū ʻia, hana kā mākou ʻoihana e like me kā mākou e manaʻo ai. ʻO ka mea pōʻino, ʻaʻole au i ʻike i nā hoʻonā pahu pahu mākaukau i hana ʻia, no ka mea ... He ʻokoʻa a paʻakikī ka hana ʻana i ka hoʻohālikelike ʻana a hana i kahi hoʻolālā no ka hoʻāʻo ʻana. ʻO ka hopena, hana kēlā me kēia kanaka i kā lākou hoʻonā ponoʻī. Aia kahi koi, akā ʻaʻohe pane. No laila, e haʻi aku wau iā ʻoe i ka mea e hiki ai ke hoʻoikaika i nā poʻe ʻē aʻe e kani i nā manaʻo a i ʻole i koʻu ihu i ka ʻoiaʻiʻo ua hana ʻia nā mea āpau ma mua o mākou.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

He papahana me ka mōʻaukala waiwai. Hoʻohana ʻia ia i nā hui nui a ua hele pololei kēlā me kēia o ʻoukou i nā ala me ia. Kākoʻo ka palapala noi i nā ʻikepili he nui, hoʻohui, etc. ʻO ka ʻike ʻana i ke ʻano o ka ʻōnaehana he nui nā faila docker-compose, a me ka ʻike ʻana i nā hoʻokolohua e holo ai ma kahi o Jenkins.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ua lōʻihi ka lōʻihi o kēia hana, a hiki i loko o ke kahua noiʻi ʻaʻole mākou i hoʻāʻo e hoʻololi i kēia i Openshift. Ua like nā ipu, akā ua loli ke kaiapuni hoʻomaka (hello DRY hou).

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ua hele hou ka manaʻo noiʻi, a ma ka wehe ʻana ua loaʻa iā lākou kahi mea e like me APB (Ansible Playbook Bundle), e hiki ai iā ʻoe ke hoʻopaʻa i ka ʻike no ka hoʻopili ʻana i nā ʻōnaehana i loko o kahi pahu. ʻO kēlā mau mea. aia kahi ʻike hou a hoʻāʻo ʻia e pili ana i ka hoʻopololei ʻana i ka ʻōnaehana.

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Ua kani maikaʻi kēia mau mea a hiki i ka holo ʻana i kahi ʻōnaehana heterogeneous: pono mākou i Windows no nā hoʻāʻo. ʻO ka hopena, aia ka ʻike o ka mea, kahi, pehea e kau ai, a me ka hoʻāʻo ma jenkins.

Panina

ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure

Infrastructure like Code is

  • Code i loko o ka waihona.
  • Pili kanaka.
  • ʻO ka hoʻāʻo ʻana i nā mea hana.

nā loulou

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka