ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Nui ka poʻe i ʻike a hoʻohana iā Terraform i kā lākou hana i kēlā me kēia lā, akā ʻaʻole i hoʻokumu ʻia nā hana maikaʻi loa no ia. Pono kēlā me kēia hui e hana i kāna mau ala ponoʻī a me nā ʻano hana.

Hoʻomaka maʻalahi kāu ʻoihana: he mau kumuwaiwai + kekahi mau mea hoʻomohala. I ka wā lōʻihi, ulu ia ma nā ʻano ʻano āpau. Loaʻa iā ʻoe nā ala e hui pū ai i nā kumuwaiwai i loko o nā modula Terraform, hoʻonohonoho i nā code i loko o nā waihona, a he aha nā mea ʻē aʻe e hewa ai? (mau ʻōlelo hope kaulana)

Ua hala ka manawa a ke manaʻo nei ʻoe ʻo kāu ʻōnaehana kāu holoholona hou, akā no ke aha? Ke hopohopo nei ʻoe e pili ana i nā loli hiki ʻole ke wehewehe i ka ʻōnaehana, makaʻu ʻoe e hoʻopā i ka ʻōnaehana a me ke code - ma muli o ka hopena, hoʻopaneʻe ʻoe i ka hana hou a hōʻemi paha i ka maikaʻi...

Ma hope o ʻekolu mau makahiki o ka mālama ʻana i kahi hōʻiliʻili o nā modula kaiaulu Terraform no AWS ma Github a me ka mālama lōʻihi o Terraform i ka hana ʻana, ua mākaukau ʻo Anton Babenko e kaʻana like i kāna ʻike: pehea e kākau ai i nā modula TF i ʻole e hōʻeha i ka wā e hiki mai ana.

I ka pau ʻana o ke kamaʻilio ʻana, e kamaʻāina ka poʻe komo i nā loina hoʻokele waiwai ma Terraform, nā hana maikaʻi loa e pili ana i nā modules i Terraform, a me kekahi mau loina hoʻohui mau e pili ana i ka hoʻokele waiwai.

Akahana: ʻIke au aia kēia hōʻike i ka lā Nowemapa 2018—ua hala nā makahiki 2. ʻAʻole kākoʻo hou ʻia ka mana o Terraform 0.11 i kūkākūkā ʻia ma ka hōʻike. I nā makahiki 2 i hala iho nei, ua hoʻokuʻu ʻia nā mea hou 2, kahi i loaʻa i nā mea hou, nā hoʻomaikaʻi a me nā loli. E ʻoluʻolu e hoʻolohe i kēia a nānā i ka palapala.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Nā Manaʻo:

ʻO Anton Babenko koʻu inoa. Ua hoʻohana paha kekahi o ʻoukou i ke code aʻu i kākau ai. E kamaʻilio wau e pili ana i kēia me ka hilinaʻi nui aʻe ma mua o ka wā ma mua, no ka mea hiki iaʻu ke loaʻa i nā helu helu.

Ke hana nei au ma Terraform a ua komo nui au i ka nui o nā papahana open source e pili ana iā Terraform a me Amazon mai ka makahiki 2015.

Mai ia manawa ua kākau au i nā code e kau ai ma kahi ala hoihoi. A e ho'āʻo wau e haʻi aku iā ʻoe i kēia manawa.

E kamaʻilio wau e pili ana i nā paʻakikī a me nā kikoʻī o ka hana ʻana me Terraform. Akā ʻaʻole ia ke kumuhana o HighLoad. A i kēia manawa e hoʻomaopopo ʻoe i ke kumu.

Ma hope o ka manawa, hoʻomaka wau e kākau i nā modula Terraform. Ua kākau nā mea hoʻohana i nā nīnau, kākau hou wau iā lākou. A laila kākau wau i nā pono hana like ʻole e hoʻohālikelike i ke code me ka hoʻohana ʻana i kahi hook pre-commit, etc.

Nui nā papahana hoihoi. Makemake au i ka hoʻokumu code no ka mea makemake au i ka lolouila e hana hou aʻe nā hana noʻu a me ka mea polokalamu, no laila ke hana nei au i kēia manawa i ka Terraform code generator mai nā kiʻi ʻike. Ua ʻike paha kekahi o ʻoukou iā lākou. He mau pahu nani kēia me nā pua. A manaʻo wau he mea maikaʻi inā hiki iā ʻoe ke kaomi i ka pihi "Export" a loaʻa iā ia ma ke ʻano he code.

No Ukraine au. Ua noho au ma Norewai no na makahiki he nui.

Eia kekahi, ua hōʻiliʻili ʻia ka ʻike no kēia hōʻike mai ka poʻe i ʻike i koʻu inoa a loaʻa iaʻu ma nā pūnaewele kaiapuni. ʻaneʻane loaʻa iaʻu ka inoa kapakapa like.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

E like me kaʻu i ʻōlelo ai, ʻo wau ka mea mālama nui i nā modula Terraform AWS, ʻo ia kekahi o nā waihona nui loa ma GitHub kahi e hoʻokipa ai mākou i nā modula no nā hana maʻamau: VPC, Autoscaling, RDS.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A ʻo ka mea āu i lohe ai i kēia manawa ʻo ia ka mea maʻamau. Inā kānalua ʻoe ua maopopo ʻoe i ke ʻano o Terraform, a laila ʻoi aku ka maikaʻi e hoʻolilo i kou manawa ma kahi ʻē aʻe. Nui nā ʻōlelo ʻenehana ma aneʻi. A ʻaʻole au i kānalua i ka haʻi ʻana aku i ke kiʻekiʻe o ka hōʻike. ʻO ia ke ʻano hiki iaʻu ke kamaʻilio me ka hoʻohana ʻana i nā huaʻōlelo āpau me ka ʻole o ka wehewehe nui ʻana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ua ʻike ʻia ʻo Terraform i ka makahiki 2014 ma ke ʻano he mea hoʻohana e hiki ai iā ʻoe ke kākau, hoʻolālā a hoʻokele i nā ʻōnaehana ma ke ʻano he code. ʻO ka manaʻo nui ma aneʻi ʻo "infrastructure as code."

ʻO nā palapala āpau, e like me kaʻu i ʻōlelo ai, ua kākau ʻia i loko terraform.io. Manaʻo wau e ʻike ka hapa nui o ka poʻe e pili ana i kēia pūnaewele a ua heluhelu i ka palapala. Inā pēlā, aia ʻoe ma kahi kūpono.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kēia ke ʻano o kahi faila hoʻonohonoho Terraform maʻamau, kahi mākou e wehewehe mua ai i kekahi mau ʻano.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

