Движение DevOps основано на четырех принципах: культуре, автоматизации, измерении и разделении (в англ. языке иногда используется аббревиатура CASM (http://bit.ly/2GS3CR3) — culture, automation, sharing, measurement). Эта книга не задумывалась как комплексный обзор DevOps (рекомендуемая литература приводится в приложении), поэтому сосредоточусь лишь на одном из указанных принципов: автоматизации.
Наша задача — автоматизировать как можно больше аспектов процесса доставки программного обеспечения. Это означает, что вы будете управлять своей инфраструктурой через код, а не с помощью веб-страницы или путем ввода консольных команд. Такую концепцию обычно называют
Что такое инфраструктура как код
Идея, стоящая за IaC, заключается в том, что для определения, развертывания, обновления и удаления инфраструктуры нужно писать и выполнять код. Это важный сдвиг в образе мышления, когда все аспекты системного администрирования воспринимаются как программное обеспечение — даже те, которые представляют оборудование (например, настройка физических серверов). Ключевым аспектом DevOps является то, что почти
Инструменты IaC можно разделить на пять общих категорий:
• специализированные скрипты;
• средства управления конфигурацией;
• средства шаблонизации серверов;
• средства оркестрации;
• средства инициализации ресурсов.
Рассмотрим каждую из них.
Специализированные скрипты
Самый простой и понятный способ что-либо автоматизировать — написать для этого
Рис. 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 являются
- 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, дает ряд преимуществ.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии