Автоматизация с помощью CHEF
Установка CHEF-SERVER
1. качаем дистрибутив
http://www.getchef.com/chef/install/
2. устанавливаем
dpkg -i chef-server_11.0.10-1.ubuntu.11.04_amd64.deb
3. конфигурируем
sudo chef-server-ctl reconfigure
4. запускаем проверку, всё ли правильно встало
sudo chef-server-ctl test
5. проверяем hostname, должен резолвиться в FQDN.
Сервер готов, далее переходим к установке Workstation, на которой будем готовить рецепты.
Установка WORKSTATION
1. качаем дистрибутив
http://www.getchef.com/chef/install/
2. устанавливаем
dpkg -i chef_11.10.4-1.debian.6.0.5_amd64.deb
3. после установки проверяем версию
chef-client -v
4. проверяем созданные папки
/opt /chef /bin /embedded /bin /include /lib /share /ssl
5. ставим git
apt-get install git
6. клонируем chef-repo
git clone git://github.com/opscode/chef-repo.git
7. в папке пользователя проверяем папки
chef-repo/ certificates/ config/ сokbooks/ data_bags/ environments/ roles/
8. создаём папку
sudo mkdir -p ~/chef-repo/.chef
9. добавляем .chef в .gitignore
echo '.chef' >> .gitignore
10. копируем с сервера admin.pem и chef-validator.pem в папку /root/chef-repo/.chef
11. создаём knife.rb
knife configure --initial
будет примерно так
log_level :info log_location STDOUT node_name 'root' client_key '/root/.chef/root.pem' validation_client_name 'chef-validator' validation_key '/root/chef-repo/.chef/chef-validator.pem' chef_server_url 'https://chef.test.ru:443' syntax_check_cache_path '/root/.chef/syntax_check_cache' cookbook_path '/root/chef-repo/cookbooks/' knife[:editor] = 'mcedit'
12. проверям что chef-client и пользователи зареганы корректно
knife client list knife user list
13. подключаем сервер
knife bootstrap chef.test.ru
14. проверяем что сервер попал в список нод
knife node list
Подключение сервера к CHEF-SERVER
1. цепляем вновь установленную машину(debian.test.ru) к серваку
knife bootstrap debian.test.ru
2. проверяем что она появилась в нодах
knife node list
Теперь с ней можно работать
Создаём первый COOKBOOK
1. создаём cookbook
knife cookbook create NAME
2. загружаем cookbook на сервер
knife cookbook upload NAME
3. проверяем список cookbook-ов, должен появиться свежезагруженный
knife cookbook list
4. редактируем runlist для нужной ноды
knife node edit debian.test.ru { "name": "debian.test.ru", "chef_environment": "_default", "normal": { "tags": [ ] }, "run_list": [ "recipe[htop]" ] }
5. запускаем chef-client на вновь установленной машине и наблюдаем за процессом
knife ssh name:debian.test.ru "chef-client" -P пароль
таким макаром поставим пакет htop на debian.test.ru