I kēia hihia mākou wehewehe "aws_region".

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A laila wehewehe mākou i nā kumuwaiwai a mākou e makemake ai e hana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Holo mākou i kekahi mau kauoha, ʻo ia hoʻi "terraform init" i mea e hoʻouka ai i nā hilinaʻi a me nā mea hoʻolako.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A holo mākou i ke kauoha "terraform apply" i mea e nānā ai inā pili ka hoʻonohonoho i ʻōlelo ʻia i nā kumuwaiwai a mākou i hana ai. No ka mea ʻaʻole mākou i hana i kekahi mea ma mua, koi ʻo Terraform iā mākou e hana i kēia mau kumuwaiwai.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hoʻopaʻa mākou i kēia. Pēlā mākou e hana ai i kahi bākeke i kapa ʻia ʻo seasnail.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Aia kekahi mau mea pono like. ʻO ka hapa nui o ʻoukou e hoʻohana nei iā Amazon e ʻike iā AWS CloudFormation a i ʻole Google Cloud Deployment Manager a i ʻole Azure Resource Manager. Loaʻa i kēlā me kēia o lākou kāna hoʻokō ponoʻī o kekahi ʻano no ka mālama ʻana i nā kumuwaiwai i loko o kēlā me kēia mea hoʻolako kapuaʻi lehulehu. ʻOi aku ka maikaʻi o Terraform no ka mea hiki iā ʻoe ke hoʻokele ma luna o 100 mau mea hoʻolako. (Nā kikoʻī hou aku maanei)

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO nā pahuhopu a Terraform i alualu ai mai ka hoʻomaka ʻana:

  • Hāʻawi ʻo Terraform i kahi ʻike hoʻokahi o nā kumuwaiwai.
  • Hiki iā ʻoe ke kākoʻo i nā paepae hou a pau.
  • A ua hoʻolālā ʻia ʻo Terraform mai ka hoʻomaka ʻana ma ke ʻano he mea pono e hiki ai iā ʻoe ke hoʻololi i nā ʻōnaehana me ka palekana a me ka wānana.

I ka makahiki 2014, he mea maʻamau ka huaʻōlelo "predictable" i kēia pōʻaiapili.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO Terraform kahi mea hoʻohana āpau. Inā he API kāu, a laila hiki iā ʻoe ke hoʻomalu pono i nā mea āpau:

  • Hiki iā ʻoe ke hoʻohana ma mua o 120 mau mea hoʻolako e hoʻokele i nā mea āpau āu e makemake ai.
  • No ka laʻana, hiki iā ʻoe ke hoʻohana iā Terraform e wehewehe i ke komo ʻana i nā waihona waihona GitHub.
  • Hiki iā ʻoe ke hana a pani i nā pōpoki ma Jira.
  • Hiki iā ʻoe ke hoʻokele i nā metric New Relic.
  • Hiki iā ʻoe ke hana i nā faila ma ka dropbox inā makemake ʻoe.

Hoʻokō ʻia kēia me ka hoʻohana ʻana i nā mea hoʻolako Terraform, nona kahi API hāmama e hiki ke wehewehe ʻia ma Go.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

E ʻōlelo mākou ua hoʻomaka mākou e hoʻohana iā Terraform, heluhelu i kekahi mau palapala ma ka pūnaewele, nānā i kekahi wikiō, a hoʻomaka e kākau main.tf, e like me kaʻu i hōʻike ai ma nā kiʻi paheʻe mua.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A maikaʻi nā mea a pau, loaʻa iā ʻoe kahi faila e hana i kahi VPC.

Inā makemake ʻoe e hana i kahi VPC, a laila kuhikuhi ʻoe i kēia mau laina 12. E wehewehe i ka ʻāina āu e makemake ai e hana, ʻo ia ka cidr_block o nā helu IP e hoʻohana ai. ʻo ia wale nō.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ma keʻano maʻamau, e ulu mālie ka papahana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A e hoʻohui ʻoe i kahi pūʻulu o nā mea hou ma laila: nā kumu waiwai, nā kumu ʻikepili, e hoʻohui pū ʻoe me nā mea hoʻolako hou, hikiwawe ʻoe e makemake e hoʻohana iā Terraform e hoʻokele i nā mea hoʻohana i kāu moʻokāki GitHub, a me nā mea ʻē aʻe. ʻO nā mea hoʻolako DNS, e hele i nā mea a pau. He mea maʻalahi ka Terraform.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

E nana kakou i keia la'ana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hoʻohui mālie ʻoe i ka internet_gateway no ka mea makemake ʻoe i nā kumuwaiwai mai kāu VPC e loaʻa i ka pūnaewele. He manaʻo maikaʻi kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka hopena kēia main.tf:

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kēia ka ʻaoʻao luna o main.tf.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kēia ka ʻaoʻao lalo o main.tf.

A laila hoʻohui ʻoe i ka subnet. I ka manawa āu e makemake ai e hoʻohui i nā ʻīpuka NAT, nā alahele, nā papa kuhikuhi a me kahi pūʻulu o nā subnets ʻē aʻe, ʻaʻole e loaʻa iā ʻoe nā laina 38, akā ma kahi o 200-300 mau laina.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ia hoʻi, ke ulu mālie nei kāu faila main.tf. A hoʻokomo pinepine nā kānaka i nā mea a pau i hoʻokahi faila. Hōʻike ʻia ka 10-20 Kb ma main.tf. E noʻonoʻo ʻo 10-20 Kb ka ʻike kikokikona. A pili nā mea a pau i nā mea a pau. Ke hele mālie nei kēia hana me ka paʻakikī. ʻO 10-20 Kb kahi hihia hoʻohana maikaʻi, i kekahi manawa ʻoi aku. A ʻaʻole manaʻo nā kānaka he hewa kēia.

E like me ka papahana maʻamau, ʻaʻole ʻo ka ʻenehana e like me ke code, ua maʻa mākou i ka hoʻohana ʻana i kahi pūʻulu o nā papa like ʻole, nā pūʻolo, nā modules, nā hui. Hiki iā Terraform iā ʻoe ke hana i nā mea like.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

  • Ke ulu nei ke code.
  • Ke ulu nei ka hilinaʻi ma waena o nā kumuwaiwai.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A he pono nui ko makou. Hoʻomaopopo mākou ʻaʻole hiki iā mākou ke ola hou e like me kēia. Ke ulu nui nei kā mākou code. ʻO 10-20 Kb, ʻoiaʻiʻo, ʻaʻole nui loa, akā ke kamaʻilio nei mākou e pili ana i ka waihona pūnaewele, ʻo ia hoʻi, ua hoʻohui wale ʻoe i nā kumuwaiwai pūnaewele. ʻAʻole mākou e kamaʻilio e pili ana i ka Application Load Balancer, deployment ES cluster, Kubernetes, a me nā mea ʻē aʻe, kahi e hiki ai ke ulana maʻalahi i ka 100 Kb. Inā kākau ʻoe i kēia mau mea a pau, e aʻo koke ʻoe ua hāʻawi ʻo Terraform i nā modula Terraform.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO nā modula Terraform kahi hoʻonohonoho Terraform paʻa ponoʻī i mālama ʻia ma ke ʻano he hui. ʻO ia wale nō kāu e ʻike ai e pili ana i nā modula Terraform. ʻAʻole naʻauao lākou, ʻaʻole lākou e ʻae iā ʻoe e hana i nā pilina paʻakikī e pili ana i kekahi mea. Hāʻule kēia a pau ma luna o nā poʻohiwi o nā mea hoʻomohala. ʻO ia, he ʻano hoʻonohonoho Terraform wale nō kēia āu i kākau mua ai. A hiki iā ʻoe ke kāhea iā ia ma ke ʻano he hui.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

No laila ke hoʻāʻo nei mākou e hoʻomaopopo pehea e hoʻonui ai i kā mākou 10-20-30 Kb o ke code. Ke hoʻomaopopo mālie nei mākou he pono mākou e hoʻohana i kekahi mau modula.

ʻO nā ʻano modula mua āu e ʻike ai he modula waiwai. ʻAʻole lākou maopopo i ke ʻano o kāu ʻoihana, pehea kāu ʻoihana, kahi a me nā kūlana. ʻO kēia nā modules aʻu, a me ke kaiāulu open source, e hoʻokele, a mākou e kau nei i mua ma ke ʻano he mau papa kūkulu mua loa no kāu ʻoihana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

He laʻana o ka module punawai.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ke kāhea mākou i kahi modula waiwai, kuhikuhi mākou mai ke ala hea mākou e hoʻouka ai i kāna mau mea.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hōʻike mākou i ka mana a mākou e makemake ai e hoʻoiho.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hāʻawi mākou i kahi hui hoʻopaʻapaʻa ma laila. ʻo ia wale nō. ʻO ia wale nō kā mākou e ʻike ai ke hoʻohana mākou i kēia module.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Manaʻo ka poʻe he nui inā hoʻohana lākou i ka mana hou loa, e paʻa nā mea a pau. Akā ʻaʻole. Pono e hoʻololi ʻia ka ʻōnaehana; pono mākou e pane maopopo i ka mana o kēia a i ʻole kēlā ʻāpana i kau ʻia i.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Eia ke code i loko o kēia module. Module pūʻulu palekana. Ma ʻaneʻi hele ka ʻōwili i ka laina 640th. ʻO ka hoʻokumu ʻana i kahi kumuwaiwai palekana-croup ma Amazon i kēlā me kēia hoʻonohonoho hiki ke hana ʻole ʻia. ʻAʻole lawa ka hana wale ʻana i kahi pūʻulu palekana a haʻi iā ia i nā lula e kau ai iā ia. He mea maʻalahi loa ia. Aia he miliona mau palena ʻokoʻa i loko o Amazon. No ka laʻana, inā hoʻohana ʻoe ʻO ka hopena VPC, ka papa inoa prefix, nā API like ʻole a ho'āʻo e hoʻohui i kēia me nā mea ʻē aʻe, a laila ʻaʻole ʻae ʻo Terraform iā ʻoe e hana i kēia. A ʻaʻole ʻae ka Amazon API i kēia. No laila, pono mākou e hūnā i kēia loiloi weliweli i loko o kahi module a hāʻawi i ka code mea hoʻohana e like me kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻAʻole pono ka mea hoʻohana e ʻike pehea i hana ʻia ai i loko.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka lua o nā ʻano modula, aia i nā modula waiwai, ua hoʻoponopono i nā pilikia i pili pono i kāu ʻoihana. ʻO ka manawa pinepine he wahi kēia i hoʻonui ʻia no Terraform a kau i kekahi mau waiwai paʻa no nā hōʻailona, ​​​​no nā kūlana ʻoihana. Hiki iā ʻoe ke hoʻohui i nā hana ma laila ʻaʻole ʻae ʻo Terraform iā ʻoe e hoʻohana. Aia kēia i kēia manawa. I kēia manawa ka mana 0.11, kahi e lilo i mea o ka wā i hala. Eia nō naʻe, ʻo nā preprocessors, jsonnet, cookiecutter a me kahi pūʻulu o nā mea ʻē aʻe ka mīkini kōkua pono e hoʻohana ʻia no ka hana piha.

Ma hope aʻe e hōʻike wau i kekahi mau laʻana o kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ua kapa ʻia ke ʻano hoʻohālike like.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hōʻike ʻia ke kumu mai kahi e hoʻoiho ai i ka ʻike.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hoʻokomo ʻia kahi pūʻulu waiwai i loko o kēia module.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A laila, i loko o kēia module, ua kāhea ʻia kahi pūʻulu o nā modula waiwai e hana i kahi VPC a i ʻole Application Load Balancer, a i ʻole e hana i kahi pūʻulu palekana a i ʻole no kahi hui Elastic Container Service.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻElua ʻano modula. He mea nui kēia e hoʻomaopopo no ka mea ʻaʻole i kākau ʻia ka hapa nui o nā ʻike aʻu i hui ai i kēia hōʻike.

A he pilikia loa ka palapala ma Terraform i kēia manawa no ka mea e ʻōlelo wale ana aia kēia mau hiʻohiʻona, hiki iā ʻoe ke hoʻohana iā lākou. Akā ʻaʻole ʻo ia e ʻōlelo pehea e hoʻohana ai i kēia mau hiʻohiʻona, no ke aha e ʻoi aku ka maikaʻi o ka hoʻohana ʻana iā lākou. No laila, he nui loa ka poʻe e kākau i kahi mea hiki ʻole iā lākou ke noho pū.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

E nānā kākou i ke kākau ʻana i kēia mau modula aʻe. A laila e ʻike mākou pehea e kāhea ai iā lākou a pehea e hana ai me ke code.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Kakau inoa Terraform - https://registry.terraform.io/

ʻO ka ʻōlelo aʻoaʻo #0 ʻaʻole e kākau i nā modula waiwai. Ua kākau mua ʻia ka hapa nui o kēia mau modules no ʻoe. E like me kaʻu i ʻōlelo ai, he kumu wehe lākou, ʻaʻole lākou i loko o kāu loiloi ʻoihana, ʻaʻohe o lākou mau waiwai paʻakikī no nā IP address, password, etc. A ua kākau ʻia paha. Nui nā modula no nā kumuwaiwai mai Amazon. Ma kahi o 650. A ʻo ka hapa nui o lākou he ʻano maikaʻi.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ma kēia hiʻohiʻona, hele mai kekahi iā ʻoe a ʻōlelo mai, "Makemake wau e hiki ke hoʻokele i kahi waihona. E hana i module i hiki iaʻu ke hana i kahi waihona." ʻAʻole ʻike ke kanaka i nā kikoʻī hoʻokō o Amazon a i ʻole Terraform. 'Ōlelo waleʻo ia: "Makemake au e mālama iā MSSQL." ʻO ia hoʻi, ke manaʻo nei mākou e kāhea ʻo ia i kā mākou module, e hāʻawi i ke ʻano mīkini ma laila, a hōʻike i ka palena manawa.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A ʻaʻole pono e ʻike ke kanaka e hana mākou i ʻelua mau kumuwaiwai like ʻole i loko o kēia module: hoʻokahi no MSSQL, ʻo ka lua no nā mea ʻē aʻe a pau, no ka mea ma Terraform 0.11 ʻaʻole hiki iā ʻoe ke kuhikuhi i nā koina o ka manawa ma ke ʻano he koho.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A ma ka puka ʻana mai kēia module, hiki i ke kanaka ke loaʻa i kahi helu wahi. ʻAʻole ʻo ia e ʻike mai kahi waihona, mai hea mai mākou e hana nei i kēia mau mea āpau. He mea nui kēia o ka hūnā. ʻAʻole pili kēia i kēlā mau modula i hoʻolaha ʻia ma ke kumu ākea, akā i kēlā mau modules āu e kākau ai i loko o kāu mau papahana a me nā hui.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kēia ka lua o ka hoʻopaʻapaʻa, he mea nui loa inā ʻoe e hoʻohana nei iā Terraform no kekahi manawa. Loaʻa iā ʻoe kahi waihona kahi āu e kau ai i kāu mau modula Terraform āpau no kāu hui. A he mea maʻamau ka ulu ʻana o kēia papahana i ka nui o hoʻokahi a ʻelua paha megabytes. Maikaʻi kēia.

