ʻ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ʻohālikelike i ka ʻike me Terraform a me CloudFormation
Ma mua o ka hiki ʻana mai
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ō.
Code like Code
Aia nō hoʻi ka ʻōnaehana e hana ai.
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?
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
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
ʻ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.
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
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
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 ʻ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
ʻ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
Source: www.habr.com