Terraform: инфраструктура на уровне кода | страница 34




Резюме

Ниже показана сводная таблица самых популярных средств IaC (табл. 1.4). Заметьте, что здесь приводятся стандартные и самые распространенные способы их применения. Как уже упоминалось ранее, данные инструменты достаточно гибкие, чтобы их можно было применять и в других конфигурациях (например, Chef можно запускать без центрального сервера, а Salt поддерживает неизменяемую инфраструктуру).


Таблица 1.4. Сравнение наиболее распространенных способов использования самых популярных средств IaC

Инструмент

Код

Об­ла­ка

Тип

Инфра­структура

Язык

Агент

Вед. cер­вер

Сообщество

Зрелость

Chef

Откр.

Все

Упр. конф.

Изменя­емая

Проце­дур­ный

Есть

Есть

Большое

Высокая

Puppet

Откр.

Все

Упр. конф.

Изменя­емая

Декларативный

Есть

Есть

Большое

Высокая

Ansible

Откр.

Все

Упр. конф.

Изменя­емая

Проце­дур­ный

Нет

Нет

Огромное

Средняя

SaltStack

Откр.

Все

Упр. конф.

Изменя­емая

Декларативный

Есть

Есть

Большое

Средняя

CloudFor­mation

Закр.

AWS

Иниц. рес.

Неизменяемая

Декларативный

Нет

Нет

Маленькое

Средняя

Heat

Откр.

Все

Иниц. рес.

Неизменяемая

Декларативный

Нет

Нет

Маленькое

Низкая

Terraform

Откр.

Все

Иниц. рес.

Неизменяемая

Декларативный

Нет

Нет

Огромное

Низкая

В компании Gruntwork нам нужно было открытое, не привязанное к конкретному облаку средство инициализации ресурсов, которое поддерживает неизменяемую инфраструктуру, декларативный язык, архитектуру, не требующую наличия центральных серверов и агентов, и имеет большое сообщество и зрелую кодовую базу. Как показывает табл. 1.4, проект Terraform хоть и неидеальный, но именно он больше всего удовлетворяет нашим критериям.

Подходит ли он под ваши критерии? Если да, то переходите к главе 2, в которой вы научитесь его использовать.

3 Источник: KimG., HumbleJ., DeboisP., WillisJ. TheDevOpsHandbook: HowtoCreateWorld-ClassAgility, Reliability & SecurityinTechnologyOrganizations. — ITRevolutionPress, 2016.

4 Идемпотентность — свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом.

5 В современных операционных системах код выполняется в одном из двух «пространств»: в пространстве ядра и пространстве пользователя. Код, который работает в пространстве ядра, имеет прямой и неограниченный доступ ко всему оборудованию. На него не распространяются ограничения безопасности: вы можете выполнять любые процессорные инструкции, обращаться к любому участку жесткого диска, записывать в любой адрес памяти. При этом сбой в пространстве ядра обычно приводит к сбою всего компьютера. В связи с этим оно обычно отводится для самых низкоуровневых и доверенных функций ОС (которые называют ядром). Код в пользовательском пространстве не имеет непосредственного доступа к аппаратному обеспечению и вместо этого должен использовать API, предоставляемые ядром ОС. Эти интерфейсы могут накладывать ограничения безопасности (скажем, права доступа) и локализовать сбои в пользовательских приложениях, поэтому весь прикладной код работает в пользовательском пространстве.