Akā ʻo ka pilikia pehea e kāhea ai ʻo Terraform i kēia mau modula. No ka laʻana, inā ʻoe e kāhea i kahi module e hana i kēlā me kēia mea hoʻohana, e hoʻouka mua ʻo Terraform i ka waihona holoʻokoʻa a laila hoʻokele i ka waihona kahi i loaʻa ai kēlā module kikoʻī. Ma kēia ala e hoʻoiho ʻoe i hoʻokahi megabyte i kēlā me kēia manawa. Inā mālama ʻoe i nā mea hoʻohana 100 a i ʻole 200, a laila e hoʻoiho ʻoe i 100 a i ʻole 200 megabytes, a laila hele i kēlā waihona. No laila, ʻaʻole ʻoe makemake e hoʻoiho i kahi pūʻulu o nā mea i kēlā me kēia manawa āu e pā ai "Terraform init".

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

https://github.com/mbtproject/mbt

ʻElua mau hoʻonā i kēia pilikia. ʻO ka mea mua e hoʻohana i nā ala pili. Ma kēia ʻano e hōʻike ai ʻoe i ke code he kūloko ka waihona (./). A ma mua o kou hoʻomaka ʻana i kekahi mea, hana ʻoe i kahi clone Git o kēia waihona kūloko. Ma kēia ʻano hana ʻoe i hoʻokahi manawa.

Aia nō, he nui nā hemahema. No ka laʻana, ʻaʻole hiki iā ʻoe ke hoʻohana i ka versioning. A he paʻakikī kēia i kekahi manawa e noho pū me.

Haʻina lua. Inā he nui kāu mau submodules a ua loaʻa iā ʻoe kekahi ʻano pipeline i hoʻokumu ʻia, a laila aia ka papahana MBT, kahi e hiki ai iā ʻoe ke hōʻiliʻili i nā ʻāpana like ʻole mai kahi monorepository a hoʻouka iā lākou i S3. He ala maikaʻi loa kēia. No laila, ʻo 1.0.0 Kb wale nō ke kaumaha o ka faila iam-user-1.zip, no ka mea liʻiliʻi loa ke code e hana ai i kēia kumuwaiwai. A ʻoi aku ka wikiwiki o ka hana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

E kamaʻilio e pili ana i ka mea hiki ʻole ke hoʻohana i nā modules.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

No ke aha kēia ʻino i loko o nā modules? ʻO ka mea maikaʻi loa ʻo ka hoʻohana ʻana i ka mea hoʻohana. Manaʻo ka mea hoʻohana he koho hōʻoia hōʻoia i hiki ke hoʻohana ʻia e nā poʻe like ʻole. No ka laʻana, e hoʻopili mākou a pau i ka hana. ʻO kēia ke ʻano e lawe ʻo Terraform i kēia kuleana. A laila me kēia kuleana e hana ia i nā hana ʻē aʻe.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Aʻo ka meaʻino, inā makemakeʻo Vasya e hoʻohui iā Amazon ma kekahiʻano, no ka laʻana, me ka hoʻohanaʻana i ka mea hoʻololi kaiapuni paʻamau, a makemakeʻo Petya e hoʻohana i kāna kī like, i loaʻa iā ia ma kahi huna, a lailaʻaʻole hiki iāʻoe ke kuhikuhi i nā meaʻelua i loko. Terraform. A i ʻole lākou e ʻike i ka ʻeha, ʻaʻohe pono e hōʻike i kēia poloka i ka module. Pono e hōʻike ʻia kēia ma kahi kiʻekiʻe. ʻO ia hoʻi, loaʻa iā mākou kahi module waiwai, kahi module infrastructure a me kahi haku mele ma luna. A pono e hōʻike ʻia kēia ma kahi kiʻekiʻe.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka lua o ka hewa ka mea hoʻolako. Eia ka hewa, ʻaʻole ia he mea liʻiliʻi, no ka mea, inā kākau ʻoe i ke code a pono ia no ʻoe, a laila manaʻo paha ʻoe inā hana ia, no ke aha e hoʻololi ai.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka hewa ʻaʻole ʻoe e hoʻomalu i ka wā e hoʻomaka ai kēia mea hoʻolako, ʻo ka mea mua. A ʻo ka lua, ʻaʻole ʻoe e kāohi i ke ʻano o aws ec2, ʻo ia hoʻi ke kamaʻilio nei mākou e pili ana iā Linux a i ʻole Windows i kēia manawa. No laila ʻaʻole hiki iā ʻoe ke kākau i kahi mea e hana like ma nā ʻōnaehana hana like ʻole a i ʻole no nā hihia hoʻohana like ʻole.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka hiʻohiʻona maʻamau, i hōʻike ʻia i loko o ka palapala mana, ʻo ia ke kākau ʻoe i ka aws_instance a kuhikuhi i kahi hui o nā hoʻopaʻapaʻa, a laila ʻaʻohe hewa inā ʻoe e kuhikuhi i ka mea hoʻolako "local-exec" ma laila a holo i kāu ansible- puke pāʻani .

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻOiaʻiʻo, ʻae, ʻaʻohe hewa o kēlā. Akā, e ʻike koke ʻoe ʻaʻole i loaʻa kēia mea local-exec, no ka laʻana, ma launch_configuration.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A ke hoʻohana nei ʻoe i ka launch_configuration, a makemake ʻoe e hana i kahi hui autoscaling mai kahi manawa, a laila i ka launch_configuration ʻaʻohe manaʻo o "mea hoʻolako". Aia ka manaʻo o "ʻikepili hoʻohana".

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

No laila, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka ʻikepili mea hoʻohana. A e hoʻokuʻu ʻia ia ma ka hihia ponoʻī, i ka wā i hoʻohuli ʻia ai ka mea hoʻohana, a i ʻole i ka ʻikepili mea hoʻohana like, i ka wā e hoʻohana ai ka hui autoscaling i kēia launch_configuration.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Inā makemake ʻoe e holo i ka mea hoʻolako, no ka mea, he ʻāpana gluing ia, ke hana ʻia kahi kumuwaiwai, i kēlā manawa pono ʻoe e holo i kāu mea hoʻolako, kāu kauoha. Nui nā kūlana like.

A ʻo ka punawai kūpono loa no kēia ua kapa ʻia ʻo null_resource. ʻO Null_resource kahi waiwai dummy ʻaʻole i hana maoli ʻia. ʻAʻole ia e hoʻopā i kekahi mea, ʻaʻohe API, ʻaʻohe autoscaling. Akā hiki iā ʻoe ke hoʻomalu i ka wā e holo ai ke kauoha. I kēia hihia, holo ke kauoha i ka wā hana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

