Разбиране на IaC инструментите: Cloudformation срещу Terraform

AWS CloudFormation и Terraform – не сте сигурни кое да изберете? Тази статия ще ви помогне да вземете разумно решение.

Cloud Computing направи революция в света на DevOps. Това вече не е просто модна дума; той е тук и е тук, за да промени начина, по който разработваме и поддържаме нашите приложения. Въпреки че има безброй причини, поради които трябва да използвате облачни изчисления за всички мащаби на бизнеса, има леко ограничение, трябва да осигурите вашата инфраструктура ръчно.

Трябва да отидете до конзолите на вашите облачни доставчици и да им кажете какво точно искате. Това работи добре за малки случаи на употреба, но какво ще стане, ако имате различни хора, които правят промени в конфигурацията в конзолата. Може да се окажете със супер сложна инфраструктура, която ще става все по-трудна за поддръжка. Няма ефективен начин за сътрудничество или проследяване на промените в инфраструктурата в облака. Е, всъщност има. Инфраструктурата като код.

Инфраструктурата като код е много популярен термин в облачните изчисления. Това е процес на управление на вашата ИТ инфраструктура с помощта на код. Да, така е. Вместо да отидете на конзолата и да правите всичко ръчно; Инфраструктурата като код, известна още като IAAC или IAC, ви позволява да пишете конфигурационни файлове, които след това осигуряват вашата облачна инфраструктура. IAC ни дава предимства като последователност, лесна и бърза поддръжка и няма място за човешки грешки.

Използване на IAC с Amazon Web Services

AWS е водещата услуга за облачни изчисления в света, с двойно по-голям пазарен дял от следващия доставчик на облачни услуги след нея. Има над 200 услуги в AWS, които могат да обслужват стотици и хиляди случаи на употреба.

Когато започнете да използвате IAC с AWS, често ще стесните избора си до AWS CloudFormation и инструмента с отворен код, Тераформа. Когато се опитвате да направите избор между двете, разбирането на множеството функции, които предлагат и двата инструмента, може да бъде доста непосилно. В тази статия ще разгледаме разликите между AWS CloudFormation и Terraform, за да ви помогнем да решите кой инструмент е по-подходящ за вашите нужди.

Terraform срещу AWS CloudFormation: Разлики

Модулност

Когато използвате IAC в големи организации, модулността може да бъде голям фактор за избора на правилния инструмент.

  Как да персонализирате началния екран на Nintendo Switch

CloudFormation

CloudFormation няма собствена поддръжка за модули. Тя ви позволява да използвате нещо, наречено вложени стекове като модули.

Например, можете да имате стандартна конфигурация за това как искате да осигурите S3 контейнер във вашата организация. И така, вие създавате стандартен шаблон CloudFormation, който създава S3 кофи. Сега, когато краен потребител иска да създаде контейнер S3, той може да използва този шаблон на CloudFormation като вложен стек и да създаде стандартен пакет S3.

Има и по-малко известна услуга на AWS, the Каталог на услугите на AWS които могат да ви помогнат с модулността на вашия AWS CloudFormation. Каталогът на услугите е услуга на AWS, която е проектирана специално за организации, които искат да ограничат обхвата на услугите на AWS, за да отговорят на изискванията за съответствие, сигурност, цена или производителност. И познай какво? AWS Service Catalog използва CloudFormation шаблони в бекенда.

Нека бързо разберем това с пример. Кофите S3, ако не се използват правилно, скоро могат да бъдат катастрофални за вашите поверителни данни. Нека вземем същия пример, искате да имате стандартен начин за това как искате да използвате S3 във вашата организация. Първата опция е да създадете шаблон за вложен стек, който може да се използва в други стекове на CloudFormation и е също толкова добър.

Ако не искате потребителите да използват този стандартен шаблон като вложен стек, можете да използвате каталога на услугите на AWS. Каталогът на услугите ще позволи на потребителите да използват този стандартен шаблон от потребителския интерфейс на конзолата и да определят някои параметри за леки персонализации. Това ще ви позволи да контролирате как се осигурява инфраструктурата във вашите AWS акаунти и да предотвратите всякакви нежелани сценарии.

Тераформа

Terraform има собствена поддръжка за модули. Той ви позволява да създавате стандартни конфигурации, много подобни на AWS CloudFormation, и да го използвате в други конфигурации на тераформа.

Тъй като Terraform е инструмент с отворен код, можете също да намерите и използвате някои предварително направени модули с отворен код в регистъра на Terraform. Можете също да създадете свои собствени модули със собствени конфигурации и да ги хоствате в частен регистър на модулите.

Лично аз бих предпочел да използвам Terraform пред CloudFormation, ако модулността е голямо изискване.

Използването на вложен стек в CloudFormation не е толкова лесно, колкото използването на модули в Terraform. Основният фактор е, че предаването на данни от CFN шаблон към вложения стек може да бъде доста сложно.

  Контролирайте хардуерните превключватели с помощта на API за гласово разпознаване на Google Now

