Автоматизация с помощью CHEF

Материал из megapuper
Перейти к: навигация, поиск

Установка 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