loulou http://bit.ly/common-traits-in-terraform-modules

Nui nā hōʻailona. ʻAʻole wau e hele i nā hōʻailona a pau i nā kikoʻī. Aia kekahi ʻatikala e pili ana i kēia. Akā inā ua hana ʻoe me Terraform a i hoʻohana paha i nā modula o nā poʻe ʻē aʻe, a laila ua ʻike pinepine ʻoe i ka nui o nā modules, e like me ka hapa nui o ke code ma ka open source, i kākau ʻia e nā poʻe no ko lākou pono ponoʻī. Ua kākau kekahi kanaka a hoʻoponopono i kona pilikia. Hoʻopaʻa wau iā ia ma GitHub, e ola. E ola ia, akā inā ʻaʻohe palapala a me nā hiʻohiʻona ma laila, ʻaʻohe mea e hoʻohana. A inā ʻaʻohe hana e hiki ai iā ʻoe ke hoʻoponopono i kahi mea liʻiliʻi ma mua o kāna hana kikoʻī, a laila ʻaʻohe mea e hoʻohana. Nui nā ala e nalowale ai nā mea hoʻohana.

Inā makemake ʻoe e kākau i kahi mea e hoʻohana ai nā kānaka, a laila paipai wau e hahai i kēia mau hōʻailona.

Eia kēia mau mea:

  • Nā palapala a me nā laʻana.
  • Hana piha.
  • Nā mea paʻamau kūpono.
  • Code maʻemaʻe.
  • Hoʻopau.

He kūlana ʻokoʻa nā hoʻokolohua no ka mea paʻakikī loa ke kākau. Manaʻoʻiʻo wau i nā palapala a me nā laʻana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

No laila, ua nānā mākou pehea e kākau ai i nā modula. ʻElua mau hoʻopaʻapaʻa. ʻO ka mea mua, ʻo ia ka mea nui loa, ʻaʻole ia e kākau inā hiki iā ʻoe, no ka mea, ua hana mua kekahi poʻe i kēia mau hana ma mua ou. A ʻo ka lua, inā hoʻoholo ʻoe, a laila e hoʻāʻo e hoʻohana i nā mea hoʻolako i nā modula a me nā mea hoʻolako.

ʻO kēia ka ʻāpana hina o ka palapala. Ke noʻonoʻo nei paha ʻoe: “ʻAʻole maopopo kekahi mea. ʻAʻole maopopo." Akā e ʻike kākou i loko o ʻeono mahina.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

I kēia manawa e kamaʻilio mākou e pili ana i ke kāhea ʻana i kēia mau modules.

Hoʻomaopopo mākou e ulu ana kā mākou code i ka manawa. ʻAʻole loaʻa iā mākou hoʻokahi faila, loaʻa iā mākou he 20 faila. Aia lākou a pau i ka waihona hoʻokahi. A i ʻole ʻelima waihona. Malia paha e hoʻomaka ana mākou e wāwahi iā lākou ma ka ʻāina, e kekahi mau mea. A laila maopopo iā mākou i kēia manawa ua loaʻa iā mākou kekahi mau kumu o ka synchronization a me ka orkestra. ʻO ia hoʻi, pono mākou e hoʻomaopopo i ka mea e hana ai inā hoʻololi mākou i nā kumuwaiwai pūnaewele, pehea mākou e hana ai me ke koena o kā mākou kumuwaiwai, pehea e hoʻokumu ai i kēia mau hilinaʻi, etc.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻElua mau ʻano kiʻekiʻe. ʻO ka hopena mua loa i hoʻokahi. Loaʻa iā mākou hoʻokahi faila master. No ka manawa, ʻo ia ka hana maikaʻi loa ma ka pūnaewele Terraform.

Akā i kēia manawa ua kākau ʻia e like me ka mea i hoʻopau ʻia a wehe ʻia. Ma hope o ka manawa, uaʻike ka poʻe Terraform he mamao loa kēia mai ka hana maikaʻi loa, no ka mea, hoʻomaka nā kānaka e hoʻohana i ka papahana ma nāʻano likeʻole. A aia nā pilikia. No ka laʻana, ke papa inoa mākou i nā mea hilinaʻi a pau ma kahi hoʻokahi. Aia kekahi mau kūlana ke kaomi mākou i ka "Hoʻolālā Terraform" a hiki i ka hoʻonui ʻana o Terraform i nā mokuʻāina o nā kumuwaiwai āpau, hiki ke hala ka manawa nui.

ʻO ka nui o ka manawa, no ka laʻana, 5 mau minuke. No kekahi, he manawa nui kēia. Ua ʻike au i nā hihia ma kahi o 15 mau minuke. Ua hoʻohana ka AWS API i 15 mau minuke e hoʻāʻo e ʻike i ka mea e hana nei me ke kūlana o kēlā me kēia kumuwaiwai. He wahi nui loa keia.

A, ʻoiaʻiʻo, e ʻike ʻia kahi pilikia pili inā makemake ʻoe e hoʻololi i kahi mea ma kahi hoʻokahi, a laila kali ʻoe i 15 mau minuke, a hāʻawi iā ʻoe i kahi canvas o kekahi mau loli. Ua kuha ʻoe, kākau iā "ʻAe", a ua hewa kekahi mea. He laʻana maoli kēia. ʻAʻole hoʻāʻo ʻo Terraform e pale iā ʻoe mai nā pilikia. ʻO ia hoʻi, e kākau i kāu makemake. Aia nā pilikia - kou mau pilikia. ʻOiai ʻaʻole ʻo Terraform 0.11 e hoʻāʻo e kōkua iā ʻoe ma kekahi ʻano. Aia kekahi mau wahi hoihoi ma 0.12 e ʻae iā ʻoe e ʻōlelo: "Vasya, makemake maoli ʻoe i kēia, hiki iā ʻoe ke noʻonoʻo?"

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ke ala ʻelua, ʻo ia ka hoʻēmi ʻana i kēia wahi, ʻo ia hoʻi, hiki ke hoʻemi ʻia nā kelepona mai kahi wahi mai kahi ʻē aʻe.

ʻO ka pilikia wale nō, pono ʻoe e kākau i nā code hou aʻe, ʻo ia hoʻi, pono ʻoe e wehewehe i nā mea hoʻololi i ka nui o nā faila a hoʻonui i kēia. ʻAʻole makemake kekahi poʻe. He mea maʻamau kēia iaʻu. A noʻonoʻo kekahi poʻe: "No ke aha e kākau ai i kēia ma nā wahi like ʻole, e kau wau i nā mea āpau ma kahi hoʻokahi." Hiki kēia, akā ʻo ka lua kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO wai kēia mau mea a pau e noho ana ma kahi hoʻokahi? Hoʻokahi, ʻelua, ʻekolu poʻe, ʻo ia hoʻi, ke hoʻohana nei kekahi.

