Статьи

Настройка шеф-повара Часть-2

Давайте вспомним все, что мы сделали в прошлом блоге:

  1. Настройка рабочей станции и шеф-репо.
  2. Зарегистрировался на chef для использования размещенного chef в качестве chef-сервера.
  3. Загрузил узел, которым будет управлять chef-сервер.
  4. Скачал поваренную книгу «apache» в нашем шеф-репо.
  5. Загрузил поваренную книгу «apache» на chef-сервер.
  6. Добавлен рецепт [apache] в список запуска узла.
  7. Запустил клиент-шеф на клиенте, чтобы применить поваренную книгу.

Теперь давайте продолжим и попробуем разобраться в некоторых понятиях вокруг шеф-повара и увидеть их в действии.

Узел Объект

Прелесть шеф-повара в том, что он дает объектно-ориентированный подход ко всему управлению конфигурацией. Объект 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 Анируд Бхатнагар в блоге Анирудх Бхатнагар.