Инфраструктура как код в 2026: Terraform, Ansible, Kubernetes — как автоматизировать инфраструктуру от А до Я

Инфраструктура как код в 2026: Terraform, Ansible, Kubernetes — как автоматизировать инфраструктуру от А до Я

Представьте: вам нужно развернуть 50 серверов с идентичной конфигурацией. Вручную это займёт дни ошибки неизбежны а результат непредсказуем. Коллега сделает настройки по-своему серверы станут "снежинками" у каждого свои особенности. Через полгода никто не вспомнит что и как было настроено.

Или: вы пишете конфигурацию в файл запускаете команду и через 10 минут 50 абсолютно идентичных серверов готовы. Каждая настройка задокументирована можно повторить в любой момент откатить изменения проверить код перед применением.

Это и есть Infrastructure as Code.

Цифры говорят сами:

  • Рынок инфраструктуры как кода вырастет до $6.14 млрд к 2033 с ростом 22%+ в год

  • Terraform держит 34.28% рынка управления конфигурациями

  • 20% новых проектов в 2025 стартовали на OpenTofu вместо Terraform

  • 80% компаний-разработчиков перейдут на внутренние платформы к 2026 (Gartner)

  • 75%+ разработчиков будут использовать агенты на основе нейросетей для инфраструктуры

  • Компании с автоматизацией инфраструктуры развёртывают изменения в 10-100 раз быстрее

В статье: что такое инфраструктура как код и зачем она нужна глубокое погружение в Terraform Ansible Kubernetes практические примеры от простых до сложных сравнение инструментов типичные ошибки тренды 2026 полный путь автоматизации.

1. Что такое Infrastructure as Code и почему это революция

Infrastructure as Code (IaC) инфраструктура как код — это практика управления инфраструктурой (серверы сети базы данных балансировщики) через файлы конфигурации а не через ручные действия.

Традиционный подход (императивный):

  1. Заходишь в консоль облачного провайдера

  2. Кликаешь "создать сервер"

  3. Выбираешь размер образ сеть

  4. Жмёшь кнопки пока всё не настроится

  5. Записываешь что сделал в Wiki (если не забыл)

  6. Повторяешь для каждого сервера

Проблемы:

  • Медленно: каждый сервер вручную

  • Ошибки: люди забывают шаги делают по-разному

  • Нет истории: не понятно кто что когда изменил

  • Дрейф конфигурации: серверы расходятся становятся уникальными "снежинками"

  • Невоспроизводимо: нельзя точно повторить настройку

Подход инфраструктуры как кода (декларативный):

  1. Описываешь нужную инфраструктуру в файле

  2. Сохраняешь файл в систему контроля версий (Git)

  3. Запускаешь инструмент который читает файл

  4. Инструмент создаёт всё автоматически

  5. Любые изменения — через изменения в коде

Преимущества:

  • Скорость: 100 серверов за то же время что 1 вручную

  • Согласованность: все серверы абсолютно одинаковые

  • Версионность: вся история изменений в Git

  • Проверяемость: код можно проверить перед применением

  • Воспроизводимость: можно точно пересоздать инфраструктуру

  • Документация: код и есть документация

  • Совместная работа: код-ревью ветки слияния как в разработке

Пример: Нужно развернуть тестовое окружение идентичное продакшну. Вручную это недели работы и риск что-то пропустить. С инфраструктурой как кода: terraform apply -var="env=test" и через 15 минут точная копия готова.

2. Terraform: декларативное управление инфраструктурой

Terraform — это инструмент от HashiCorp для создания изменения и управления инфраструктурой через конфигурационные файлы.

Философия Terraform

Декларативность: вы описываете желаемое состояние а Terraform разбирается как его достичь.

Вместо "создай сервер потом сеть потом привяжи" вы говорите "у меня должен быть сервер в этой сети" и Terraform сам определяет порядок действий.

Состояние (State): Terraform хранит текущее состояние инфраструктуры в файле состояния. Это позволяет:

  • Отслеживать что уже создано

  • Вычислять разницу между кодом и реальностью

  • Планировать изменения перед применением

  • Работать командой (общее состояние в удалённом хранилище)

Провайдеры: Terraform не создаёт ресурсы сам. Он работает через провайдеров — плагины которые знают как общаться с API разных сервисов:

  • AWS Azure Google Cloud (облака)

  • Kubernetes Docker (контейнеры)

  • GitHub GitLab (системы контроля версий)

  • Cloudflare Datadog (DNS мониторинг)

  • Сотни других

Базовый пример Terraform

# main.tf
# Настройка провайдера AWS
provider "aws" {
  region = "us-east-1"
}

# Создание виртуальной машины
resource "aws_instance" "web_server" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.medium"
  
  tags = {
    Name = "WebServer"
    Environment = "Production"
  }
}

# Создание группы безопасности
resource "aws_security_group" "web_sg" {
  name = "web-security-group"
  
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

# Вывод IP адреса сервера
output "server_ip" {
  value = aws_instance.web_server.public_ip
}

Рабочий процесс Terraform

1. Инициализация:

terraform init

Скачивает провайдеров настраивает бэкенд для состояния.

2. Планирование:

terraform plan

Показывает что будет создано изменено удалено. Критически важно: всегда смотрите план перед применением.

3. Применение:

terraform apply

Создаёт реальную инфраструктуру согласно плану.

4. Удаление:

terraform destroy

Удаляет всю инфраструктуру описанную в конфигурации.

Ключевые концепции

Идемпотентность: можно запускать terraform apply 10 раз результат будет один и тот же. Не будет дубликатов побочных эффектов.

Неизменяемая инфраструктура: вместо модификации существующих серверов Terraform пересоздаёт ресурсы. Это предотвращает дрейф конфигурации.

Граф зависимостей: Terraform автоматически определяет в каком порядке создавать ресурсы основываясь на их зависимостях.

Модули: переиспользуемые компоненты инфраструктуры. Можете создать модуль "веб-сервер" и использовать его в разных проектах.

Terraform vs OpenTofu

В августе 2023 HashiCorp сменил лицензию Terraform с открытой MPLv2 на более закрытую BSL. Сообщество ответило форком под названием OpenTofu — полностью открытый аналог под управлением Linux Foundation.

OpenTofu:

  • Полная совместимость с Terraform

  • Полностью открытая лицензия

  • Управление сообществом

  • Дополнительные возможности (сквозное шифрование конфигураций)

  • 20% новых проектов в 2025 стартовали на OpenTofu

Когда использовать Terraform:

  • Нужна коммерческая поддержка от HashiCorp

  • Используете платную HCP Terraform (бывший Terraform Cloud)

  • Зависите от проприетарных функций

Когда использовать OpenTofu:

  • Важна открытая лицензия

  • Хотите быть независимыми от лицензионной политики вендора

  • Поддерживаете открытое ПО

Практический совет: Для новых проектов рассмотрите OpenTofu. Миграция с Terraform в большинстве случаев тривиальна достаточно заменить бинарник terraform на tofu.

3. Ansible: управление конфигурацией и оркестрация

Ansible — это инструмент от Red Hat для автоматизации настройки серверов развёртывания приложений и выполнения задач.

Философия Ansible

Без агентов: в отличие от Chef и Puppet Ansible не требует установки агента на управляемые серверы. Работает через SSH.

Процедурность: Ansible описывает шаги которые нужно выполнить а не конечное состояние. Это делает его более гибким для оркестрации сложных задач.

YAML: конфигурации (playbooks) пишутся на YAML — простом и читаемом формате.

Идемпотентность: большинство модулей Ansible идемпотентны — можно запускать несколько раз без побочных эффектов.

Базовый пример Ansible

# playbook.yml
---
- name: Настройка веб-сервера
  hosts: webservers
  become: yes
  
  tasks:
    - name: Установка Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes
    
    - name: Копирование конфигурации
      copy:
        src: nginx.conf
        dest: /etc/nginx/nginx.conf
      notify: Перезапустить Nginx
    
    - name: Запуск Nginx
      service:
        name: nginx
        state: started
        enabled: yes
  
  handlers:
    - name: Перезапустить Nginx
      service:
        name: nginx
        state: restarted

Запуск:

ansible-playbook -i inventory playbook.yml

Ключевые концепции

Инвентарь (Inventory): список серверов которыми управляет Ansible.

# inventory.ini
[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com

[production:children]
webservers
databases

Playbooks: сценарии описывающие что нужно сделать.

Модули: готовые компоненты для типовых задач:

  • apt yum — управление пакетами

  • copy template — работа с файлами

  • service — управление сервисами

  • user group — управление пользователями

  • docker_container — работа с контейнерами

Роли (Roles): переиспользуемые наборы задач.

Handlers: задачи которые выполняются только если что-то изменилось.

Когда использовать Ansible

  • Настройка серверов: установка ПО конфигурация сервисов

  • Развёртывание приложений: обновление кода перезапуск сервисов

  • Оркестрация: сложные многошаговые процессы

  • Управление существующей инфраструктурой: где уже есть серверы

  • Гибридные окружения: облако плюс on-premise

Сильные стороны Ansible: простота низкий порог входа отсутствие агентов огромная библиотека модулей. Слабые: медленнее чем агентные решения менее подходит для создания инфраструктуры с нуля.

4. Kubernetes: оркестрация контейнеров как инфраструктура

Kubernetes (K8s) — это платформа для автоматизации развёртывания масштабирования и управления контейнеризованными приложениями.

Почему Kubernetes это инфраструктура как код

Всё в Kubernetes описывается декларативными манифестами в YAML. Вы описываете желаемое состояние а Kubernetes постоянно следит чтобы реальность соответствовала описанию.

Принцип: контроллеры постоянно работают в цикле:

  1. Читают желаемое состояние из манифестов

  2. Смотрят реальное состояние

  3. Приводят реальность к желаемому состоянию

Базовый пример Kubernetes

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"

---
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Применение:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Ключевые объекты Kubernetes

Pod: минимальная единица развёртывания один или несколько контейнеров работающих вместе.

Deployment: описывает как развёртывать и обновлять поды управляет репликами обновлениями откатами.

Service: обеспечивает постоянную точку доступа к подам балансировка нагрузки.

ConfigMap и Secret: конфигурация и секреты отдельно от кода.

Ingress: управление внешним доступом HTTP/HTTPS маршрутизация.

Namespace: логическое разделение ресурсов в кластере.

Helm: пакетный менеджер для Kubernetes

Helm упрощает развёртывание сложных приложений в Kubernetes. Вместо десятков YAML файлов вы используете "чарты" — пакеты с шаблонами.

Пример установки приложения через Helm:

# Добавление репозитория
helm repo add bitnami https://charts.bitnami.com/bitnami

# Установка PostgreSQL
helm install my-database bitnami/postgresql \
  --set auth.username=admin \
  --set auth.password=secretpass \
  --set persistence.size=20Gi

Преимущества Helm:

  • Версионность релизов

  • Простые обновления и откаты

  • Переиспользуемые шаблоны

  • Управление зависимостями

Когда использовать Kubernetes

  • Микросервисы: много независимых сервисов

  • Контейнеризованные приложения: всё в Docker

  • Высокая доступность: нужна автоматическая замена упавших подов

  • Динамическое масштабирование: нагрузка меняется

  • Мультиоблачность: запуск в разных облаках

Предупреждение: Kubernetes сложен. Не используйте его если можно обойтись проще. Для простых приложений он избыточен. Но если сложность оправдана Kubernetes даёт невероятную гибкость.

5. Сравнение инструментов: когда использовать что

КритерийTerraformAnsibleKubernetes

Основное назначение

Создание инфраструктурыНастройка серверовОркестрация контейнеров

Подход

ДекларативныйПроцедурныйДекларативный

Управляет состоянием

Да (файл состояния)НетДа (внутреннее)

Язык конфигурации

HCLYAMLYAML

Агенты на серверах

Не нужныНе нужны (SSH)Нужны (компоненты K8s)

Идемпотентность

ДаЧастичноДа

Мультиоблачность

ОтличноХорошоОтлично

Кривая обучения

СредняяНизкаяВысокая

Лучше всего для

Создания облачной инфраструктурыНастройки серверов развёртыванияКонтейнеризованных приложений

Типичные комбинации

Terraform + Ansible: самое распространённое сочетание.

  • Terraform создаёт инфраструктуру (серверы сети балансировщики)

  • Ansible настраивает серверы (устанавливает ПО настраивает сервисы)

Terraform + Kubernetes + Helm: для контейнеризованных приложений.

  • Terraform создаёт кластер Kubernetes

  • Helm развёртывает приложения в кластере

Terraform + Ansible + Kubernetes: полный стек.

  • Terraform создаёт инфраструктуру и кластер

  • Ansible настраивает вспомогательные серверы

  • Kubernetes управляет контейнеризованными приложениями

6. Практический пример: полная автоматизация от А до Я

Задача: развернуть веб-приложение с базой данных балансировщиком и мониторингом.

Архитектура:

  • 2 веб-сервера за балансировщиком

  • 1 база данных PostgreSQL

  • 1 сервер мониторинга с Prometheus и Grafana

  • Всё в изолированной сети с правилами безопасности

Шаг 1: Создание инфраструктуры с Terraform

# main.tf
provider "aws" {
  region = "us-east-1"
}

# Создание VPC
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  
  tags = {
    Name = "production-vpc"
  }
}

# Создание подсети
resource "aws_subnet" "public" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
  
  tags = {
    Name = "public-subnet"
  }
}