A ʻo wai ka mea e kāhea i hoʻokahi ʻāpana, hoʻokahi poloka a i ʻole hoʻokahi module ʻōnaehana? ʻElima a ʻehiku mau kānaka. He ʻoluʻolu kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka pane maʻamau ma kahi o ka waena. Inā nui ka papahana, a laila e loaʻa pinepine ʻoe i kahi kūlana kahi kūpono ʻole a ʻaʻole hana nā mea āpau ma laila, no laila e hoʻopau ʻoe i kahi hui. ʻAʻohe hewa i kēia, inā ʻoe e hoʻomaopopo he pono nā mea ʻelua.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Inā hoʻololi kekahi mea i loko o ka waihona VPC a makemake ʻoe e hoʻopili i kēia mau hoʻololi iā EC2, ʻo ia hoʻi, makemake ʻoe e hoʻonui i ka hui autoscaling no ka mea he subnet hou kāu, a laila kapa wau i kēia ʻano o ka hilinaʻi orchestration. Aia kekahi mau hoʻonā: ʻo wai ka mea hoʻohana?

Hiki iaʻu ke hāʻawi aku i nā hoʻonā. Hiki iā ʻoe ke hoʻohana iā Terraform e hana i ka hana kilokilo, a i ʻole hiki iā ʻoe ke hoʻohana i nā makefiles e hoʻohana ai iā Terraform. A e ʻike inā ua loli kekahi mea ma laila, hiki iā ʻoe ke hoʻomaka ma aneʻi.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Pehea kou makemake i kēia hoʻoholo? Ke manaʻoʻiʻo nei kekahi he hopena maikaʻi kēia? ʻIke wau i kahi minoʻaka, ʻikea ua komo mai nā kānalua.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻOiaʻiʻo, mai hoʻāʻo i kēia ma ka home. ʻAʻole i hoʻolālā ʻia ʻo Terraform e holo mai Terraform.

Ma kahi hōʻike ua haʻi mai lākou iaʻu: "ʻAʻole, ʻaʻole e hana kēia." ʻO ke kumu, ʻaʻole pono e hana. ʻOiai he mea kupanaha loa ia ke hiki iā ʻoe ke hoʻomaka i ka Terraform mai Terraform, a laila ʻo Terraform, akā ʻaʻole pono ʻoe e hana i kēlā. Pono e hoʻomaka maʻalahi ka Terraform.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

https://github.com/gruntwork-io/terragrunt/

Inā makemake ʻoe e kāhea i ka orchestration ke loli kekahi mea ma kahi hoʻokahi, a laila aia ʻo Terragrunt.

ʻO Terragrunt kahi mea hoʻohana, kahi mea hoʻohui iā Terraform, e hiki ai iā ʻoe ke hoʻonohonoho a hoʻonohonoho i nā kelepona i nā modules infrastructure.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kahi faila hoʻonohonoho Terraform maʻamau e like me kēia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

E kuhikuhi ʻoe i ka module kikoʻī āu e makemake ai e kāhea.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

He aha nā mea hilinaʻi i loaʻa i ka module?

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A he aha nā hoʻopaʻapaʻa e ʻae ʻia e kēia module. ʻO ia wale nō ka ʻike e pili ana iā Terragrunt.

Aia ka palapala, a aia nā hōkū 1 ma GitHub. Akā i ka hapanui o nā hihia ʻo kēia ka mea e pono ai ʻoe e ʻike. A he mea maʻalahi loa kēia e hoʻokō i nā ʻoihana e hoʻomaka nei e hana me Terraform.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

No laila ʻo Terragrunt ka orchestration. Aia kekahi mau koho ʻē aʻe.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

I kēia manawa e kamaʻilio e pili ana i ka hana ʻana me ke code.

Inā pono ʻoe e hoʻohui i nā hiʻohiʻona hou i kāu code, ma ka hapanui o nā hihia he maʻalahi kēia. Ke kākau nei ʻoe i kahi kumuwaiwai hou, maʻalahi nā mea a pau.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Inā loaʻa iā ʻoe kekahi kumuwaiwai āu i hana ai ma mua, no ka laʻana, ua aʻo ʻoe e pili ana iā Terraform ma hope o kou wehe ʻana i kahi moʻokāki AWS a makemake ʻoe e hoʻohana i nā kumuwaiwai āu i loaʻa ai, a laila pono e hoʻonui i kāu module i kēia ala, no laila. kākoʻo ia i ka hoʻohana ʻana i nā kumuwaiwai e kū nei.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A kākoʻo i ka hana ʻana i nā kumuwaiwai hou me ka hoʻohana ʻana i ka kumuwaiwai poloka.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ma ka hoʻopuka hoʻihoʻi mau mākou i ka id puka ma muli o ka mea i hoʻohana ʻia.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka lua o ka pilikia nui loa ma Terraform 0.11 ke hana nei me nā papa inoa.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka paʻakikī inā loaʻa iā mākou kahi papa inoa o nā mea hoʻohana.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A ke hana mākou i kēia mau mea hoʻohana me ka hoʻohana ʻana i nā kumuwaiwai poloka, a laila holo maikaʻi nā mea a pau. Hele mākou i ka papa inoa holoʻokoʻa, hana i kahi faila no kēlā me kēia. Ua maikaʻi nā mea a pau. A laila, no ka laʻana, ʻo ka mea hoʻohana3, aia ma waena, pono e wehe ʻia mai ʻaneʻi, a laila e hana hou ʻia nā kumuwaiwai āpau i hana ʻia ma hope ona no ka mea e loli ka index.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ke hana nei me nā papa inoa ma kahi kūlana kūlana. He aha ke kūlana kūlana? ʻO kēia ke kūlana kahi i hana ʻia ai kahi waiwai hou ke hana ʻia kēia kumuwaiwai. No ka laʻana, AWS Access Key a i ʻole AWS Secret Key, ʻo ia hoʻi, ke hana mākou i mea hoʻohana, loaʻa iā mākou kahi Access a i ʻole Key Secret. A i kēlā me kēia manawa mākou e holoi ai i kahi mea hoʻohana, e loaʻa i kēia mea hoʻohana ke kī hou. Akā ʻaʻole kēia he feng shui, no ka mea, ʻaʻole makemake ka mea hoʻohana e hoaaloha me mākou inā hana mākou i mea hoʻohana hou nona i kēlā me kēia manawa e haʻalele kekahi i ka hui.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO kēia ka hopena. He code kēia i kākau ʻia ma Jsonnet. ʻO Jsonnet kahi ʻōlelo hoʻohālike mai Google.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Hāʻawi kēia kauoha iā ʻoe e ʻae i kēia template a ma ke ʻano he hoʻopuka e hoʻihoʻi i kahi faila json i hana ʻia e like me kāu template.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Penei ke ano o ka mamala.

ʻAe ʻo Terraform iā ʻoe e hana pū me HCL a me Json ma ke ʻano like, no laila inā hiki iā ʻoe ke hana iā Json, a laila hiki iā ʻoe ke hoʻoheheʻe iā ia i loko o Terraform. E hoʻoiho pono ʻia ka faila me ka hoʻonui .tf.json.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A laila hana mākou me ia e like me ka mea maʻamau: terraform init, terramorm apply. A hana mākou i ʻelua mea hoʻohana.

