Chef является свободным и открытым инструментом управления конфигурацией. Он написан на Ruby, и Erlang. Chef может легко интегрироваться с облачными платформами, такими как AWS, OpenStack или Rackspace, и т.д., чтобы автоматически создавать и управлять серверами. Когда организация растет и число узлов увеличивается, становится трудно для системного администратора управлять каждым узлом самостоятельно. В этом случае Chef приходит на помощь. Система Chef состоит из трех частей, Chef – сервера, рабочих станций и узлов Chef. Инструмент DevOps позволяет системному администратору управлять несколькими узлами из центрального расположения.
В этой статье мы установим последнюю версию Chef на Ubuntu 17.04 (Zesty Zapus).
Необходимые условия для установки:
Перед установкой пакета рекомендуется обновить пакеты и хранилища с помощью следующей команды.
apt update && apt -y upgrade
После того, как ваша система обновиться, можно идти дальше.
Chef требует именя хоста, установленного на сервере. Имя хоста должно быть FQDN or Full Qualified Domain Name, например, chef.yourdomain.ru. Для того, чтобы установить имя хоста на сервере, выполните следующую команду.
hostname 'chef.yourdomain.ru'
Заменить chef.yourdomain.ru на доменное имя. Кроме того, обновить имя хоста в файле /etc/hostname.
echo "chef.yourdomain.ru" | tee /etc/hostname
Добавьте IP – адрес вашего хоста в файле /etc/hosts, выполнив следующую команду.
echo "192.168.1.1 chef.yourdomain.ru" >> /etc/hosts
Заменить 192.168.1.1 на фактический публичный IP – адрес.
Сервер протокола сетевого времени NTP требуется для синхронизации часов сервера. Chef требует от системы, к которой он подключен, запустить NTP, так как он очень чувствителен к изменениям времени. NTP работает на порту 123 на UDP. Для того, чтобы установить NTP на сервере, выполните следующую команду.
apt install ntp
Запустите NTP, выполнив следующую команду.
systemctl start ntp
Чтобы включить NTP для автоматического запуска во время загрузки, выполните следующую команду.
systemctl enable ntp
Вы можете проверить, что NTP имеет синхронизированные часы, выполнив следующую команду.
ntpq -p
Вы должны увидеть следующий вывод:
root@chef:~# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000 time.ooonet.ru 89.109.251.22 2 u 2 64 1 28.924 -0.036 0.065 46.8.40.31 (n2. 109.195.19.73 2 u 1 64 1 51.909 2.922 0.037 *ground.corbina. 193.11.166.8 2 u 2 64 1 2.826 0.274 0.031
Скачать пакет сервера Chef для Ubuntu, выполнив следующую команду.
wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb
Вы всегда можете найти ссылку на последнюю версию Chef, посетив страницу загрузки Chef. Теперь установите пакет, выполнив следующую команду.
dpkg -i chef-server-*.deb
Chef теперь установлен в вашей системе. Вам нужно будет настроить сервер, прежде чем использовать его.
Теперь вы можете запустить следующую команду, чтобы запустить все службы, необходимые для работы Chef.
chef-server-ctl reconfigure
Приведенная выше команда займет несколько минут, так как он устанавливает и настраивает все компоненты сервера Chef. После успешного окончания, вы должны получить следующее сообщение в конце.
Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds Chef Server Reconfigured!
Вы можете проверить, что услуги успешно запущены, выполнив следующую команду:
chef-server-ctl status
Вы должны увидеть следующий вывод.
root@chef:~# chef-server-ctl status run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s run: oc_bifrost: (pid 5766) 92s; run: log: (pid 5842) 92s run: oc_id: (pid 5849) 91s; run: log: (pid 5854) 91s run: opscode-erchef: (pid 6244) 84s; run: log: (pid 6108) 85s run: opscode-expander: (pid 5926) 88s; run: log: (pid 6010) 87s run: opscode-solr4: (pid 5895) 89s; run: log: (pid 5912) 89s run: postgresql: (pid 5718) 93s; run: log: (pid 5745) 92s run: rabbitmq: (pid 5239) 101s; run: log: (pid 5099) 105s run: redis_lb: (pid 5036) 121s; run: log: (pid 6361) 83s
Chef предоставляет веб-графический пользовательский интерфейс для администратора сервера Chef. Вы можете использовать консоль на основе графического интерфейса для управления пакетами данных, атрибутами, листами запуска, ролями, средой и cookbooks.
Чтобы установить управление Chef, выполните следующую команду:
chef-server-ctl install chef-manage
Перенастройка сервера Chef снова набрав:
chef-server-ctl reconfigure
И, наконец, настроить управление Chef с помощью следующей команды.
chef-manage-ctl reconfigure
Эта команда попросит вас принять условия лицензионного соглашения. Вы можете выбрать, чтобы принять лицензионное соглашение во время запуска или просто запустить следующую команду, чтобы автоматически принять лицензию.
chef-manage-ctl reconfigure --accept-license
Перед тем, как войти и использовать консоль администратора, вам нужно будет создать пользователя и организацию. При создании пользователя и организации, он автоматически генерирует RSA закрытых ключи, необходимые для подключения к рабочим станциям и клиенту. Вы можете создать новый каталог .chef для хранения ключей. Выполните команду, чтобы создать новую папку для хранения закрытых ключей.
mkdir ~/.chef
Теперь создайте нового администратора, выполнив следующую команду.
chef-server-ctl user-create admin Chef Administrator chef@yourdomain.com StrongPassword -f ~/.chef/admin.pem
Заменить администратор выбранным именем, Chef с именем и фамилией администратором, вашей электронной почтой chef@yourdomain.ru и admin.pem должны быть в соответствии с вашим именем пользователя. Замените StrongPassword на очень сильный пароль.
Теперь создайте новую организацию, выполнив следующую команду:
chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem
Замените my_org на короткое имя вашей организации, My Organization на полной название вашей организации и admin с правами администратора, которого вы создали.
Теперь установлен и настроен, что все необходимое для доступа к веб-консоли, вы можете получить доступ к консоли, перейдя по следующему URL через ваш любимый браузер.
http://Your-Server-IP
Вы также можете использовать доменное имя вместо IP сервера, если у вас есть домен настроенный. Вы должны увидеть следующий экран входа в систему.
Войдите, используя имя пользователя и пароль, которые вы создали. После того, как вы успешно вошли в систему, вы увидите следующий интерфейс.
Вы можете включить отчеты, чтобы узнать о процессе на всех Chef-клиентах, которые управляются сервером Chef. Вы можете запускать отчеты с помощью консоли управления Chef для просмотра отчетов на веб – консоли. Отчеты могут создаваться для всей организации, и они могут быть созданы для конкретных узлов. Для установки отчетов, выполните следующую команду.
chef-server-ctl install opscode-reporting
Перенастройка сервера Chef, запустив:
chef-server-ctl reconfigure
Настройка модуля отчетов при помощи команды:
opscode-reporting-ctl reconfigure
Вы можете проверить, установлен и работает правильно плагин installad, выполнив:
opscode-reporting-ctl test
Аналогичным образом, вы можете установить Chef Push jobs для выполнения заданий. Chef Push jobs позволяет серверу Chef выполнять задания с узлами независимо от Chef-клиентов. Chef Push jobs использует сервер API Chef и клиент Ruby, чтобы инициировать все соединения с сервером Chef. Установите Push Jobs, выполнив следующую команду:
chef-server-ctl install opscode-push-jobs-server
Перенастройка сервера Chef, запустив:
chef-server-ctl reconfigure
Настройка запуска модуля Push Jobs:
opscode-push-jobs-server-ctl reconfigure
В этой статье мы узнали, как установить последнюю версию Chef на последнюю версию Ubuntu. Вы можете узнать больше о Chef, посетив веб – сайт Chef.