# Веб-серверы
resource "aws_instance" "web" {
  count         = 2
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.medium"
  subnet_id     = aws_subnet.public.id
  
  tags = {
    Name = "web-server-${count.index + 1}"
    Role = "web"
  }
}

# База данных
resource "aws_instance" "database" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.large"
  subnet_id     = aws_subnet.public.id
  
  tags = {
    Name = "database-server"
    Role = "database"
  }
}

# Балансировщик нагрузки
resource "aws_lb" "main" {
  name               = "web-lb"
  internal           = false
  load_balancer_type = "application"
  subnets            = [aws_subnet.public.id]
}

# Вывод IP адресов
output "web_servers_ips" {
  value = aws_instance.web[*].public_ip
}

output "database_ip" {
  value = aws_instance.database.private_ip
}

output "load_balancer_dns" {
  value = aws_lb.main.dns_name
}

Шаг 2: Настройка серверов с Ansible

# setup.yml
---
- name: Настройка веб-серверов
  hosts: webservers
  become: yes
  
  tasks:
    - name: Установка Docker
      apt:
        name: docker.io
        state: present
    
    - name: Запуск приложения в контейнере
      docker_container:
        name: webapp
        image: myapp:latest
        ports:
          - "80:8080"
        env:
          DATABASE_HOST: "{{ database_ip }}"

