Давайте вспомним все, что мы сделали в прошлом блоге:
- Настройка рабочей станции и шеф-репо.
- Зарегистрировался на chef для использования размещенного chef в качестве chef-сервера.
- Загрузил узел, которым будет управлять chef-сервер.
- Скачал поваренную книгу «apache» в нашем шеф-репо.
- Загрузил поваренную книгу «apache» на chef-сервер.
- Добавлен рецепт [apache] в список запуска узла.
- Запустил клиент-шеф на клиенте, чтобы применить поваренную книгу.
Теперь давайте продолжим и попробуем разобраться в некоторых понятиях вокруг шеф-повара и увидеть их в действии.
Узел Объект
Прелесть шеф-повара в том, что он дает объектно-ориентированный подход ко всему управлению конфигурацией. Объект Node, как следует из названия, является объектом класса Node ( http://rubydoc.info/gems/chef/Chef/Node ). Объект узла состоит из списка выполнения и атрибутов узла, который представляет собой файл JSON, который хранится на сервере Chef. Chef-клиент получает копию объекта узла с сервера Chef и поддерживает состояние узла.
Атрибуты:
Атрибут — это конкретная деталь об узле, такая как IP-адрес, имя хоста, список загруженных модулей ядра и т. Д.
Данные мешки:
Пакеты данных — это файлы JSON, используемые для хранения данных, необходимых для всех узлов, а не для отдельных поваренных книг. Они могут быть доступны внутри кулинарных книг, атрибутов файлов с помощью поиска. Пример: профили пользователей, группы, пользователи и т. д. Используется ролями и средами, постоянство доступно на всех узлах.
Теперь давайте исследуем объект узла и увидим атрибуты и пакеты данных. Мы также увидим, как мы можем изменить и установить их.
Сначала давайте посмотрим, какие все узлы зарегистрированы на chef-сервере:
1
2
3
4
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife node list aws-linux-node aws-node-ubuntu awsnode |
Теперь давайте посмотрим детали узла awsnode.
01
02
03
04
05
06
07
08
09
10
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife node show awsnode Node Name: awsnode Environment: _default FQDN: ip-172-31-36-73.us-west-2.compute.internal IP: 172.31.36.73 Run List: recipe[apache] Roles: Recipes: apache, apache::default Platform: redhat 7.0 Tags: |
Поиск определенных атрибутов : вы можете найти fqdn узла aws.
1
2
3
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife node show awsnode -a fqdn awsnode: fqdn: ip-172-31-36-73.us-west-2.compute.internal |
Поиск : Поиск — это одна из лучших функций шеф-повара «Поиск». Chef Server использует Solr для поиска объектов узлов. Таким образом, мы можем предоставить запросы в стиле Solr для поиска атрибутов объекта узла Json и пакетов данных.
Давайте посмотрим, как мы можем найти все узлы и увидеть их fqdn (полное доменное имя):
1
2
3
4
5
6
7
8
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife search node "*:*" -a fqdn 2 items found node1: fqdn: centos63.example.com awsnode: fqdn: ip-172-31-36-73.us-west-2.compute.internal |
Изменение значений по умолчанию с использованием атрибутов
Давайте попробуем изменить некоторые значения по умолчанию в нашей поваренной книге apache, используя атрибуты.
В папке / chef-repo / cookbooks / apache / attribute мы можем найти файл default.rb (создать, если нет). Добавьте следующее:
1
|
default[ "apache" ][ "indexfile" ]= "index1.html" |
Теперь перейдите в папку cookbooks / apache / files / default и создайте файл index1.html.
1
2
3
4
5
|
< html > < body > < h1 > Dude!! This is index1.html, it has been changed by chef!</ h1 > </ body > </ html > |
Последнее, что нам нужно сделать, чтобы получить эту работу, это изменить рецепт и сказать ему выбрать файл индекса по умолчанию из атрибута узла ‘indexfile’, который мы только что установили. Итак, откройте файл ‘cookbooks / apache / recipes / default.rb’ и добавьте это:
1
2
3
4
|
cookbook_file "/var/www/index.html" do source node[ "apache" ][ "indexfile" ] mode "0644" end |
Теперь загрузите поваренную книгу на сервер chef с помощью команды:
1
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife cookbook upload apache |
Затем перейдите к узлу и запустите chef-client:
1
|
opscode@awsnode:~$ sudo chef-client |
Теперь нажмите на внешний IP-адрес узла в браузере, и мы увидим изменение. Итак, мы только что использовали этот атрибут для изменения страницы индекса по умолчанию на сервере apache.
Здесь важно отметить приоритет установки атрибутов. Значения по умолчанию в рецепте имеют приоритет над атрибутами, а роль имеет приоритет над рецептами. Порядок приоритета выглядит следующим образом:
1
|
Ohai > Role > Environment > Recipe > Attribute |
Роли:
Роль сообщает нам, как действует определенный узел, тип узла, «веб-сервер», «база данных» и т. Д. Использование этой функции заключается в том, что мы можем связать с ней run_list. Таким образом, вместо предоставления получателей в качестве run_list узла, мы свяжем run_lists с ролью, а затем применим эту роль к узлу.
Создание роли:
1
|
knife create role webserver |
Проверьте, создана ли роль:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife role show webserver chef_type: role default_attributes: apache: sites: admin: port: 8000 description: Web Server env_run_lists: json_class: Chef::Role name: webserver override_attributes: run_list: recipe[apache] |
Эта роль, которую мы только что создали, добавила рецепт apache в run_list.
Назначьте эту роль узлу «awsnode»
1
2
3
4
5
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife node run_list add awsnode 'role[webserver]' awsnode: run_list: recipe[apache] role[webserver] |
Загрузите эту роль на chef-сервер:
1
|
Anirudhs-MacBook-Pro:chef-repo anirudh$ knife role from file webserver.rb |
Теперь запустите chef-client на узле.
Среда:
Среда означает QA, Dev или производственную среду. Мы можем назначить узлу любую среду, а затем применить некоторые специфичные для среды атрибуты. Это просто маркировка узлов, атрибуты среды НЕ заменяют атрибуты роли.
В следующих блогах мы увидим, как мы можем использовать определения dev, QA, производственные среды, применять различные роли к узлам, настраивать атрибуты и пакеты данных и создавать полную экосистему.
Ссылка: | Настройка шеф-повара Part-2 от нашего партнера по JCG Анируд Бхатнагар в блоге Анирудх Бхатнагар. |