ΠŸΠ΅Ρ€Π΅ΡˆΠ΅Π» с Terraform Π½Π° CloudFormation β€” ΠΈ ΠΏΠΎΠΆΠ°Π»Π΅Π»

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ инфраструктуру Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° Π² повторяСмом тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ β€” простая Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для систСм, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΡ‹ΡˆΠ΅Π²ΠΎΠ·ΠΈΡ‚ΡŒ. Π—Π° этой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ»ΠΎΡΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β€” Infrastructure as Code, ΠΈ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ для Π΅Π΅ осущСствлСния, особСнно Π² AWS, Π΅ΡΡ‚ΡŒ Π΄Π²Π° популярных инструмСнта: Terraform ΠΈ CloudFormation.

ΠŸΠ΅Ρ€Π΅ΡˆΠ΅Π» с Terraform Π½Π° CloudFormation — ΠΈ ΠΏΠΎΠΆΠ°Π»Π΅Π»
Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Terraform ΠΈ CloudFormation

Π”ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° Π² Twitch (ΠΎΠ½ ΠΆΠ΅ Amazon Jr.) я трудился Π² ΠΎΠ΄Π½ΠΎΠΌ стартапС ΠΈ Π³ΠΎΠ΄Π° Ρ‚Ρ€ΠΈ использовал Terraform. На Π½ΠΎΠ²ΠΎΠΌ мСстС я Ρ‚ΠΎΠΆΠ΅ вовсю использовал Terraform, Π° ΠΏΠΎΡ‚ΠΎΠΌ компания ΠΏΡ€ΠΎΠ΄Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° всС Π°-ля Amazon, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ CloudFormation. Π― усСрдно Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ для Ρ‚ΠΎΠ³ΠΎ, ΠΈ для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΈ ΠΎΠ±Π° инструмСнта использовал Π² ΠΎΡ‡Π΅Π½ΡŒ слоТных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. ПозднСС, Π²Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎ взвСсив послСдствия ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° с Terraform Π½Π° CloudFormation, я убСдился, Ρ‡Ρ‚ΠΎ Terraform, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Terraform УТасный

Π‘Π΅Ρ‚Π°-вСрсия ПО

Π£ Terraform Π΅Ρ‰Π΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π²Ρ‹ΡˆΠ»Π° вСрсия 1.0, ΠΈ это β€” вСская ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΈΠΌ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ я сам Π΅Π³ΠΎ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π», ΠΎΠ½ сильно измСнился, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π΅Ρ‰Π΅ terraform apply часто ломался послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ просто Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ Π»Π΅Ρ‚ эксплуатации. Π― Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ «ΡΠ΅ΠΉΡ‡Π°Ρ-Ρ‚ΠΎ всС ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ», но… Ρ‚Π°ΠΊ Π²Ρ€ΠΎΠ΄Π΅ всС говорят, Π½Π΅Ρ‚? Π•ΡΡ‚ΡŒ измСнСния, нСсовмСстимыС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями, хотя ΠΎΠ½ΠΈ умСстны, ΠΈ Π΄Π°ΠΆΠ΅ чувство Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ синтаксис ΠΈ абстракции Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ рСсурсов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΏΡ€Π°Π²Π΄Π° стал Π»ΡƒΡ‡ΡˆΠ΅, но… :-0

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, AWS Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»Π°ΡΡŒ, поддСрТивая ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями. ВсС, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… сСрвисы часто Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π½ΡŒΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ лишь ΠΏΠΎΡ‚ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π², ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ «Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ» это Π΅Ρ‰Π΅ слабо сказано. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями API для Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠΉ ΠΈ слоТной систСмы, ΠΊΠ°ΠΊ AWS, нСвСроятно тяТСло. Π›ΡŽΠ±ΠΎΠΉ, ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ общСдоступныС API, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° протяТСнии ΡΡ‚ΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚. А Π²ΠΎΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ CloudFormation Π½Π° ΠΌΠΎΠ΅ΠΉ памяти Π½ΠΈ Ρ€Π°Π·Ρƒ с Π³ΠΎΠ΄Π°ΠΌΠΈ Π½Π΅ измСнилось.

Π—Π½Π°ΠΊΠΎΠΌΡŒΡΡ, нога… это пуля

