Ответ
**Chef** — это инструмент для автоматизации конфигурации и управления инфраструктурой, основанный на парадигме **«инфраструктура как код» (IaC)**. Он использует клиент-серверную архитектуру и язык Ruby для описания желаемого состояния системы.
**Ключевые компоненты и опыт работы:**
1. **Chef Server:** Центральный хаб для хранения кулинарных книг (cookbooks), политик и данных об узлах.
2. **Chef Client (агент):** Устанавливается на управляемых узлах, периодически «опрашивает» сервер, получает конфигурацию и применяет ее.
3. **Кулинарная книга (Cookbook):** Основная единица конфигурации, содержащая рецепты (recipes), ресурсы, шаблоны и файлы.
4. **Рецепт (Recipe):** Коллекция ресурсов, описывающих конкретную конфигурацию.
5. **Ресурс (Resource):** Декларативное описание части системы (пакет, служба, файл).
**Пример простого рецепта для установки и запуска Nginx:**
```ruby
# cookbooks/webserver/recipes/default.rb
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
file '/var/www/html/index.html' do
content '