Ua hoʻololi ʻia mai Terraform i CloudFormation - a mihi

ʻO ka hōʻike ʻana i nā ʻōnaehana ma ke ʻano he code ma kahi ʻano kikokikona hiki ke hana hou ʻia he hana maʻalahi maʻalahi no nā ʻōnaehana ʻaʻole pono e hoʻopili me nā ʻiole. He inoa kēia hana - Hoʻolālā e like me ke code, a i kēia manawa aia ʻelua mau mea hana kaulana e hoʻokō ai, ʻoi loa ma AWS: ʻOhana hoʻoponopono и Hoʻokumu ʻana o ke ao.

Ua hoʻololi ʻia mai Terraform i CloudFormation - a mihi
Hoʻohālikelike i ka ʻike me Terraform a me CloudFormation

Ma mua o ka hiki ʻana mai Twitch (iā Amazon Jr.) Ua hana au i hoʻokahi hoʻomaka a hoʻohana iā Terraform no ʻekolu makahiki. Ma kahi hou, ua hoʻohana pū wau iā Terraform me koʻu ikaika a pau, a laila ua hoʻohuli ka hui i ka hoʻololi i nā mea āpau a la Amazon, me CloudFormation. Ua hoʻoikaika ikaika au i nā hana maikaʻi loa no nā mea ʻelua, a ua hoʻohana au i nā mea hana ʻelua i nā kaila hana paʻakikī, hui ākea. Ma hope mai, ma hope o ka noʻonoʻo ʻana i nā hopena o ka neʻe ʻana mai Terraform a CloudFormation, ua maopopo iaʻu ʻo Terraform paha ka koho maikaʻi loa no ka hui.

Terraform weliweli

polokalamu Beta

ʻAʻole i hoʻokuʻu ʻo Terraform i ka mana 1.0, ʻo ia ke kumu maikaʻi ʻole e hoʻohana ai. Ua loli nui ia mai koʻu hoʻāʻo mua ʻana iaʻu iho, akā i kēlā manawa terraform apply ua haki pinepine ma hope o kekahi mau mea hou a i ʻole ma hope o ʻelua mau makahiki o ka hoʻohana ʻana. E ʻōlelo wau "he ʻokoʻa nā mea a pau i kēia manawa," akā ... ʻo ia ka mea a nā mea a pau e ʻōlelo ai, ʻaʻole? Aia nā hoʻololi i kūpono ʻole me nā mana o mua, ʻoiai ua kūpono lākou, a manaʻo ʻia ʻo ka syntax a me nā abstractions o nā hale kūʻai waiwai ka mea e pono ai mākou. Me he mea lā ua ʻoi aku ka maikaʻi o ka mea kani, akā... :-0

Ma ka ʻaoʻao ʻē aʻe, ua hana maikaʻi ʻo AWS i ka mālama ʻana i hope. Ma muli paha o ka hoʻāʻo pinepine ʻia ʻana o kā lākou lawelawe i loko o ka hui a laila, paʻi ʻia ka inoa. No laila "ua ho'āʻo ikaika lākou" he mea haʻahaʻa. ʻO ka mālama ʻana i ka hoʻohālikelike hope me nā API no kahi ʻōnaehana like ʻole a paʻakikī e like me ka AWS he paʻakikī loa. ʻO ka mea i mālama i nā API lehulehu i hoʻohana nui ʻia e like me lākou e hoʻomaopopo i ka paʻakikī o ka hana ʻana no nā makahiki he nui. Akā ʻaʻole i loli ka ʻano o CloudFormation, i koʻu hoʻomanaʻo ʻana i nā makahiki.

E halawai me ka wawae... he poka

E like me kaʻu ʻike, holoi i ka punawai haole ʻAʻole hiki ke hoʻopaʻa CloudFormation mai kāu waihona CF. Pēlā nō me Terraform. Hiki iā ʻoe ke hoʻokomo i nā kumuwaiwai i loaʻa i kāu waihona. Hiki ke ʻōlelo ʻia he mea kupanaha ka hana, akā me ka mana nui hiki mai ke kuleana nui. Pono ʻoe e hoʻohui i kahi kumuwaiwai i ka waihona, a ʻoiai ʻoe e hana ana me kāu waihona, ʻaʻole hiki iā ʻoe ke holoi a hoʻololi i kēia kumuwaiwai. I kekahi lā ua hoʻi hope. I kekahi lā ma Twitch, ua hoʻokomo hewa kekahi i ka pūʻulu palekana AWS o kekahi i loko o kā lākou Terraform stack ʻoiai ʻaʻole i hana hewa. Ua komo au i kekahi mau kauoha a... ua nalowale ka pūʻulu palekana (me nā kaʻa komo mai).

Terraform Nui

Hoʻihoʻi mai nā mokuʻāina i piha ʻole

I kekahi manawa ʻaʻole hiki i CloudFormation ke hoʻololi loa mai kekahi mokuʻāina i kekahi. I ka manawa like, e ho'āʻo ʻo ia e hoʻi i ka mua. He mea minamina ka hiki ʻole o kēia i nā manawa a pau. He mea weliweli paha ka hoʻopaʻapaʻa ʻana i ka mea i hana ma hope - ʻaʻole ʻoe i ʻike inā hauʻoli ʻo CloudFormation i ka hacked - ʻoiai e hoʻoponopono ai. Inā hiki iā ia ke hoʻi i ka mokuʻāina ma mua a ʻaʻole paha, ʻaʻole ʻo ia i ʻike maoli pehea e hoʻoholo ai a, ma ke ʻano maʻamau, kau ʻia no nā hola e kali ana i kahi hana mana.

ʻO Terraform, ma ka ʻaoʻao ʻē aʻe, makemake e hoʻōla mai nā hoʻololi i hāʻule ʻoi aku ka maikaʻi a hāʻawi i nā mea hana debugging holomua.

ʻOi aku ka maʻalahi o ka hoʻololi ʻana i ke kūlana palapala

“ʻAe, e ka mea hoʻoili ukana, ke hoʻololi nei ʻoe. Akā, pehea?"

— ʻenekinia hopohopo, mākaukau e kaomi i ke pihi "ʻae".

I kekahi manawa pono wau e hana i kekahi mau manipulations me ka mea hoʻohālikelike ukana i ka waihona CloudFormation, e like me ka hoʻohui ʻana i kahi helu port a i ʻole ka hoʻololi ʻana i kahi hui palekana. Ua loli maikaʻi nā hōʻike ClouFormation. ʻO wau, ma nā pine a me nā nila, e nānā pālua i ka faila yaml he ʻumi mau manawa e hōʻoia ʻaʻole wau i holoi i kekahi mea e pono ai a ʻaʻole i hoʻohui i kahi mea pono ʻole.

ʻOi aku ka maopopo o Terraform ma kēia ʻano. I kekahi manawa, ʻaʻole maopopo loa ʻo ia (heluhelu: ʻoluʻolu). ʻO ka mea pōmaikaʻi, loaʻa i ka mana hou ka hōʻike ʻana i nā loli i hiki iā ʻoe ke ʻike pono i nā mea e loli nei.

ʻĀkau

Kākau lako polokalamu i hope.

No ka hoʻopuka pololei ʻana, ʻo ka hiʻohiʻona koʻikoʻi o ka polokalamu lōʻihi ka hiki ke hoʻololi i ka loli. E kākau i kekahi polokalamu i hope. ʻO ka hapa pinepine aʻu i hana hewa ai ma ka lawe ʻana i kahi lawelawe "maʻalahi", a laila hoʻomaka e hoʻopili i nā mea āpau i hoʻokahi CloudFormation a i ʻole Terraform stack. A ʻoiaʻiʻo, mau mahina ma hope mai ua hōʻike ʻia ua maopopo iaʻu nā hewa āpau, a ʻaʻole maʻalahi ka lawelawe! A i kēia manawa pono wau e wāwahi i kahi waihona nui i nā ʻāpana liʻiliʻi. Ke hana ʻoe me CloudFormation, hiki ke hana ʻia kēia ma ka hana mua ʻana i ka waihona i loaʻa, a ʻaʻole wau e hana i kēia me kaʻu ʻikepili. ʻO Terraform, ma ka ʻaoʻao ʻē aʻe, ua hiki ke hoʻokaʻawale i ka hoʻopaʻa ʻana a wāwahi iā ia i nā ʻāpana liʻiliʻi i hiki ke hoʻomaopopo ʻia.

Nā modula ma git

ʻOi aku ka maʻalahi o ka hoʻokaʻawale ʻana i ka code Terraform ma mua o ke kaʻana ʻana i ka code CloudFormation. Me Terraform, hiki iā ʻoe ke kau i kāu code i kahi waihona git a komo iā ia me ka hoʻohana ʻana i ka mana semantic version. Hiki i nā mea a pau ke komo i kēia waihona ke hoʻohana hou i ke code kaʻana like. ʻO ka like o CloudFormation he S3, akā ʻaʻohe ona pono like, a ʻaʻohe kumu e haʻalele ai mākou i ka git no ka S3.

Ua ulu ka hui a hiki i ka hiki ke kaʻana like i nā waihona maʻamau i kahi pae koʻikoʻi. Hana ʻo Terraform i kēia mea maʻalahi a kūlohelohe, ʻoiai ʻo CloudFormation e hoʻokuʻu iā ʻoe i nā hoops ma mua o ka loaʻa ʻana o kahi mea e like me kēia hana.

Nā hana e like me ke code

"E kākau kāua a maikaʻi."

—he ʻenekinia 3 mau makahiki ma mua o ka hana ʻana i ka paikikala Terraform.

I ka hiki ʻana mai i ka hoʻomohala polokalamu, ʻo Go a i ʻole kahi polokalamu Java ʻaʻole ia he code wale nō.

Ua hoʻololi ʻia mai Terraform i CloudFormation - a mihi
Code like Code

Aia nō hoʻi ka ʻōnaehana e hana ai.

Ua hoʻololi ʻia mai Terraform i CloudFormation - a mihi
Hoʻolālā e like me ke code

Akā, no hea mai ʻo ia? Pehea e nānā ai? Aia ma hea kāu code? Pono nā mea hoʻomohala i ka ʻae komo?

Ua hoʻololi ʻia mai Terraform i CloudFormation - a mihi
Nā hana ma ke ʻano he Code

ʻO ka lilo ʻana i mea hoʻomohala polokalamu ʻaʻole ia wale nō ke kākau ʻana i nā code.

ʻAʻole ʻo AWS wale nō: hoʻohana paha ʻoe i nā mea hoʻolako ʻē aʻe. SignalFx, PagerDuty a i ʻole Github. Loaʻa paha iā ʻoe kahi kikowaena Jenkins kūloko no CI/CD a i ʻole kahi dashboard Grafana kūloko no ka nānā ʻana. Ua koho ʻia ʻo Infra as Code no nā kumu like ʻole, a he mea koʻikoʻi kēlā me kēia no nā mea āpau e pili ana i ka polokalamu.

I koʻu hana ʻana ma Twitch, ua hoʻolōʻihi mākou i nā lawelawe i loko o ka hui ʻana o Amazon a me nā ʻōnaehana AWS. Hoʻopili mākou a kākoʻo i nā microservices he nui, e hoʻonui ana i nā kumukūʻai hana. Ua hele nā ​​kūkākūkā e like me kēia:

  • Я: Damn, ʻo ia ka nui o nā hana e overclock i hoʻokahi microservice. Pono wau e hoʻohana i kēia ʻōpala e hana i kahi moʻokāki AWS (ua hele mākou i 2 mau moʻokāki ma microservice), a laila ʻo kēia no ka hoʻonohonoho ʻana i nā leka, ʻo kēia no kahi waihona code, a ʻo kēia no ka papa inoa leka uila, a laila ʻo kēia...
  • Ke alakaʻi: E kākau kāua a maikaʻi.
  • Я: ʻAe, akā e hoʻololi ʻia ka palapala. Pono mākou i kahi ala e nānā ai i kēia mau gizmos Amazon i kūkulu ʻia i kēia lā.
  • Ke alakaʻi: Maikaʻi loa. A e kākau mākou i kahi palapala no kēia.
  • Я: Nui! A pono paha ka palapala e hoʻonohonoho i nā ʻāpana. E ʻae anei ʻo ia iā lākou?
  • Ke alakaʻi: E lawe ia i kona wahi e hele ai!
  • Я: Hiki ke loli ke kaʻina hana a nalowale ka hoʻohālikelike hope. Pono kekahi ʻano mana mana mana.
  • Ke alakaʻi: Nui manaʻo!
  • Я: Hiki ke hoʻololi lima ʻia nā mea hana, i loko o ka mea hoʻohana. Pono mākou i kahi ala e nānā a hoʻoponopono i kēia.