Насколько я знаю, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ рСсурс постороннСго стСка CloudFormation ΠΈΠ· своСго стСка CF Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄Π΅Π»ΠΎ обстоит ΠΈ с Terraform. Он позволяСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ рСсурсы Π² свой стСк. Ѐункция, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π°Ρ, Π½ΠΎ с большой силой ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈ большая ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ занСсти рСсурс Π² стСк ΠΈ, ΠΏΠΎΠΊΠ° Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ со своим стСком, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот рСсурс нСльзя. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ это Π°ΡƒΠΊΠ½ΡƒΠ»ΠΎΡΡŒ. Как-Ρ‚ΠΎ Π½Π° сайтС Twitch ΠΊΡ‚ΠΎ-Ρ‚ΠΎ, Π½Π΅ Π·Π°ΠΌΡ‹ΡˆΠ»ΡΡ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ, случайно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» Ρ‡ΡŒΡŽ-Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности AWS Π² свой собствСнный стСк Terraform. Π’Π²Π΅Π» нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ и… Π³Ρ€ΡƒΠΏΠΏΠ° бСзопасности (вмСстС со входящим Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ) исчСзла.

Terraform Π’Π΅Π»ΠΈΠΊΠΈΠΉ

ВосстановлСниС ΠΈΠ· Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Ρ… состояний

Иногда CloudFormation Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ состояния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠŸΡ€ΠΈ этом ΠΎΠ½ постараСтся Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ. Π–Π°Π»ΡŒ, это Π½Π΅ всСгда осущСствимо. ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π±Ρ‹Π²Π°Π΅Ρ‚ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ²Π°Ρ‚Π΅Π½ΡŒΠΊΠΎ β€” Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ знаСшь, обрадуСтся Π»ΠΈ CloudFormation, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π²Π·Π»Π°ΠΌΡ‹Π²Π°ΡŽΡ‚ β€” ΠΏΡƒΡΡ‚ΡŒ ΠΈ для ΠΏΠΎΡ‡ΠΈΠ½ΠΊΠΈ. А получится ΠΈΠ»ΠΈ Π½Π΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, ΠΎΠ½ Ρ‚ΠΎΠ»ΠΊΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ часами висит Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Ρ‡ΡƒΠ΄Π°.

Terraform ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², склонСн Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ послС Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΊΡƒΠ΄Π° изящнСС ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ инструмСнтарий.

Π‘ΠΎΠ»Π΅Π΅ ясныС измСнСния Π² состояния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

«Π›Π°Π΄Π½ΠΎ, балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚Ρ‹ мСняСшься. Но ΠΊΠ°ΠΊ?»

—обСспокоСнный ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ».

Иногда ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ манипуляции с балансировщиком Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² стСкС CloudFormation β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности. ClouFormation измСнСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ слабо. Π― ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π° ΠΈΠ³ΠΎΠ»ΠΊΠ°Ρ…, Ρ€Π°Π· ΠΏΠΎ Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ Ρ„Π°ΠΉΠ» yaml, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π΅ стСр, Π° лишнСго β€” Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ».

Terraform Π² этом ΠΏΠ»Π°Π½Π΅ ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Π΅Π΅. ΠŸΠΎΡ€ΠΎΠΉ ΠΎΠ½ Π΄Π°ΠΆΠ΅ слишком ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½ (Ρ‡ΠΈΡ‚Π°ΠΉ: достаСт). К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ измСняСтся.

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ

ΠŸΠΈΡˆΠΈΡ‚Π΅ ПО ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ.

Говоря прямо, самая ваТная ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰Π΅Π³ΠΎ ПО β€” это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ измСнСниям. Π›ΡŽΠ±ΠΎΠ΅ ПО ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ. Π― Π²ΠΎΡ‚ Ρ‡Π°Ρ‰Π΅ всСго прокалывался Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ€Π°Π» «ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ» сСрвис, Π° ΠΏΠΎΡ‚ΠΎΠΌ принимался Π²ΠΏΠΈΡ…ΠΈΠ²Π°Ρ‚ΡŒ всС Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ стСк CloudFormation ΠΈΠ»ΠΈ Terraform. И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, спустя мСсяцы Π²ΡΠΊΡ€Ρ‹Π²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ я всС понял Π½Π΅ Ρ‚Π°ΠΊ, ΠΈ сСрвис-Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ простой! И Π²ΠΎΡ‚ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ большой стСк Π½Π° ΠΌΠ°Π»Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅. Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ с CloudFormation, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ воссоздав ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ стСк, Π° этого я, со своими Π‘Π”, Π½Π΅ дСлаю. Terraform ΠΆΠ΅ позволял ΠΏΡ€Π΅ΠΏΠ°Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стСк ΠΈ Ρ€Π°ΡΡ‡Π»Π΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π±ΠΎΠ»Π΅Π΅ понятныС мСньшиС части.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π² git

