Что такое AWS OpsWorks?

«Что такое AWS OpsWorks?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AWS OpsWorks — это управляемый сервис конфигурации и оркестрации инфраструктуры от Amazon, который использует Chef (или Puppet) для автоматизации развертывания и управления серверами и приложениями. В DevOps его используют для реализации практик "Infrastructure as Code" (IaC) и единого управления гибридными средами.

Ключевые концепции и пример использования:

  1. Стек (Stack): Логическая группа ресурсов AWS (EC2, RDS, ELB) и on-premise серверов, которые управляются как единое целое.
  2. Слой (Layer): Определяет конфигурацию для определенного типа серверов (например, веб-сервер Nginx, сервер приложений Node.js, база данных). На слой назначаются рецепты Chef.
  3. Рецепты Chef (Cookbooks/Recipes): Код на Ruby, описывающий желаемое состояние сервера. OpsWorks автоматически выполняет эти рецепты при создании, настройке или обновлении инстансов.

Пример рецепта Chef для установки и настройки Nginx в OpsWorks:

# cookbooks/nginx/recipes/default.rb

# 1. Установка пакета Nginx
package 'nginx' do
  action :install
end

# 2. Создание кастомного конфига из шаблона
template '/etc/nginx/sites-available/myapp' do
  source 'myapp-site.erb'
  owner 'root'
  group 'root'
  mode '0644'
  variables(
    :app_port => node['myapp']['port'],
    :server_name => node['myapp']['domain']
  )
  notifies :reload, 'service[nginx]'
end

# 3. Активация сайта и перезапуск службы
link '/etc/nginx/sites-enabled/myapp' do
  to '/etc/nginx/sites-available/myapp'
  notifies :reload, 'service[nginx]'
end

service 'nginx' do
  action [:enable, :start]
  supports :status => true, :restart => true, :reload => true
end

Роль в DevOps: OpsWorks абстрагирует часть ручного управления инфраструктурой. Вы определяете желаемое состояние в коде (рецептах), а сервис обеспечивает его соблюдение на всех инстансах в слое, включая автоматическое масштабирование. Это обеспечивает консистентность, повторяемость и возможность отслеживания изменений конфигурации. Альтернативы в экосистеме AWS — AWS CloudFormation (декларативное описание инфраструктуры) и Systems Manager (управление конфигурацией на уровне ОС).