I kēia manawa ʻaʻole mākou makaʻu inā haʻalele kekahi i ka hui. E hoʻoponopono wale mākou i ka faila json. Ua haʻalele ʻo Vasya Pupkin, noho ʻo Petya Pyatochkin. ʻAʻole loaʻa iā Petya Pyatochkin kahi kī hou.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO ka hoʻohui ʻana iā Terraform me nā mea hana ʻē aʻe ʻaʻole ia he hana a Terraform. Ua hana ʻia ʻo Terraform ma ke ʻano he kahua no ka hana ʻana i nā kumuwaiwai a ʻo ia nō. A ʻo nā mea a pau e hiki mai ana ma hope, ʻaʻole ia ka manaʻo o Terraform. A ʻaʻohe pono e ulana ʻia ma laila. Aia ʻo Ansible, nāna e hana i nā mea āpau āu e pono ai.

Akā e kū mai nā kūlana ke makemake mākou e hoʻonui iā Terraform a kāhea i kekahi kauoha ma hope o ka pau ʻana o kekahi mea.

Ala mua. Hana mākou i kahi hoʻopuka kahi e kākau ai mākou i kēia kauoha.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

A laila kāhea mākou i kēia kauoha mai ka shell terraform output a kuhikuhi i ka waiwai a mākou e makemake ai. No laila, hoʻokō ʻia ke kauoha me nā waiwai i hoʻololi ʻia. He oluolu loa.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻElua ala. ʻO kēia ka hoʻohana ʻana o null_resource e pili ana i nā loli i kā mākou ʻoihana. Hiki iā mākou ke kāhea i ka local-exe like i ka wā e loli ai ka ID o kekahi mau kumuwaiwai.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ma keʻano maʻamau, maʻalahi kēia ma ka pepa, no ka mea, ʻo Amazon, e like me nā mea hoʻolako lehulehu ʻē aʻe, he pūʻulu o kāna mau hihia ponoʻī.

ʻO ka hihia maʻamau maʻamau ke wehe ʻoe i kahi moʻokāki AWS, pili ia i nā wahi āu e hoʻohana ai; Ua hoʻohana ʻia kēia hiʻohiʻona ma laila; ua wehe paha ʻoe ma hope o Dekemaba 2013; malia paha ke hoʻohana nei ʻoe i ka paʻamau ma VPC etc. He nui nā kapu. A hoʻopuehu ʻo Amazon iā lākou i loko o ka palapala.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Aia kekahi mau mea aʻu e paipai nei e pale aku.

No ka hoʻomaka ʻana, e pale i nā manaʻo hoʻopaʻapaʻa huna ʻole i loko o ka hoʻolālā Terraform a i ʻole Terraform CLI. Hiki ke hoʻokomo ʻia kēia mau mea a pau i loko o kahi faila tfvars a i ʻole i loko o kahi hoʻololi kaiapuni.

Akā ʻaʻole pono ʻoe e hoʻomanaʻo i kēia kauoha kilokilo holoʻokoʻa. Hoʻolālā Terraform - var a hele mākou. ʻO ka hoʻololi mua he var, ʻo ka hoʻololi ʻelua he var, ʻo ke kolu, ʻehā. ʻO ka loina koʻikoʻi o ka ʻōnaehana ma ke ʻano he code aʻu e hoʻohana pinepine ai ʻo ia ma ka nānā ʻana i ke code, pono iaʻu e ʻike maopopo i ka mea i kau ʻia ma laila, i ka mokuʻāina a me nā waiwai. A no laila ʻaʻole pono wau e heluhelu i ka palapala a i ʻole e nīnau iā Vasya i nā ʻāpana āna i hoʻohana ai e hana i kā mākou hui. Pono wau e wehe i kahi faila me ka hoʻonui tfvars, i kūlike pinepine i ke kaiapuni, a nānā i nā mea āpau ma laila.

Eia kekahi, mai hoʻohana i nā manaʻo hoʻopaʻapaʻa e hōʻemi i ka laulā. No kēia, ʻoi aku ka maʻalahi o ka hoʻohana ʻana i nā modules infrastructure liʻiliʻi.

Eia kekahi, ʻaʻohe pono e kaupalena a hoʻonui i ka parallelism. Inā loaʻa iaʻu nā kumuwaiwai 150 a makemake wau e hoʻonui i ka parallelism Amazon mai ka 10 paʻamau a hiki i ka 100, a laila e hewa paha kekahi mea. A i ʻole hiki ke hele maikaʻi i kēia manawa, akā inā ʻōlelo ʻo Amazon he nui kāu kelepona ʻana, pilikia ʻoe.

E ho'āʻo ʻo Terraform e hoʻomaka hou i ka hapa nui o kēia mau pilikia, akā ʻaʻole ʻoe e hoʻokō. He mea koʻikoʻi ka Parallelism=1 e hoʻohana inā hāʻule ʻoe i kekahi pahu i loko o ka AWS API a i ʻole i loko o ka mea hoʻolako Terraform. A laila pono ʻoe e wehewehe: parallelism=1 a kali a hoʻopau ʻo Terraform i hoʻokahi kelepona, a laila ka lua, a laila ke kolu. E hoʻokuʻu aku ʻo ia iā lākou i kēlā me kēia.

Nīnau pinepine mai ka poʻe iaʻu, "No ke aha wau i manaʻo ai he hewa nā keʻena hana Terraform?" Ke manaʻoʻiʻo nei au ʻo ke kumu o ka ʻōnaehana ma ke ʻano he code ʻo ia ka ʻike ʻana i nā ʻōnaehana i hana ʻia a me nā waiwai.

ʻAʻole i hana ʻia nā wahi hana e nā mea hoʻohana. ʻAʻole kēia manaʻo ua kākau nā mea hoʻohana i nā pilikia GitHub ʻaʻole hiki iā mākou ke ola me ka ʻole o nā papa hana Terraform. ʻAʻole like me kēia. ʻO Terraform Enterprise kahi hopena pāʻoihana. Ua hoʻoholo ʻo Terraform mai HashiCorp e pono mākou i nā wahi hana, no laila ua waiho mākou. ʻIke wau he mea maʻalahi ka waiho ʻana i loko o kahi waihona ʻokoʻa. A laila e liʻiliʻi hou aʻe nā faila, akā e maʻalahi.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Pehea e hana ai me ke code? ʻO kaʻoiaʻiʻo,ʻo ka hanaʻana me nā papa inoa wale nō kaʻeha. A lawe maʻalahi iā Terraform. ʻAʻole kēia ka mea e hana i nā mea maikaʻi loa no ʻoe. ʻAʻole pono e hoʻokuʻu i nā mea a pau i kākau ʻia ma ka palapala ma laila.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Ua kākau ʻia ke kumuhana o ka hōʻike "no ka wā e hiki mai ana." E kamaʻilio pōkole wau no kēia. No ka wā e hiki mai ana, e hoʻokuʻu koke ʻia ka 0.12.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