Π”Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Terraform ΠΌΠ΅ΠΆΠ΄Ρƒ многочислСнными стСками Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ CloudFormation. Π‘ Terraform ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ git ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сСмантичСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий. Π›ΡŽΠ±ΠΎΠΉ, Ρƒ ΠΊΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ доступ Π² этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ ΠΎΡ‚ CloudFormation β€” S3, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Ρ‚Π΅Ρ… ΠΆΠ΅ прСимущСств, ΠΈ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ стоит ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ git Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ S3.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ росла ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ стСками достигла критичСского уровня. Π‘ Terraform всС это получаСтся Π»Π΅Π³ΠΊΠΎ ΠΈ СстСствСнно, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ CloudFormation заставит вас ΠΏΠΎΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»ΡŒΡ†Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρƒ вас Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.

Operations as code

«Π—аскриптуСм ΠΈ Π»Π°Π΄Π½ΠΎ».

β€”ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π·Π° 3 Π³ΠΎΠ΄Π° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ изобрСсти вСлосипСд Terraform.

Когда Ρ€Π΅Ρ‡ΡŒ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО, Ρ‚ΠΎ Go ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Java β€” это Π½Π΅ просто ΠΊΠΎΠ΄.

ΠŸΠ΅Ρ€Π΅ΡˆΠ΅Π» с Terraform Π½Π° CloudFormation — ΠΈ ΠΏΠΎΠΆΠ°Π»Π΅Π»
Code as Code

Π•ΡΡ‚ΡŒ вСдь Π΅Ρ‰Π΅ инфраструктура, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΠ΅Ρ€Π΅ΡˆΠ΅Π» с Terraform Π½Π° CloudFormation — ΠΈ ΠΏΠΎΠΆΠ°Π»Π΅Π»
Infrastructure as Code

Но ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° Ρ‚Π°ΠΌ? Как Π΅Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ? Π“Π΄Π΅ ΠΎΠ±ΠΈΡ‚Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄? НуТно Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° доступ?

ΠŸΠ΅Ρ€Π΅ΡˆΠ΅Π» с Terraform Π½Π° CloudFormation — ΠΈ ΠΏΠΎΠΆΠ°Π»Π΅Π»
Operations as Code

Π‘Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ПО β€” это Π²Π°ΠΌ Π½Π΅ просто ΠΊΠΎΠ΄ ΠΏΠΈΡΠ°Ρ‚ΡŒ.

НС AWS Π΅Π΄ΠΈΠ½Ρ‹ΠΌ: Π²Ρ‹ навСрняка ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ услугами Π΄Ρ€ΡƒΠ³ΠΈΡ… поставщиков. SignalFx, PagerDuty ΠΈΠ»ΠΈ Github. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρƒ вас Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ сСрвСр Jenkins для CI/CD ΠΈΠ»ΠΈ внутрСнняя панСль управлСния Grafana для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Infra as Code Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΈ любая ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π°ΠΆΠ½Π° для всСго, связанного с ПО.

Когда я Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² Twitch, ΠΌΡ‹ ускоряли сСрвисы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… встроСнных систСм ΠΈ систСм AWS Amazon’Π°. ΠœΡ‹ ΡˆΡ‚Π°ΠΌΠΏΠΎΠ²Π°Π»ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ мноТСство микросСрвисов, увСличивая эксплуатационныС ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅:

  • Π―: Π‘Π»ΠΈΠ½, ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Π³ΠΎΠ½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ микросСрвиса. МнС Π²ΠΎΡ‚ эту Ρ„ΠΈΠ³Π½ΡŽ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ AWS Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ (ΠΌΡ‹ шли ΠΊ 2 Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°ΠΌ Π½Π° микросСрвис), ΠΏΠΎΡ‚ΠΎΠΌ эту β€” для настройки ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ, Π΅Ρ‰Π΅ эту β€” для рСпозитория ΠΊΠΎΠ΄Π°, ΠΈ эту β€” для списка адрСсов элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Π½Ρƒ ΠΈ Π²ΠΎΡ‚ эту…
  • Π›ΠΈΠ΄: ЗаскриптуСм ΠΈ Π»Π°Π΄Π½ΠΎ.
  • Π―: Π›Π°Π΄Ρ‹, Π½ΠΎ сам скрипт измСнится. НуТСн Π±ΡƒΠ΄Π΅Ρ‚ способ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС эти встроСнныС ΡˆΡ‚ΡƒΠΊΠΎΠ²ΠΈΠ½Ρ‹ amazon’Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС.
  • Π›ΠΈΠ΄: Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. И для это скрипт напишСм.
  • Π―: ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! А скрипту навСрняка Π΅Ρ‰Π΅ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ‚ ΠΎΠ½ ΠΈΡ…?
  • Π›ΠΈΠ΄: Π”Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ‚, ΠΊΡƒΠ΄Π° дСнСтся!
  • Π―: ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ, потСряСтся обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сСмантичСски ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий.
  • Π›ΠΈΠ΄: ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ идСя!
  • Π―: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Нам потрСбуСтся способ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ.

…3 Π³ΠΎΠ΄Π° спустя:

  • Π›ΠΈΠ΄: И получился Ρƒ нас terraform.

ΠœΠΎΡ€Π°Π»ΡŒ басни Ρ‚Π°ΠΊΠΎΠ²Π°: Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠΎ ΡƒΡˆΠΈ Π²ΠΎ всСм amazon’овском, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ ΠΎΡ‚ AWS, ΠΈ Ρƒ этих сСрвисов Π΅ΡΡ‚ΡŒ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это состояниС ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

CloudFormation lambda vs git-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ terraform

lambda β€” это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ CloudFormation для вопроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lambda ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ макросы ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ рСсурс. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ прСдставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² сСмантичСском ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ вСрсий ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ git Ρƒ Terraform. Для мСня самой насущной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ стало ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для всСх этих ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… lambda (Π° это дСсятки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² AWS). Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎ ваТности стала ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΠΈΠΏΠ° «Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ β€” ΠΊΡƒΡ€ΠΈΡ†Π° ΠΈΠ»ΠΈ яйцо?»: ΠΎΠ½Π° Π±Ρ‹Π»Π° связана с ΠΊΠΎΠ΄ΠΎΠΌ lambda. Π‘Π°ΠΌΠ° эта функция β€” инфраструктура ΠΈ ΠΊΠΎΠ΄, ΠΈ ΠΎΠ½Π° сама нуТдаСтся Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ ΠΈ обновлСниях. ПослСдним Π³Π²ΠΎΠ·Π΄Π΅ΠΌ Π² Π³Ρ€ΠΎΠ± стала Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ Π² сСмантичСском ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° lambda; Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ дСйствия стСка Π±Π΅Π· прямой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ мСнялись ΠΌΠ΅ΠΆΠ΄Ρƒ запусками.

Помню, ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹ΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ для срСды Elastic Beanstalk с классичСским балансировщиком Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΡ€ΠΎΡ‰Π΅ всСго Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ для EB рядом с производствСнной срСдой, сдСлав Π΅Ρ‰Π΅ шаг: объСдинив автоматичСски ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½ΠΎΠ³ΠΎ дСплоя с LB развСртывания Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ срСду. А Ρ€Π°Π· Terraform ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ASG beantalk ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄, это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 4 лишниС строки ΠΊΠΎΠ΄Π° Π² Terraform. Когда я поинтСрСсовался, Π½Π΅Ρ‚ Π»ΠΈ сопоставимого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² CloudFormation, ΠΌΠ½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π½Π° Ρ†Π΅Π»Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² git с ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ развСртывания ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ: ΠΈ всС это β€” Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсчастныС 4 строчки ΠΊΠΎΠ΄Π° Terraform.

