Инфраструктура
- 1 year ago
- 0
- 0
Инфраструктура как код ( англ. Infrastructure-as-Code; Iac ) — это подход для управления и описания инфраструктуры ЦОД через конфигурационные файлы, а не через ручное редактирование конфигураций на серверах или интерактивное взаимодействие.
IaC популярен в облачных вычислениях , который называется инфраструктура как сервис (IaaS). Основная идея IaC подхода это — описывать инфраструктуру кодом, переиспользуя практики из разработки ПО . Код для управления инфраструктурой может быть написан как в декларативном стиле (встречается чаще), так и императивном .
История IaC является симбиозом из двух вещей: простота создания виртуальной инфраструктуры и развитии модели инфраструктура как сервис . В 2006 был запущен сервис AWS и выпущен фреймворк Ruby on Rails версии 1.0 , которые позволили поднять вопрос масштабирования, с которой ранее сталкивались только огромные компании . С новыми инструментами для решения этой проблемы и появился подход IaC. Идея обходиться с инфраструктурой, как с кодом, позволила разработчикам молниеносно разворачивать приложения .
Ценность IaC стоит на 3 китах: цена, скорость и уменьшение рисков. Уменьшение расходов относится не только к финансовой составляющей, но и к количеству времени, затрачиваемого на рутинные операции. Принципы IaC позволяют не фокусироваться на рутине, а заниматься более важными задачами. Автоматизация инфраструктуры позволяет эффективнее использовать существующие ресурсы. Также автоматизация позволяет минимизировать риск возникновения человеческой ошибки. Всё это является частью культуры DevOps , сочетающей в себе разработку и .
Существует три подхода декларативный (функциональный), императивный (процедурный) и интеллектуальный. Разница между ними выглядит как 'что' / 'как' / 'почему' . Декларативный подход нацелен на то, чтобы описать, как должна выглядеть целевая конфигурация; императивный сфокусирован на том, какие внести изменения; интеллектуальный описывает, почему инфраструктура должна быть так сконфигурирована .
Существует два метода применения IaC: push и pull . Основная разница в том, кто инициирует изменение в конфигурации целевого хоста. В pull режиме целевой хост сам инициирует получение своей конфигурации. В push режиме конфигурацию ему присылает управляющий сервер .
Инструмент | Первый выпуск | Метод | Подход | Написан на |
---|---|---|---|---|
Pulumi | Pulumi | Push | Declarative | Typescript, Python, Go |
Chef | Chef (2009) | Pull | Declarative and imperative | Ruby |
Push | Declarative and imperative | - | ||
Puppet | Puppet (2005) | Pull | Declarative | Ruby |
SaltStack | SaltStack | Push and Pull | Declarative and imperative | Python |
CFEngine | Pull | Declarative | - | |
Terraform | (2014) | Push | Declarative | Go |
DSC | Microsoft | Push/Pull | Declarative/Imperative | PowerShell |
Ansible / Ansible Tower | RedHat (2012) | Push | Declarative and imperative | Python |