- name: Настройка базы данных
  hosts: database
  become: yes
  
  tasks:
    - name: Установка PostgreSQL
      apt:
        name: postgresql
        state: present
    
    - name: Создание базы данных
      postgresql_db:
        name: production
        state: present

- name: Настройка мониторинга
  hosts: monitoring
  become: yes
  
  tasks:
    - name: Установка Prometheus
      docker_container:
        name: prometheus
        image: prom/prometheus
        ports:
          - "9090:9090"
    
    - name: Установка Grafana
      docker_container:
        name: grafana
        image: grafana/grafana
        ports:
          - "3000:3000"

Шаг 3: Автоматизация всего процесса

#!/bin/bash
# deploy.sh

echo "==> Создание инфраструктуры..."
cd terraform
terraform init
terraform plan -out=plan.tfplan
terraform apply plan.tfplan

echo "==> Получение IP адресов..."
WEB_IPS=$(terraform output -json web_servers_ips | jq -r '.[]')
DB_IP=$(terraform output -raw database_ip)

echo "==> Генерация инвентаря Ansible..."
cat > ../ansible/inventory < Настройка серверов..."
cd ../ansible
ansible-playbook -i inventory setup.yml \
  --extra-vars "database_ip=$DB_IP"

echo "==> Готово! Приложение доступно по адресу:"
terraform output load_balancer_dns

