Ответ
Развертывание на узлах — это автоматизированный процесс доставки и активации нового кода или конфигурации. В современном DevOps он строится на принципах идемпотентности и инфраструктуры как кода (IaC).
Типичный процесс:
- Provisioning (Подготовка инфраструктуры): Создание виртуальных машин, контейнеров или нод в кластере с помощью инструментов вроде Terraform или облачных SDK.
- Configuration Management (Управление конфигурацией): Приведение узлов в нужное состояние с помощью Ansible, Chef или Puppet (установка пакетов, настройка системных сервисов).
- Artifact Deployment (Доставка артефакта): Копирование собранного артефакта (Docker-образа, JAR-файла) на целевые узлы через CI/CD пайплайн.
- Orchestration (Оркестрация): Координированное обновление сервисов с минимальным временем простоя, часто с использованием Kubernetes или Docker Swarm.
Пример сценария развертывания веб-приложения с использованием Ansible и Docker:
Playbook Ansible (deploy.yml):
- name: Deploy Web Application
hosts: webservers
become: yes
vars:
app_version: "v1.2.3"
docker_image: "my-registry/app:{{ app_version }}"
tasks:
- name: Pull latest Docker image
docker_image:
name: "{{ docker_image }}"
source: pull
- name: Stop and remove old container
docker_container:
name: my_app
state: absent
- name: Run new container
docker_container:
name: my_app
image: "{{ docker_image }}"
ports:
- "8080:80"
env:
NODE_ENV: "production"
restart_policy: always
Ключевые практики: Синие-зеленые развертывания, canary-релизы, откат (rollback) через переключение на предыдущую версию артефакта или манифеста.