Няма стандартно място, където могат да се споделят шаблони на CloudFormation. Имате AWS Service Catalog, но това е само начин да наложите някои правила за създаване на инфраструктура чрез конзолата. Всички сме за кода. Когато използвате Service Catalog, въпреки че някои сложни задачи са капсулирани от CloudFormation файлове, все пак трябва да преминете през ръчната задача да отидете до конзолата и да посочите параметри, за да създадете вашата инфраструктура.

Terraform, от друга страна, има определен метод за създаване, поддържане и споделяне на модулите. Можете да видите точните изисквания на модулите в регистъра на модулите на Terraform и много лесно да ги използвате във вашите terraform файлове.

Контрол и управление на инфраструктурата

Ако искате да ограничите какви ресурси вашите хора могат да създават във вашите AWS акаунти: AWS CloudFormation и Terraform ви предоставят средствата за това.

Нека първо да поговорим за CloudFormation. CloudFormation сам по себе си не предлага контрол върху това как се използват шаблоните, но можете да използвате политиките на AWS IAM, за да позволите само на потребителите във вашия AWS акаунт да използват само стандартните шаблони на CloudFormation за създаване на ресурси. В нашия пример с кофа S3 може да искате да ограничите всички разрешения „S3 Create“ за потребителите и да им позволите да създават кофи S3 само от AWS Service Catalog или Nested Stacks.

Terraform ви позволява да контролирате кои ресурси вашите потребители могат да създават, използвайки политика като кодов инструмент Сентинел. Sentinel ви позволява да налагате фини, базирани на логика политики, за да разрешите или откажете действия на потребителите чрез Terraform. Например, можете да откажете всички ресурси, които създават S3 кофи и да позволите на потребителите да създават S3 кофи само от стандартен модул.

Управление на държавата

И AWS CloudFormation, и Terraform трябва да следят ресурсите, които поддържат.

Terraform съхранява състоянието на вашата инфраструктура в файл със състояние. Този файл се съхранява локално по подразбиране, но можете да го съхранявате на отдалечен бекенд като S3 и да накарате множество потребители да правят промени в един и същ набор от инфраструктура.

CloudFormation не поддържа файл със състояние, поне не такъв, който можем да видим. CloudFormation е управлявана услуга, така че извършва цялата поддръжка на състоянието и проверки във фонов режим.

И AWS CloudFormation, и Terraform имат средство, с което можете да проверите какви промени ще бъдат направени във вашата инфраструктура. В Terraform можете да изпълните команда – „terraform plan“ и как Terraform планира да приложи вашите промени в конфигурацията. В CloudFormation потребителите могат да видят тази информация чрез Change Sets.

  Fix League Ние възстановихме тази инсталационна грешка

език

Terraform използва HashiCorp Configuration Language, HCL, език, създаден от HashiCorp. Той е много подобен на JSON с допълнителни вградени функции и възможности.

Шаблоните на CloudFormation са написани във формати YAML или JSON

Регистриране и връщане назад

Както AWS CloudFormation, така и Terraform имат добри възможности за регистриране. Според моя опит грешките и проблемите са били ясни (в по-голямата си част).

CloudFormation: По подразбиране CloudFormation връща всичките ви промени в случай на неуспешна промяна на стека. Това е добра функция и може да бъде деактивирана за всякакви цели за отстраняване на грешки.

Terraform: Terraform няма да върне автоматично вашите промени, в случай че не успее. Това не е проблем, тъй като винаги можете да изпълните командата за унищожаване на terraform, за да изтриете полуосигурената конфигурация и да рестартирате изпълнение на Terraform отново.

Обхват

Terraform не се ограничава до AWS Cloud. Най-важният фактор при избора между Terraform и CloudFormation е, че Terraform поддържа други облачни доставчици и услуги.

Така че, ако планирате да използвате IAC за множество облачни платформи, Terraform е най-добрият избор. CloudFormation, въпреки че е мощен инструмент, е ограничен само до AWS. С помощта на Terraform можете да настроите инфраструктура и да внедрите приложението си в множество облачни платформи, като по този начин направите приложението си по-достъпно и стабилно.

Поддръжка на функции

Обикновено, тъй като AWS пуска нови услуги и функции, CloudFormation ще се актуализира преди Terraform, тъй като това е услуга на AWS. Към момента и двата инструмента покриват повечето от услугите и характеристиките на тези услуги. Това може да е лек недостатък на използването на Terraform, но ние имаме решение.

Има също възможност да създадете стек CloudFormation във вашия код Terraform. Така че, ако използвате Terraform и той няма функция, можете временно да настроите стек CloudFormation във вашия код на Terraform.

Техническа поддръжка

Платеният план за техническа поддръжка на AWS също покрива поддръжка на CloudFormation.

HashiCorp има платени планове и за техническа поддръжка на Terraform.

Заключение

Както AWS CloudFormation, така и Terraform са мощни и напълно разработени инструменти. Разликите по-горе ще ви помогнат да вземете информирано решение да изберете инструмента въз основа на вашите изисквания. Като лично предложение, ако планирате да използвате множество облачни платформи в бъдеще или в момента използвате множество облаци, трябва да използвате Terraform като едно гише за всички ваши нужди. Ако търсите IAC инструмент само за AWS, AWS CloudFormation и Terraform са честна игра.

Ако се интересувате от изучаването на Terraform, разгледайте тези онлайн курсове.