Читаем Terraform: инфраструктура на уровне кода онлайн бесплатно
Terraform: инфраструктура на уровне кода
Terraform является настоящей звездой в мире DevOps. Это технология, позволяющая конфигурировать, запускать и управлять облачной инфраструктурой. «Инфраструктура как код» (IaC) позволяет оптимально использовать виртуализированные платформы таких технологических гигантов, как AWS, Google Cloud, Azure и другие. Евгений Брикман приводит простотые и лаконичные примеры кода, который используется в Terraform для развертывания инфраструктуры и управления ею. Бывалые сисадмины, DevOps-инженеры и разработчики-новички быстро перейдут от основ Terraform к работе с полным стеком, способным поддерживать большие объемы трафика и гарантируют стабильные условия для работы большой команды специалистов.
Серия: Бестселлеры O'Reilly
Компьютеры и Интернет / Зарубежная компьютерная, околокомпьютерная литератураЕвгений Брикман
Terraform: инфраструктура на уровне кода
2-е издание
2020
Научный редактор
Переводчики
Литературный редактор
Художник
Корректоры
Евгений Брикман
Terraform: инфраструктура на уровне кода. — СПб.: Питер, 2020.
ISBN 978-5-4461-1590-7
© ООО Издательство "Питер", 2020
Введение
Давным-давно в далеком-предалеком вычислительном центре древнее племя могущественных существ, известных как «сисадмины», вручную развертывало инфраструктуру. Каждый сервер, база данных (БД), балансировщик нагрузки и фрагмент сетевой конфигурации создавались и управлялись вручную. Это было мрачное и ужасное время: страх простоя, случайной ошибки в конфигурации, медленных и хрупких развертываний и того, что может произойти, если сисадмины перейдут на темную сторону (то есть возьмут отпуск). Но спешу вас обрадовать — благодаря движению DevOps у нас теперь есть замечательный инструмент:
Terraform (https://www.terraform.io/) — это инструмент с открытым исходным кодом от компании HashiCorp. Он позволяет описывать инфраструктуру в виде кода на простом декларативном языке и развертывать ее/управлять ею в различных публичных облачных сервисах (скажем, Amazon Web Services, Microsoft Azure, Google Cloud Platform, DigitalOcean), а также частных облаках и платформах виртуализации (OpenStack, VMWare и др.) всего несколькими командами. Например, вместо того чтобы вручную щелкать кнопкой мыши на веб-странице или вводить десятки команд в консоль, вы можете воспользоваться следующим кодом и сконфигурировать сервер в AWS:
provider "aws" {
region = "us-east-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Чтобы его развернуть, введите следующее:
$ terraform init
$ terraform apply
Благодаря своей простоте и мощи Terraform стал ключевым игроком в мире DevOps. Он позволяет заменить громоздкие, хрупкие и неавтоматизированные средства управления инфраструктурой на надежный автоматизированный инструмент, поверх которого вы можете объединить все остальные элементы DevOps (автоматическое тестирование, непрерывную интеграцию и непрерывное развертывание) и сопутствующий инструментарий (например, Docker, Chef, Puppet).
Прочитайте эту книгу, и вы сможете сразу приступить к работе с Terraform.
Начав с простейшего примера Hello, World, вы научитесь работать с полным стеком технологий (кластером серверов, балансировщиком нагрузки, базой данных), рассчитанным на огромные объемы трафика и крупные команды разработчиков, уже после прочтения лишь нескольких глав. Это практическое руководство не только научит принципам DevOps и инфраструктуры как кода (infrastructure as code, или IaC), но и проведет вас через десятки примеров кода, которые можно попробовать выполнить дома. Поэтому держите компьютер под рукой.
Дочитав книгу, вы будете готовы к работе с Terraform в реальных условиях.
Целевая аудитория книги
Книга предназначена для всех, кто отвечает за уже написанный код. Это относится к сисадминам, специалистам по эксплуатации, релиз-, SR-, DevOps-инженерам, разработчикам инфраструктуры, разработчикам полного цикла, руководителям инженерной группы и техническим директорам. Какой бы ни была ваша должность, если вы занимаетесь инфраструктурой, развертываете код, конфигурируете серверы, масштабируете кластеры, выполняете резервное копирование данных, мониторите приложения и отвечаете на вызовы в три часа ночи, эта книга для вас.
В совокупности эти обязанности обычно называют операционной деятельностью (или системным администрированием). Раньше часто встречались разработчики, которые умели писать код, но не разбирались в системном администрировании; точно так же нередко попадались сисадмины без умения писать код. Когда-то такое разделение было приемлемым, но в современном мире, который уже нельзя представить без облачных вычислений и движения DevOps, практически любому разработчику необходимы навыки администрирования, а любой сисадмин должен уметь программировать.
Для чтения этой книги не обязательно быть специалистом в той или иной области — поверхностного знакомства с языками программирования, командной строкой и серверным программным обеспечением (сайтами) должно хватить. Всему остальному можно научиться в процессе. Таким образом, по окончании чтения вы будете уверенно разбираться в одном из важнейших аспектов современной разработки и системного администрирования — в управлении инфраструктурой как кодом.
Вы не только научитесь управлять инфраструктурой в виде кода, используя Terraform, но и узнаете, как это вписывается в общую концепцию DevOps. Вот несколько вопросов, на которые вы сможете ответить по прочтении этой книги.
• Зачем вообще использовать IaC?
• Какая разница между управлением конфигурацией, оркестрацией, инициализацией ресурсов и шаблонизацией серверов?
• Когда следует использовать Terraform, Chef, Ansible, Puppet, Salt, CloudFormation, Docker, Packer или Kubernetes?
• Как работает система Terraform и как с ее помощью управлять инфраструктурой?
• Как создавать модули Terraform, подходящие для повторного использования?
• Как писать код для Terraform, который будет достаточно надежным для практического применения?
• Как тестировать свой код для Terraform?
• Как внедрить Terraform в свой процесс автоматического развертывания?
• Как лучше всего использовать Terraform в командной работе?
Вам понадобятся лишь компьютер (Terraform поддерживает большинство операционных систем), интернет-соединение и желание учиться.
Почему я написал эту книгу
Terraform — мощный инструмент, совместимый со всеми популярными облачными провайдерами. Он основан на простом языке, позволяет повторно использовать код, выполнять тестирование и управлять версиями. Это открытый проект с дружелюбным и активным сообществом. Но, надо признать, он еще не до конца сформирован.
Terraform — относительно новая технология. Несмотря на ее популярность, по состоянию на январь 2020 года все еще не вышла версия 1.0.0 (стабильная версия — 0.12.21. —
Я написал эту книгу, чтобы помочь разработчикам изучить Terraform. Я пользуюсь этим инструментом четыре года из пяти с момента его создания — в основном в моей компании Gruntwork (http://www.gruntwork.io). Там он сыграл ключевую роль в создании библиотеки более чем из 300 000 строк проверенного временем инфраструктурного кода, готового к повторному использованию и уже применяемого сотнями компаний в промышленных условиях. Написание и поддержка такого большого объема инфраструктурного кода на таком длинном отрезке времени в таком огромном количестве разных компаний и сценариев применения позволили нам извлечь много непростых уроков. Я хочу поделиться ими с вами, чтобы вы могли сократить этот долгий процесс и овладеть Terraform в считаные дни.
Конечно, одним чтением этого не добьешься. Чтобы начать свободно разговаривать на французском, придется потратить какое-то время на общение с носителями языка, просмотр французских телепередач и прослушивание французской музыки. Чтобы овладеть Terraform, нужно написать для этой системы настоящий код, использовать его в реальном ПО и развернуть это ПО на настоящих серверах. Поэтому приготовьтесь к чтению, написанию и выполнению большого количества кода.
Структура издания
В книге освещается следующий список тем.
•
•
Эту книгу можно читать последовательно или сразу переходить к тем главам, которые вас больше всего интересуют. Имейте в виду, что все примеры последующих глав основаны на коде из предыдущих. Если вы листаете туда-сюда, используйте в качестве ориентира архив исходного кода (как описано в разделе «Примеры с открытым исходным кодом» далее). В приложении вы найдете список книг и статей о Terraform, системном администрировании, IaC и DevOps.
Что нового во втором издании
Первое издание вышло в 2017 году. В мае 2019-го я готовил второе издание и был очень удивлен тому, как все изменилось за пару лет! Эта книга по своему объему почти в два раза превосходит предыдущую и включает две полностью новые главы. Кроме того, существенно обновлены все оригинальные главы и примеры кода.
Если вы уже прочитали первое издание и хотите узнать, что изменилось, или вам просто интересно посмотреть, как эволюционировал проект Terraform, вот несколько основных моментов.
•