… 3 makahiki ma hope:

  • Ke alakaʻi: A loaʻa iā mākou ka terraform.

ʻO ka pono o ka moʻolelo: ʻoiai inā ʻoe poʻo ma luna o nā kuʻekuʻe wāwae i nā mea āpau Amazon, ke hoʻohana nei ʻoe i kahi mea ʻaʻole mai AWS, a he mokuʻāina kēia mau lawelawe e hoʻohana ana i kahi ʻōlelo hoʻonohonoho e mālama i kēlā mokuʻāina i ka sync.

CloudFormation lambda vs git modules terraform

ʻO lambda ka hoʻonā CloudFormation i ka pilikia loiloi maʻamau. Me ka lambda hiki iā ʻoe hana macros ai ole ia, mea hoohana. Hoʻopuka kēia ala i nā mea paʻakikī hou aʻe ʻaʻole i loaʻa ma Terraform's semantic versioning of git modules. Noʻu, ʻo ka pilikia koʻikoʻi ʻo ka hoʻokele ʻana i nā ʻae no kēia mau mea hoʻohana lambdas (a he mau kakini kēia o nā moʻolelo AWS). ʻO kekahi pilikia koʻikoʻi ʻo ia ka pilikia "he aha ka mea i hele mua, ka moa a i ʻole ka hua?" pilikia: pili ia i ka code lambda. ʻO kēia hana ponoʻī he ʻōnaehana a me ke code, a pono iā ia ke nānā a me nā mea hou. ʻO ke kui hope loa i loko o ka pahu kupapaʻu, ʻo ia ka paʻakikī o ka hoʻololi ʻana i nā code lambda; pono mākou e hōʻoia i ka hoʻololi ʻole o nā hana stack me ke kauoha pololei ʻole ma waena o nā holo.

Ke hoʻomanaʻo nei au i kekahi manawa aʻu i makemake ai e hana i kahi hoʻolaha canary no ka Elastic Beanstalk kaiapuni me kahi mea hoʻohālikelike ukana maʻamau. ʻO ka mea maʻalahi loa e hana, ʻo ia ka hana ʻana i ka lua o ka hoʻoili ʻana no ka EB ma ka ʻaoʻao o ke kaiapuni hana, me ka hoʻonui ʻana: e hoʻohui i ka pūʻulu hoʻolaha canary auto-scaling me ka LB i hoʻokomo ʻia i loko o ke kaiapuni hana. A mai ka hoʻohana ʻana o Terraform ASG beantalk ma ke ʻano he hopena, pono kēia i 4 mau laina hou o ke code ma Terraform. I koʻu nīnau ʻana inā loaʻa kahi hopena hoʻohālikelike i CloudFormation, kuhikuhi lākou iaʻu i kahi waihona git holoʻokoʻa me kahi pipeline deployment a me nā mea āpau, nā mea āpau no kahi mea e hiki ai i nā laina 4 ʻilihune o Terraform code ke hana.

ʻOi aku ka maikaʻi o ka ʻike ʻana i ka drift

E hōʻoia i ka ʻoiaʻiʻo e like me nā manaʻolana.

ʻIke ʻana i ka neʻe ʻana He hana ikaika loa ia e like me ka hiʻohiʻona code no ka mea kōkua ia e hōʻoia i ka ʻoiaʻiʻo e kūlike me nā manaʻolana. Loaʻa iā ia me CloudFormation a me Terraform. Akā i ka ulu ʻana o ka waihona hana, ʻo ka ʻimi ʻana i ka drift ma CloudFormation i hoʻopuka hou aʻe i nā ʻike hoʻopunipuni.

Me Terraform, loaʻa iā ʻoe nā makau ola ʻoi aku ka holomua no ka ʻike drift. No ka laʻana, komo ʻoe i ke kauoha hoʻololi pololei i ka wehewehe hana ECS inā makemake ʻoe e haʻalele i nā hoʻololi i kahi wehewehe hana kikoʻī me ka nānā ʻole ʻana i nā loli i kāu hoʻolālā ECS holoʻokoʻa.

