Инфраструктура как код
Инфраструктура как код (англ. Infrastructure-as-Code; Iac) — это подход для управления и описания инфраструктуры ЦОД через конфигурационные файлы, а не через ручное редактирование конфигураций на серверах или интерактивное взаимодействие.
IaC популярен в облачных вычислениях, который называется инфраструктура как сервис (IaaS). Основная идея IaC подхода это — описывать инфраструктуру кодом, переиспользуя практики из разработки ПО[1]. Код для управления инфраструктурой может быть написан как в декларативном стиле (встречается чаще), так и императивном.
Обзор
[править | править код]История IaC является симбиозом из двух вещей: простота создания виртуальной инфраструктуры и развитии модели инфраструктура как сервис. В 2006 был запущен сервис AWS Elastic Compute Cloud и выпущен фреймворк Ruby on Rails версии 1.0[2], которые позволили поднять вопрос масштабирования, с которой ранее сталкивались только огромные компании[3]. С новыми инструментами для решения этой проблемы и появился подход IaC. Идея обходиться с инфраструктурой, как с кодом, позволила разработчикам молниеносно разворачивать приложения[4].
Преимущества
[править | править код]Ценность IaC стоит на 3 китах: цена, скорость и уменьшение рисков. Уменьшение расходов относится не только к финансовой составляющей, но и к количеству времени, затрачиваемого на рутинные операции. Принципы IaC позволяют не фокусироваться на рутине, а заниматься более важными задачами. Автоматизация инфраструктуры позволяет эффективнее использовать существующие ресурсы. Также автоматизация позволяет минимизировать риск возникновения человеческой ошибки. Всё это является частью культуры DevOps, сочетающей в себе разработку и операции[5].
Виды подходов
[править | править код]Существует три подхода декларативный (функциональный), императивный (процедурный) и интеллектуальный. Разница между ними выглядит как 'что' / 'как' / 'почему' . Декларативный подход нацелен на то, чтобы описать, как должна выглядеть целевая конфигурация; императивный сфокусирован на том, какие внести изменения; интеллектуальный описывает, почему инфраструктура должна быть так сконфигурирована[6].
Методы
[править | править код]Существует два метода применения IaC: push и pull. Основная разница в том, кто инициирует изменение в конфигурации целевого хоста. В pull режиме целевой хост сам инициирует получение своей конфигурации. В push режиме конфигурацию ему присылает управляющий сервер[7].
Инструменты
[править | править код]Инструмент | Первый выпуск | Метод | Подход | Написан на |
---|---|---|---|---|
Pulumi | Pulumi | Drücken Sie | Declarative | Typescript, Python, Go |
Chef | Chef (2009) | Pull | Declarative and imperative | Ruby |
Otter | Inedo | Drücken Sie | Declarative and imperative | - |
Puppet | Puppet (2005) | Pull | Declarative | Ruby |
SaltStack | SaltStack | Push and Pull | Declarative and imperative | Python |
CFEngine | CFEngine | Pull | Declarative | - |
Terraform | HashiCorp (2014) | Drücken Sie | Declarative | Go |
DSC | Microsoft | Push/Pull | Declarative/Imperative | PowerShell |
Ansible/Ansible Tower | RedHat (2012) | Drücken Sie | Declarative and imperative | Python |
См. также
[править | править код]Ссылки и примечания
[править | править код]- ↑ Goncharov, Lev Что я узнал, протестировав 200 000 строк инфраструктурного кода (20 июня 2019). Дата обращения: 21 сентября 2019. Архивировано 21 сентября 2019 года.
- ↑ Bower, Joseph L.; Christensen, Claton M. Disruptive Technologies: Catching the Wave (англ.) // Harvard Business Review : magazine.
- ↑ Fletcher, Colin; Cosgrove, Terrence (2015-08-26). Innovation Insight for Continuous Configuration Automation Tools. Gartner (Report). Архивировано 11 декабря 2019. Дата обращения: 21 сентября 2019.
- ↑ Riley, Chris. Version Your Infrastructure (неопр.) // DevOps.com. — 2015. — 12 November. Архивировано 22 марта 2016 года.
- ↑ Phillips, Andrew Moving from Infrastructure Automation to True DevOps . DevOps.com (14 мая 2015). Дата обращения: 21 сентября 2019. Архивировано из оригинала 17 октября 2016 года.
- ↑ Declarative v. Imperative Models for Configuration Management: Which Is Really Better? Scriptrock.com. Дата обращения: 14 декабря 2015. Архивировано 4 мая 2015 года.
- ↑ Venezia, Paul Puppet vs. Chef vs. Ansible vs. Salt . networkworld.com. Network World (21 ноября 2013). Дата обращения: 14 декабря 2015. Архивировано 18 июля 2018 года.