Выбрать главу

Благодарности

Джош Падник

Без тебя эта книга не появилась бы. Ты тот, кто познакомил меня с Terraform, научил основам и помог разобраться со всеми сложностями. Спасибо, что поддерживал меня, пока я воплощал наши коллективные знания в книгу. Спасибо за то, что ты такой классный соучредитель. Благодаря тебе я могу заниматься стартапом и по-прежнему радоваться жизни. И больше всего я благодарен тебе за то, что ты хороший друг и человек.

O’Reilly Media

Спасибо за то, что выпустили еще одну мою книгу. Чтение и написание книг коренным образом изменили мою жизнь, и я горжусь тем, что вы помогаете мне делиться некоторыми из моих текстов с другими. Отдельная благодарность Брайану Андерсону за его помощь в подготовке первого издания в рекордные сроки и Вирджинии Уилсон, благодаря которой мне каким-то образом удалось поставить новый рекорд со вторым изданием.

Сотрудники Gruntwork

Не могу выразить, насколько я благодарен вам всем за то, что вы присоединились к нашему крошечному стартапу. Вы создаете потрясающее ПО! Спасибо, что удерживали компанию на плаву, пока я работал над вторым изданием этой книги. Вы замечательные коллеги и друзья.

Клиенты Gruntwork

Спасибо, что рискнули связаться с мелкой, неизвестной компанией и согласились стать подопытными кроликами для наших экспериментов с Terraform. Задача Gruntwork — на порядок упростить понимание, разработку и развертывание ПО. Нам не всегда это удается (в книге я описал многие из наших ошибок!), поэтому я благодарен за ваше терпение и желание принять участие в нашей дерзкой попытке улучшить мир программного обеспечения.

HashiCorp

Спасибо за создание изумительного набора инструментов для DevOps, включая Terraform, Packer, Consul и Vault. Вы улучшили мир DevOps, а заодно и жизни миллионов разработчиков.

Киф Моррис, Сет Варго, Маттиас Гис, Рокардо Феррейра, Акаш Махаян, Мориц Хейбер

Спасибо за вычитку первых черновиков книги и за большое количество по­дробных и конструктивных отзывов. Ваши советы улучшили эту книгу.

Читатели первого издания

Те из вас, кто купил первое издание, сделали возможным создание второго. Спасибо. Ваши отзывы, вопросы, предложения относительно исходного кода и постоянная жажда новостей послужили мотивацией примерно для 160 дополнительных страниц нового материала. Надеюсь, новый текст окажется полезным, и с нетерпением жду дальнейшего давления со стороны читателей.

Мама, папа, Лайла, Молли

Так получилось, что я написал еще одну книгу. Это, скорее всего, означает, что я проводил с вами меньше времени, чем мне бы хотелось. Спасибо за то, что отнеслись к этому с пониманием. Я вас люблю.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

1 Подробности ищите в руководствах по обновлению Terraform по адресу www.terra­form.io/upgrade-guides/index.html.

2 Список провайдеров для Terraform можно найти на странице www.terraform.io/docs/providers/.

1. Почему Terraform

Программное обеспечение (ПО) нельзя считать завершенным, если оно просто работает на вашем компьютере, проходит тесты и получает одобрение при обзоре кода (code review). ПО не готово, пока вы не доставите его пользователю.

Доставка ПО включает в себя множество задач, которые необходимо решить для того, чтобы сделать код доступным для клиента. Это подразумевает запуск кода на боевых (production) серверах, обеспечение его устойчивости к перебоям в работе и всплескам нагрузки, защиту от злоумышленников. Прежде чем погружаться в мир Terraform, стоит сделать шаг назад и поговорить о роли этого инструмента в большом деле доставки программного обеспечения.

В этой главе мы подробно обсудим следующие темы.

• Появление DevOps.

• Что такое инфраструктура как код.

• Как работает Terraform.

• Сравнение Terraform с другими инструментами для работы с инфраструктурой как с кодом.

Появление DevOps

Если бы в недалеком прошлом вы захотели создать компанию — разработчик ПО, вам бы пришлось иметь дело с большим количеством оборудования. Для этого нужно было бы подготовить шкафы и стойки, поместить в них серверы, подключить кабели и провода, установить систему охлаждения, предусмотреть резервные системы питания и т. д. В те дни было логично разделять работников на две команды: разработчиков (developers, Devs), которые занимались написанием программ, и системных администраторов (operations, Ops), в чьи обязанности входило управление этим оборудованием.