Он Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€Π΅ΠΉΡ„

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ соотвСтствуСт оТиданиям.

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π΄Ρ€Π΅ΠΉΡ„Π° β€” ΠΎΡ‡Π΅Π½ΡŒ мощная функция operations as code, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ соотвСтствуСт оТиданиям. Она доступна ΠΈ с CloudFormation ΠΈ с Terraform. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стСка поиск Π΄Ρ€Π΅ΠΉΡ„Π° Π² CloudFormation Π²Ρ‹Π΄Π°Π²Π°Π» всС большС Π»ΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΉ.

Π‘ Terraform Ρƒ вас Π΅ΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для обнаруТСния Π΄Ρ€Π΅ΠΉΡ„Π°. НапримСр, Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ignore_changes прямо Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ECS, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ игнорируя ΠΏΡ€ΠΈ этом измСнСния Π²ΠΎ всСм Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ECS.

CDK ΠΈ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ CloudFormation

CloudFormation Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ…, мСТинфраструктурных ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ…. МногиС ΠΈΠ· этих трудностСй ΠΏΡ€ΠΈΠ·Π½Π°Π½Ρ‹, ΠΈ инструмСнту Π½ΡƒΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ aws-cdk, структура для опрСдСлСния ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ инфраструктуры Π² ΠΊΠΎΠ΄Π΅ ΠΈ провСдСния Π΅Π΅ Ρ‡Π΅Ρ€Π΅Π· AWS CloudFormation. Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΄Π΅Ρ‚ aws-cdk Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π½ΠΎ Π΅ΠΌΡƒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΡΠ·Π°Ρ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прСимущСствами Terraform; Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ CloudFormation, ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Terraform Π½Π΅ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π»

Π­Ρ‚ΠΎ ΠΆΠ΅ «ΠΈΠ½Ρ„раструктура ΠΊΠ°ΠΊ ΠšΠžΠ”», Π° Π½Π΅ «ΠΊΠ°ΠΊ тСкст».

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Terraform Ρƒ мСня слоТилось довольно Π΄ΡƒΡ€Π½ΠΎΠ΅. Π”ΡƒΠΌΠ°ΡŽ, я просто Π½Π΅ понял ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. ΠŸΠΎΡ‡Ρ‚ΠΈ всС ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ нСвольно Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ тСкстовый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ инфраструктуру. НЕ ΠΠΠ”Πž ВАК.

ΠŸΡ€ΠΎΠΏΠΈΡΠ½Ρ‹Π΅ истины Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО относятся ΠΈ ΠΊ Terraform

Π― Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, принятыС для создания Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Terraform. Π’Ρ‹ Π³ΠΎΠ΄Π°ΠΌΠΈ ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ программистом. НС ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚ этого ΠΎΠΏΡ‹Ρ‚Π° просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Terraform. ΠŸΡ€ΠΎΠΏΠΈΡΠ½Ρ‹Π΅ истины Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО относятся ΠΈ ΠΊ Terraform.

Как ΡƒΠΆ ΠΊΠΎΠ΄ ΠΈ Π½Π΅ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?

МнС попадались ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ стСки Terraform ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Как ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ страницами β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ? ДобавляйтС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ваш ΠΊΠΎΠ΄ Terraform (ΡƒΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ здСсь Π½Π° слово «ΠΊΠΎΠ΄»), ΠΏΠΎΡ‡Π΅ΠΌΡƒ этот Ρ€Π°Π·Π΄Π΅Π» Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½, ΠΈ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅.

Как ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΉ большой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ main()?

МнС Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТныС стСки Terraform, прСдставлСнныС Π² Π²ΠΈΠ΄Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ модуля. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊ Π½Π΅ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ПО? Π—Π°Ρ‡Π΅ΠΌ Π΄Ρ€ΠΎΠ±ΠΈΠΌ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅? Π’Π΅ ΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ справСдливы ΠΈ для Terraform. Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρƒ вас слишком Π²Π΅Π»ΠΈΠΊ β€” Π½Π°Π΄ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ помСньшС.

Π Π°Π·Π²Π΅ ваша компания Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ?

Π― Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, раскручивая Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Terraform, Ρ‚ΡƒΠΏΠΎ ΠΊΠΎΠΏΠΈ-пСйстили Π³Ρ€ΠΎΠΌΠ°Π΄Π½Ρ‹Π΅ куски ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² свои собствСнныС, Π° ΠΏΠΎΡ‚ΠΎΠΌ ковыряли ΠΈΡ…, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ΠΎΡ‚ Π²Ρ‹ Ρƒ сСбя Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ стали Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ с «Π±ΠΎΠ΅Π²Ρ‹ΠΌ» ΠΊΠΎΠ΄ΠΎΠΌ? ΠœΡ‹ ΠΆΠ΅ Π½Π΅ просто Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π”Π°, Π½Π΅ всС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Π½ΠΎ ΠΊΡƒΠ΄Π° ΠΌΡ‹ Π±Π΅Π· ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅?!