ʻO 0.12 kahi tona o nā mea hou. Inā hele mai ʻoe mai ka hoʻonohonoho maʻamau, a laila e poina ʻoe i nā ʻano poloka dynamic āpau, nā puka lou, nā hana hoʻohālikelike kūpono a me ke kūlana, kahi i helu ʻole ʻia ai ka ʻaoʻao hema a me ka ʻaoʻao i ka manawa like, akā e pili ana i ke kūlana. Ua hala nui ʻoe, no laila e hoʻoponopono ʻo 0.12 iā ʻoe.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Akā! Inā kākau ʻoe i ka liʻiliʻi a ʻoi aku ka maʻalahi, me ka hoʻohana ʻana i nā modula i hoʻomākaukau ʻia a me nā ʻaoʻao ʻekolu, a laila ʻaʻole pono ʻoe e kali a manaʻolana e hele mai ʻo 0.12 a hoʻoponopono i nā mea āpau no ʻoe.

ʻO ka wehewehe ʻana o ka ʻoihana ma Terraform no ka wā e hiki mai ana. Anton Babenko (2018)

Mahalo no ka hōʻike! Ua kamaʻilio ʻoe e pili ana i ka ʻōnaehana ma ke ʻano he code a ʻōlelo maoli i hoʻokahi huaʻōlelo e pili ana i nā hoʻokolohua. Pono nā hoʻokolohua ma nā modula? Na wai kēia kuleana? Pono wau e kākau iaʻu iho a i ʻole ke kuleana o nā modules?

ʻO ka makahiki aʻe e hoʻopiha ʻia me nā hōʻike ua hoʻoholo mākou e hoʻāʻo i nā mea āpau. ʻO ka mea e hoʻāʻo ai ka nīnau nui loa. Nui nā hilinaʻi, nui nā palena mai nā mea hoʻolako like ʻole. Ke kamaʻilio nei au a ʻōlelo ʻoe: "Pono au i nā hoʻokolohua," a laila nīnau wau: "He aha kāu e hoʻāʻo ai?" Ke ʻōlelo nei ʻoe e hoʻāʻo ʻoe ma kou ʻāina. A laila ʻōlelo wau ʻaʻole hana kēia ma koʻu ʻāina. ʻO ia hoʻi, ʻaʻole hiki iā mākou ke ʻae i kēia. ʻAʻole e haʻi i ka nui o nā pilikia ʻenehana. ʻO ia hoʻi, pehea e kākau ai i kēia mau hoʻāʻo i lawa.

Ke noiʻi nei au i kēia kumuhana, ʻo ia hoʻi, pehea e hoʻohua ai i nā hoʻokolohua e pili ana i ka ʻōnaehana āu i kākau ai. ʻO ia hoʻi, inā kākau ʻoe i kēia code, pono wau e holo, ma muli o kēia hiki iaʻu ke hana i nā hoʻokolohua.

Terratest ʻo ia kekahi o nā hale waihona puke i ʻōlelo pinepine ʻia e hiki iā ʻoe ke kākau i nā hoʻokolohua hoʻohui no Terraform. ʻO kēia kekahi o nā pono hana. Makemake au i ke ʻano DSL, no ka laʻana, rspec.

Anton, mahalo no ka hōʻike! ʻO Valery koʻu inoa. E ʻae mai iaʻu e nīnau i kahi nīnau noʻonoʻo. Aia nō, conditionally, provisioning, aia ka hoʻolālā. Hoʻokumu ka hoʻolako ʻana i kaʻu ʻoihana, ma ka hoʻolaha ʻana mākou e hoʻopiha iā ia me kahi mea pono, no ka laʻana, nā kikowaena, nā noi, a me nā mea ʻē aʻe. hiki iā ʻoe ke hoʻokomo i ka nginx, Postgres. Akā i ka manawa like, ʻae ʻo Ansible i ka hāʻawi ʻana, no ka laʻana, nā kumuwaiwai Amazon a i ʻole Google. Akā ʻae ʻo Terraform iā ʻoe e kau i kekahi polokalamu me ka hoʻohana ʻana i kāna mau modula. Mai kou manaʻo, aia kekahi ʻano palena e holo ana ma waena o Terraform a me Ansible, ma hea a he aha ka maikaʻi e hoʻohana ai? A i ʻole, no ka laʻana, manaʻo paha ʻoe he ʻōpala ʻo Ansible, pono ʻoe e hoʻāʻo e hoʻohana iā Terraform no nā mea āpau?

He nīnau maikaʻi, Valery. Manaʻo wau ʻaʻole i loli ʻo Terraform ma ke ʻano o ke kumu mai 2014. Ua hana ʻia no ka ʻoihana a make no ka ʻoihana. Loaʻa iā mākou a loaʻa iā mākou kahi pono no ka hoʻokele hoʻonohonoho Ansible. ʻO ka paʻakikī ka loaʻa ʻana o ka ʻikepili mea hoʻohana i loko o launch_configuration. A ma laila ʻoe e huki iā Ansible, etc. ʻO kēia ka ʻokoʻa maʻamau aʻu i makemake nui ai.

Inā mākou e kamaʻilio e pili ana i nā ʻoihana nani, a laila aia nā mea pono e like me Packer e hōʻiliʻili i kēia kiʻi. A laila hoʻohana ʻo Terraform i ke kumu ʻikepili e ʻimi i kēia kiʻi a hoʻonui i kāna launch_configuration. ʻO ia hoʻi, ma kēia ala ka pipeline e huki mua mākou iā Tracker, a laila huki iā Terraform. A inā hana ʻia ke kūkulu ʻia, a laila hiki mai kahi hoʻololi hou.

Aloha! Mahalo no ka hōʻike! ʻO Misha koʻu inoa, hui RBS. Hiki iā ʻoe ke kāhea iā Ansible ma o ka mea hoʻolako i ka wā e hana ai i kahi kumuwaiwai. He kumuhana ko Ansible i kapa ʻia ʻo dynamic inventory. A hiki iā ʻoe ke kāhea mua iā Terraform, a laila kāhea iā Ansible, e lawe i nā kumuwaiwai mai ka mokuʻāina a hoʻokō. He aha ka maikaʻi?

Hoʻohana nā kānaka ʻelua me ka kūleʻa like. Me he mea lā iaʻu he mea maʻalahi ka inventory in Ansible, inā ʻaʻole mākou e kamaʻilio e pili ana i ka hui autoscaling. No ka mea i loko o ka hui autoscaling ua loaʻa iā mākou kā mākou pono hana ponoʻī, i kapa ʻia ʻo launch_configuration. I ka launch_configuration mākou e hoʻopaʻa i nā mea a pau e pono e hoʻokuʻu ʻia ke hana mākou i kahi kumuwaiwai hou. No laila, me Amazon, me ka hoʻohana ʻana i ka waihona waiwai a me ka heluhelu ʻana i ka faila Terraform ts, i koʻu manaʻo, ua overkill. A inā ʻoe e hoʻohana i nā mea hana ʻē aʻe kahi ʻaʻohe manaʻo o ka "autoscaling group", no ka laʻana, hoʻohana ʻoe i DigitalOcean a i ʻole kekahi mea lawelawe ʻē aʻe kahi ʻaʻohe hui autoscaling, a laila pono ʻoe e huki lima lima i ka API, e ʻimi i nā leka uila IP, hana. he faila waihona waiwai, a e hele mua ana ʻo Ansible ma laila. ʻO ia hoʻi, no Amazon aia ka launch_configuration, a no nā mea ʻē aʻe he dynamic inventory.

Source: www.habr.com

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