7. Лучшие практики и типичные ошибки

Лучшие практики

1. Хранение состояния в удалённом бэкенде

Никогда не храните файл состояния Terraform локально. Используйте S3 GCS или Terraform Cloud.

# backend.tf
terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "production/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-locks"
    encrypt        = true
  }
}

2. Использование модулей

Не копируйте код создавайте переиспользуемые модули.

3. Разделение окружений

Отдельные конфигурации для dev staging production.

4. Код-ревью инфраструктурного кода

Относитесь к инфраструктуре как к коду приложения:

  • Пулл-реквесты

  • Код-ревью

  • Автоматическое тестирование

  • CI/CD для инфраструктуры

5. Проверка плана перед применением

ВСЕГДА смотрите terraform plan перед apply.

6. Использование тегов

Размечайте все ресурсы тегами для учёта и мониторинга.

7. Документирование

Комментарии в коде README файлы с объяснением архитектуры.

8. Управление секретами

Никогда не храните пароли и ключи в коде. Используйте:

  • Vault для секретов

  • Переменные окружения

  • Секреты облачных провайдеров

Типичные ошибки

1. Ручные изменения в консоли

Никогда не изменяйте ресурсы управляемые через код вручную. Это приводит к дрейфу состояния.

2. Отсутствие блокировок состояния

Два человека одновременно запускают Terraform состояние повреждается.

3. Игнорирование плана

Применение без просмотра плана может удалить критичные ресурсы.

4. Хранение секретов в коде

Пароли в Git это катастрофа.

5. Отсутствие тестирования

Инфраструктурный код тоже нужно тестировать. Используйте Terratest Checkov Terrascan.

6. Монолитные конфигурации

Один огромный файл всей инфраструктуры сложно поддерживать. Разбивайте на модули.

7. Отсутствие версионирования

Не фиксируете версии провайдеров модулей. Обновление ломает всё.

8. Тренды 2026: куда движется инфраструктура как код

1. Нейросети для генерации конфигураций

ChatGPT и аналоги генерируют Terraform и Ansible код. 75%+ разработчиков будут использовать агенты на основе нейросетей.

Но важно: код от нейросети нужно проверять так же тщательно как человеческий. Линтеры проверки безопасности код-ревью.

2. Автоматическое исправление дрейфа

Инструменты не только обнаруживают но и автоматически исправляют расхождения между кодом и реальностью.

3. Платформенная инженерия

Внутренние платформы где разработчики через простой интерфейс заказывают инфраструктуру а под капотом работает Terraform.

Gartner: 80% компаний перейдут на такие платформы к 2026.

4. GitOps для всего

Git как единый источник правды для инфраструктуры. Argo CD Flux для Kubernetes распространяются на всю инфраструктуру.

5. OpenTofu набирает обороты

20% новых проектов уже на OpenTofu. Тренд к открытым альтернативам усиливается.

6. Политики как код (Policy as Code)

OPA (Open Policy Agent) Sentinel для автоматической проверки соответствия требованиям безопасности до применения изменений.

7. Crossplane: Kubernetes для управления всем

Использование Kubernetes как универсального плана управления не только контейнерами но и облачными ресурсами.

8. Интеграция Terraform и Ansible

HashiCorp и Red Hat работают над первоклассной интеграцией. HCP Terraform Actions (бета) позволяет вызывать Ansible прямо из Terraform.

9. Проект infragraph

HashiCorp и IBM работают над единым графом инфраструктуры где нейросети смогут рассуждать о состоянии предлагать изменения действовать автономно.

9. Инструменты экосистемы

Управление состоянием и оркестрация:

  • Spacelift: платформа для управления Terraform Ansible Kubernetes

  • Atlantis: автоматизация Terraform через Git

  • Terragrunt: обёртка для Terraform упрощающая работу с модулями

Безопасность и проверки:

  • Checkov: 750+ политик безопасности для Terraform Kubernetes

  • Terrascan: сканирование на уязвимости

  • Trivy: проверка контейнеров и инфраструктурного кода

  • OPA: политики как код

Тестирование:

  • Terratest: тестирование Terraform кода на Go

  • Kitchen-Terraform: интеграционное тестирование

  • Molecule: тестирование Ansible ролей

Управление секретами:

  • HashiCorp Vault: централизованное управление секретами

  • SOPS: шифрование секретов в Git

  • Sealed Secrets: шифрованные секреты для Kubernetes

Мониторинг и визуализация:

  • Infracost: оценка стоимости инфраструктуры до применения

  • Rover: визуализация графа зависимостей Terraform

  • K9s: удобный терминальный интерфейс для Kubernetes

10. Пошаговый план внедрения

Для команды начинающей с нуля:

Неделя 1-2: Обучение и подготовка

  1. Выберите облачного провайдера (AWS Azure GCP)

  2. Пройдите базовые туториалы по Terraform

  3. Установите инструменты

  4. Настройте репозиторий Git

Неделя 3-4: Пилотный проект

  1. Выберите небольшой несложный компонент

  2. Опишите его в Terraform

  3. Настройте удалённое хранение состояния

  4. Создайте CI/CD пайплайн для инфраструктуры

Месяц 2-3: Расширение

  1. Добавьте Ansible для настройки

  2. Создайте переиспользуемые модули

  3. Внедрите проверки безопасности

  4. Настройте мониторинг инфраструктуры

Месяц 4-6: Масштабирование

  1. Переведите больше компонентов на код

  2. Создайте библиотеку модулей

  3. Автоматизируйте все окружения

  4. Внедрите платформенный подход

11. Заключение: инфраструктура как код это обязательный навык

В 2026 году инфраструктура как код это не тренд а стандарт. Компании которые всё ещё управляют инфраструктурой вручную проигрывают в скорости надёжности масштабируемости.

Ключевые выводы:

  1. Terraform/OpenTofu для создания: используйте для создания облачных ресурсов

  2. Ansible для настройки: используйте для конфигурации серверов и развёртывания

  3. Kubernetes для контейнеров: если приложение контейнеризовано

  4. Комбинируйте инструменты: каждый хорош в своей области

  5. Относитесь к инфраструктуре как к коду: Git код-ревью тестирование CI/CD

  6. Начинайте с малого: один компонент потом расширяйте

  7. Автоматизируйте безопасность: проверки до применения

  8. Следите за трендами: нейросети GitOps платформы

С чего начать прямо сейчас:

  1. Выберите один небольшой компонент инфраструктуры

  2. Опишите его в Terraform

  3. Сохраните в Git

  4. Запустите terraform plan и apply

  5. Убедитесь что можете пересоздать компонент из кода

  6. Добавьте ещё один компонент

  7. Автоматизируйте настройку через Ansible

Помните: главное преимущество инфраструктуры как кода не в скорости (хотя и она важна). Главное в воспроизводимости согласованности надёжности. Когда инфраструктура описана кодом вы можете:

  • Точно воспроизвести любое окружение

  • Понять кто что когда изменил

  • Откатить изменения если что-то пошло не так

  • Быть уверенными что dev staging production одинаковые

  • Быстро восстановиться после катастрофы

  • Масштабироваться без линейного роста команды

Последняя мысль: инфраструктура как код это не просто инструменты. Это культура надёжности культура автоматизации культура воспроизводимости. В 2026 году компании которые это понимают выигрывают у тех кто всё ещё нажимает кнопки в консолях. Начните сегодня начните с малого но начните. Будущее за автоматизацией.

А лучшие вакансии для DevOps ищите на hirehi.ru