Π Π°Π·Π²Π΅ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ PEP8 ΠΈΠ»ΠΈ gofmt?

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков Π΅ΡΡ‚ΡŒ стандартная принятая схСма форматирования. Π’ Python это PEP8. Π’ Go β€” gofmt. Π£ Terraform Π΅ΡΡ‚ΡŒ свой: terraform fmt. ΠŸΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅!

Π’Ρ‹ станСтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ React, Π½Π΅ зная JavaScript?

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Terraform ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ создаваСмой Π²Π°ΠΌΠΈ слоТной инфраструктуры, Π½ΠΎ это Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΡˆΠ°Ρ€ΠΈΡ‚ΡŒ. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Terraform Π±Π΅Π· понимания рСсурсов? Π’Ρ‹ ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½Ρ‹: врСмя Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ, Π° Π²Ρ‹ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ освоитС Terraform.

Π’Ρ‹ ΠΊΠΎΠ΄ΠΈΡ‚Π΅ синглтонами, ΠΈΠ»ΠΈ внСдряя зависимости?

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй β€” признанная Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ синглтонам. Как это пригодится Π² Terraform? МнС Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Terraform, зависящиС ΠΎΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. А ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π’Π°ΡˆΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Π΄Π΅ΡΡΡ‚ΡŒ Π²Π΅Ρ‰Π΅ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ β€” ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ?

Π›ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, сосрСдоточСнныС Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½Π° ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Terraform, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΈ сразу, ΡΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠ· Π½ΠΈΡ… части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ. А ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ.

Как Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ измСнСния Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости?

ΠžΠ±Ρ‰Π΅ΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Terraform, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΠ± измСнСниях Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Когда происходят Ρ‚Π°ΠΊΠΈΠ΅ измСнСния Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, это Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° измСнСния Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости производятся Π² модулях Terraform. РСкомСндуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ git tags ΠΈ semver ΠΏΡ€ΠΈ использовании ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Terraform.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ сСрвис Π·Π°ΠΏΡƒΡ‰Π΅Π½ Ρƒ вас Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ ΠΈΠ»ΠΈ Π² Π΄Π°Ρ‚Π°Ρ†Π΅Π½Ρ‚Ρ€Π΅?

Π£ Hashicorp Π΅ΡΡ‚ΡŒ инструмСнты Π²Ρ€ΠΎΠ΄Π΅ terraform cloud для запуска вашСго terraform. Π­Ρ‚ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСрвисы ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π°ΡƒΠ΄ΠΈΡ‚ ΠΈ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ terraform.

Π Π°Π·Π²Π΅ Π²Ρ‹ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ тСсты?

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ сами ΠΏΡ€ΠΈ этом часто Π·Π°Π±ΠΈΠ²Π°ΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, работая с Terraform. Для инфраструктуры это Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π― ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ «Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ» ΠΈΠ»ΠΈ «ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹» стСков с использованиСм ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎ врСмя CI/CD.

Terraform ΠΈ микросСрвисы

Π–ΠΈΠ·Π½ΡŒ ΠΈ ΡΠΌΠ΅Ρ€Ρ‚ΡŒ микросСрвисных ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ зависит ΠΎΡ‚ скорости, обновлСния ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… микросСрвисных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… стСков.

Π‘Π°ΠΌΡ‹ΠΉ распространСнный Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, связанный с микросСрвисными Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ ΠΈ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ избавятся, связан с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, Π° Π½Π΅ с ΠΊΠΎΠ΄ΠΎΠΌ. Если Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Terraform, лишь ΠΊΠ°ΠΊ способ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ сторону микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ‚ΠΎ Π²Ρ‹ Π»ΠΈΡˆΠ°Π΅Ρ‚Π΅ сСбя ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Ρ‹Ρ… прСимущСств этой систСмы. БСйчас ΡƒΠΆΠ΅ всС β€” ΠΊΠ°ΠΊ ΠΊΠΎΠ΄.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com