CDK a me ka wā e hiki mai ana o CloudFormation

He paʻakikī ka CloudFormation i ka hoʻokele ʻana i nā unahi ʻoihana cross-infrastructure. ʻIke ʻia ka nui o kēia mau pilikia a pono ka mea hana i nā mea like aws-cdk, he hoʻolālā no ka wehewehe ʻana i ka ʻōnaehana ao i ke code a holo ia ma o AWS CloudFormation. He mea hoihoi ia ke ʻike i nā mea e hiki mai ana no ka aws-cdk, akā paʻakikī ke hoʻokūkū me nā ikaika ʻē aʻe o Terraform; e lawe mai i CloudFormation i kēia lā, e koi ʻia nā hoʻololi honua.

No laila ʻaʻole hōʻeha ʻo Terraform

ʻO kēia ka "infrastructure ma ke ʻano he code", ʻaʻole "ma ke ʻano he kikokikona".

ʻO kaʻu manaʻo mua o Terraform he mea ʻino loa ia. Manaʻo wau ʻaʻole maopopo iaʻu ke ʻano. ʻAneʻane ʻike ʻole ʻia nā ʻenekini a pau ma ke ʻano he ʻano kikokikona e pono e hoʻololi ʻia i loko o ka ʻōnaehana makemake. MAI HANA I KEIA ANO.

Hoʻopili pū ka ʻoiaʻiʻo o ka hoʻomohala polokalamu maikaʻi iā Terraform.

Ua ʻike au i nā hana he nui i hoʻohana ʻia e hana i nā code maikaʻi i mālama ʻole ʻia ma Terraform. Ua aʻo ʻoe no nā makahiki e lilo i mea polokalamu polokalamu maikaʻi. Mai haʻalele i kēia ʻike no kou hana pū ʻana me Terraform. Hoʻopili nā pono o ka hoʻomohala polokalamu maikaʻi iā Terraform.

Pehea e hiki ʻole ai ke kākau ʻia ke code?

Ua ʻike au i nā pūʻulu Terraform nui me ka ʻole palapala. Pehea ʻoe e kākau ai i ke code ma nā ʻaoʻao - me ka ʻole palapala? Hoʻohui i nā palapala e wehewehe ana i kāu wae helu Terraform (hoʻoikaika i ka huaʻōlelo "code"), no ke aha he mea nui kēia ʻāpana, a me kāu hana.

Pehea e hiki ai iā mākou ke hoʻokau i nā lawelawe i hoʻokahi hana nui () hana?

Ua ʻike au i nā waihona Terraform paʻakikī i hōʻike ʻia ma ke ʻano he module hoʻokahi. No ke aha ʻaʻole mākou e hoʻolaha i nā polokalamu i kēia ala? No ke aha mākou e hoʻokaʻawale ai i nā hana nui i nā hana liʻiliʻi? Pili nā pane like iā Terraform. Inā ʻoi aku ka nui o kāu module, pono ʻoe e hoʻokaʻawale iā ia i nā modula liʻiliʻi.

ʻAʻole hoʻohana kāu hui i nā hale waihona puke?

Ua ʻike au i ka hana ʻana o nā ʻenekinia i kahi papahana hou me ka hoʻohana ʻana iā Terraform, kope kope i nā ʻāpana nui mai nā papahana ʻē aʻe i kā lākou ponoʻī, a laila hoʻopili iā lākou a hiki i ka hoʻomaka ʻana e hana. E hana ʻoe e like me kēia me ka code "kaua" i kāu hui? ʻAʻole mākou hoʻohana wale i nā hale waihona puke. ʻAe, ʻAʻole pono nā mea a pau he hale waihona puke, akā, ʻauhea mākou me ka ʻole o nā hale waihona puke ma ke kumu?!

ʻAʻole ʻoe e hoʻohana ana iā PEP8 a i ʻole gofmt?

Loaʻa i ka hapa nui o nā ʻōlelo kahi papahana hoʻopono maʻamau. Ma Python kēia ʻo PEP8. Ma Go - gofmt. Loaʻa iā Terraform kona iho: terraform fmt. E hauʻoli ia no kou olakino!

E hoʻohana anei ʻoe iā React me ka ʻike ʻole iā JavaScript?

Hiki i nā modula Terraform ke maʻalahi i kekahi ʻāpana o ka ʻenehana paʻakikī āu i hana ai, akā ʻaʻole ia he manaʻo ʻaʻole hiki iā ʻoe ke hoʻopili me ia. Makemake ʻoe e hoʻohana pololei iā Terraform me ka ʻike ʻole i nā kumuwaiwai? Ua make ʻoe: e hala ka manawa, ʻaʻole ʻoe e haku iā Terraform.

Ke coding nei ʻoe me ka singletons a i ʻole ka hoʻokele hilinaʻi?

ʻO ka dependency injection kahi hana maikaʻi loa no ka hoʻomohala polokalamu a ʻoi aku ka maikaʻi ma mua o nā singletons. Pehea e pono ai kēia ma Terraform? Ua ʻike au i nā modula Terraform e hilinaʻi nei i ka mokuʻāina mamao. Ma kahi o ke kākau ʻana i nā modules e kiʻi i ka mokuʻāina mamao, e kākau i kahi module e lawe i nā ʻāpana. A laila e hāʻawi i kēia mau ʻāpana i ka module.

Hana maikaʻi anei kāu mau hale waihona puke i nā mea he ʻumi a i ʻole hoʻokahi mea maikaʻi?

ʻO nā hale waihona puke ʻoi aku ka maikaʻi, ʻo ia ka poʻe e nānā pono ana i kahi hana a lākou e hana maikaʻi loa ai. Ma kahi o ke kākau ʻana i nā modula Terraform nui e hoʻāʻo e hana i nā mea āpau i ka manawa hoʻokahi, kūkulu i nā ʻāpana o lākou e hana maikaʻi i kahi mea. A laila hoʻohui iā lākou e like me ka mea e pono ai.

Pehea ʻoe e hoʻololi ai i nā hale waihona puke me ka ʻole o hope?

ʻO kahi module Terraform maʻamau, e like me ka waihona maʻamau, pono e kamaʻilio i nā loli i nā mea hoʻohana me ka ʻole o ka hoʻohālikelike ʻana i hope. He mea hoʻonāukiuki ke hana ʻia kēia mau hoʻololi i loko o nā hale waihona puke, a e like me ka huhū ke hana ʻia nā hoʻololi like ʻole i hope i nā modula Terraform. Manaʻo ʻia e hoʻohana i nā tag git a me semver i ka wā e hoʻohana ai i nā modula Terraform.

Ke holo nei kāu lawelawe hana ma kāu kamepiula a i ʻole kahi kikowaena data?

Loaʻa iā Hashicorp nā mea hana like ao honua e holo i kāu terraform. ʻO kēia mau lawelawe kikowaena ka mea maʻalahi i ka hoʻokele, loiloi, a ʻae i nā loli terraform.

ʻAʻole ʻoe e kākau i nā hoʻokolohua?

Hoʻomaopopo nā ʻenekinia pono e hoʻāʻo ʻia ke code, akā poina iā lākou iho e pili ana i ka hoʻāʻo ʻana i ka wā e hana ai me Terraform. No ka ʻoihana, piha kēia i nā manawa hoʻopunipuni. ʻO kaʻu ʻōlelo aʻo, ʻo ia ka "hoʻāʻo" a i ʻole "hana i ka laʻana" me ka hoʻohana ʻana i nā modula i hiki ke kau pololei ʻia no ka hoʻāʻo ʻana i ka wā CI/CD.

Terraform a me microservices

ʻO ke ola a me ka make o nā ʻoihana microservice e pili ana i ka wikiwiki, ka hana hou, a me ka hoʻopau ʻana o nā microservice workstacks hou.

ʻO ka ʻaoʻao maikaʻi ʻole maʻamau e pili ana i nā hale hana microservice, a ʻaʻole hiki ke hoʻopau ʻia, pili i ka hana, ʻaʻole ke code. Inā ʻoe e noʻonoʻo iā Terraform ma ke ʻano he ala e hoʻokaʻawale wale ai i ka ʻaoʻao ʻoihana o kahi hoʻolālā microservices, a laila nalo ʻoe i nā pono maoli o ka ʻōnaehana. I kēia manawa ua hala ua like nā mea a pau me ke code.

Source: www.habr.com

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