Читаем Terraform: инфраструктура на уровне кода полностью

Движение DevOps основано на четырех принципах: культуре, автоматизации, измерении и разделении (в англ. языке иногда используется аббревиатура CASM (http://bit.ly/2GS3CR3) — culture, automation, sharing, measurement). Эта книга не задумывалась как комплексный обзор DevOps (рекомендуемая литература приводится в приложении), поэтому сосредоточусь лишь на одном из указанных принци­пов: автоматизации.

Наша задача — автоматизировать как можно больше аспектов процесса доставки программного обеспечения. Это означает, что вы будете управлять своей инфраструктурой через код, а не с помощью веб-страницы или путем ввода консольных команд. Такую концепцию обычно называют «инфраструктура как код» (infrastructure as code, или IaC).

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

Идея, стоящая за IaC, заключается в том, что для определения, развертывания, обновления и удаления инфраструктуры нужно писать и выполнять код. Это важный сдвиг в образе мышления, когда все аспекты системного администрирования воспринимаются как программное обеспечение — даже те, которые представляют оборудование (например, настройка физических серверов). Ключевым аспектом DevOps является то, что почти всем можно управлять внутри кода, включая серверы, базы данных, сети, журнальные файлы, программную конфигурацию, документацию, автоматические тесты, процессы развертывания и т. д.

Инструменты IaC можно разделить на пять общих категорий:

• специализированные скрипты;

• средства управления конфигурацией;

• средства шаблонизации серверов;

• средства оркестрации;

• средства инициализации ресурсов.

Рассмотрим каждую из них.

Специализированные скрипты

Самый простой и понятный способ что-либо автоматизировать — написать для этого специальный скрипт. Вы берете задачу, которая выполняется вручную, разбиваете ее на отдельные шаги, описываете каждый шаг в виде кода, используя любимый скриптовый язык, и выполняете получившийся скрипт на своем сервере, как показано на рис. 1.1.

Рис. 1.1. Выполнение специализированного скрипта на сервере

Например, ниже показан bash-скрипт setup-webserver.sh, который конфигурирует веб-сервер, устанавливая зависимости, загружая код из Git-репозитория и запуская Apache:

# Обновляем кэш apt-get

sudo apt-get update

# Устанавливаем PHP и Apache

sudo apt-get install -y php apache2

# Копируем код из репозитория

sudo git clone https://github.com/brikis98/php-app.git /var/www/html/app

# Запускаем Apache

sudo service apache2 start

Крайне удобной особенностью специализированных скриптов (и их огромным недостатком) является то, что код можно писать как угодно и с использованием популярных языков программирования общего назначения.

Если инструменты, специально созданные для IaC, предоставляют лаконичный API для выполнения сложных задач, языки программирования общего назначения подразумевают написание своего кода в каждом отдельно взятом случае. Более того, средства IaC обычно навязывают определенную структуру кода, тогда как в специализированных скриптах каждый разработчик использует собственный стиль и делает вещи по-своему. Если речь идет о скрипте из восьми строк, который устанавливает Apache, обе проблемы можно считать незначительными, но, если вы попытаетесь применить тот же подход к управлению десятками серверов, базами данных, балансировщиками нагрузки и сетевой конфигурацией, все пойдет наперекосяк.

Если вам когда-либо приходилось поддерживать большой репозиторий bash-скриптов, вы знаете, что это почти всегда превращается в «кашу» из плохо структурированного кода. Специализированные скрипты отлично подходят для небольших одноразовых задач, но, если вы собираетесь управлять всей своей инфраструктурой в виде кода, следует использовать специально предназначенный для этого инструмент IaC.

Средства управления конфигурацией

Chef, Puppet, Ansible и SaltStack являются средствами управления конфигурацией. Это означает, что они предназначены для установки и администрирования программного обеспечения на существующих серверах. Например, ниже показана роль Ansible под названием web-server.yml, которая настраивает тот же веб-сервер Apache, что и скрипт setup-webserver.sh:

- name: Update the apt-get cache

  apt:

    update_cache: yes

- name: Install PHP

  apt:

    name: php

- name: Install Apache

  apt:

    name: apache2

- name: Copy the code from the repository

  git: repo=https://github.com/brikis98/php-app.git dest=/var/www/html/app

- name: Start Apache

  service: name=apache2 state=started enabled=yes

Этот код похож на bash-скрипт, но использование такого инструмента, как Ansible, дает ряд преимуществ.

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

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

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги