Spec-Zone.ru › Chef 16

О инструменте Ohai

[править на GitHub]

Ohai — это инструмент, который используется для сбора данных о конфигурации системы, которые предоставляются клиенту Chef Infra для использования в кулинарных книгах. Ohai выполняется клиентом Chef Infra в начале каждого выполнения Chef для определения состояния системы. Ohai включает множество встроенных плагинов для обнаружения общих деталей конфигурации, а также модель плагинов для написания пользовательских плагинов.

Типы атрибутов, которые собирает Ohai, включают, но не ограничиваются:

  • Операционная система
  • Сеть
  • Память
  • Диск
  • Процессор
  • Ядро
  • Имена хостов
  • Полные доменные имена
  • Виртуализация
  • Метаданные поставщика облачных услуг

Атрибуты, которые собираются Ohai, являются атрибутами автоматического уровня, так как эти атрибуты используются клиентом Chef Infra для обеспечения того, чтобы эти атрибуты оставались неизменными после завершения настройки узла клиентом Chef Infra.

Ohai собирает данные для многих платформ, включая AIX, Darwin, Linux, FreeBSD, OpenBSD, NetBSD, Solaris и любые операционные системы Microsoft Windows.

См. примечания к выпуску клиента Chef Infra для получения последней информации об Ohai.

Автоматические атрибуты

Автоматический атрибут — это конкретная информация об узле, например, IP-адрес, имя хоста, список загруженных модулей ядра и т. д. Ohai обнаруживает автоматические атрибуты, а затем клиент Chef Infra использует их для обеспечения надлежащего обработки во время каждого выполнения клиента Chef Infra. Наиболее часто используемые автоматические атрибуты:

Атрибут Описание
node['platform'] Платформа, на которой работает узел. Этот атрибут помогает определить, какие поставщики будут использоваться.
node['platform_family'] Семейство платформ — это специфическая для Chef Infra группировка сходных платформ, где код кулинарных книг часто может использоваться совместно. Например, `rhel` включает Red Hat Linux, Oracle Linux, CentOS и несколько других платформ, практически идентичных Red Hat Linux.
node['platform_version'] Версия платформы. Этот атрибут помогает определить, какие поставщики будут использоваться.
node['ipaddress'] IP-адрес узла. Если у узла есть маршрут по умолчанию, это IPV4-адрес интерфейса. Если у узла нет маршрута по умолчанию, значение этого атрибута должно быть nil. IP-адрес маршрута по умолчанию является рекомендуемым значением по умолчанию.
node['macaddress'] MAC-адрес узла, определяемый тем же интерфейсом, который обнаруживает node['ipaddress'].
node['fqdn'] Полное доменное имя узла. Оно используется в качестве имени узла, если не установлено другое.
node['hostname'] Имя хоста узла.
node['domain'] Домен узла.
node['recipes'] Список рецептов, связанных с узлом (и являющихся частью списка выполнения узла).
node['roles'] Список ролей, связанных с узлом (и являющихся частью списка выполнения узла).
node['ohai_time'] Время последнего выполнения Ohai. Этот атрибут редко используется в рецептах, но он сохраняется на сервере Chef Infra и может быть доступен с помощью подкоманды knife status.

Получение списка автоматических атрибутов для узла

Ohai собирает список автоматических атрибутов в начале каждого выполнения клиента Chef Infra. Этот список будет различаться в разных организациях, типах серверов и платформах, на которых работают эти серверы. Все атрибуты, собранные Ohai, не могут быть изменены клиентом Chef Infra. Запустите команду ohai на системе, чтобы увидеть, какие автоматические атрибуты Ohai собрал для определенного узла.

Примечание

Атрибуты могут быть настроены в кулинарных книгах (файлах атрибутов и рецептах), ролях и средах. Кроме того, Ohai собирает данные атрибутов о каждом узле в начале выполнения клиента Chef Infra. Для получения дополнительной информации о том, как все эти атрибуты взаимодействуют, см. Атрибуты.

Список исключений для атрибутов

Предупреждение

При использовании настроек списка исключений для атрибутов любой атрибут, определенный в списке исключений, не будет сохранён на сервере Chef Infra, а любой атрибут, не определённый в списке исключений, будет сохранён. Каждый тип атрибутов должен быть исключён независимо от других типов атрибутов. Например, если blocked_automatic_attributes определяет атрибуты, которые не будут сохранены, но blocked_normal_attributes, blocked_default_attributes, и blocked_override_attributes не определены, то все обычные атрибуты, атрибуты по умолчанию и переопределённые атрибуты будут сохранены, а также автоматические атрибуты, которые не были специально исключены с помощью списка исключений.

Атрибуты, которые не следует сохранять узлом, могут быть исключены в файле client.rb. Список исключений — это массив ключей, которые указывают каждый атрибут, который необходимо отфильтровать.

Атрибуты исключаются по типу атрибута, и каждый тип атрибутов исключается независимо. Каждый тип атрибутов — automatic, default, normal, и override — может определять списки исключений, используя следующие настройки в файле client.rb:

Настройка Описание
blocked_automatic_attributes Массив, исключающий automatic атрибуты, предотвращая сохранение исключённых атрибутов. Например: ['network/interfaces/eth0']. Значение по умолчанию: nil, все атрибуты сохраняются. Если массив пуст, все атрибуты сохраняются.
blocked_default_attributes Массив, исключающий default атрибуты, предотвращая сохранение исключённых атрибутов. Например: ['filesystem/dev/disk0s2/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если массив пуст, все атрибуты сохраняются.
blocked_normal_attributes Массив, исключающий normal атрибуты, предотвращая сохранение исключённых атрибутов. Например: ['filesystem/dev/disk0s2/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если массив пуст, все атрибуты сохраняются.
blocked_override_attributes Массив, исключающий override атрибуты, предотвращая сохранение исключённых атрибутов. Например: ['map - autohome/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если массив пуст, все атрибуты сохраняются.

Исключение автоматических атрибутов Ohai

Рекомендуется использовать blocked_automatic_attributes для исключения атрибутов, заполненных инструментом сбора информации о системе Ohai. Ohai собирает большое количество атрибутов, которые могут занимать значительное пространство на сервере Chef Infra. Многие из этих атрибутов могут быть очень ценными, но другие можно исключить без ущерба для доступных в поиске данных. Обычные, атрибуты по умолчанию и переопределённые атрибуты обычно являются более важными атрибутами, используемыми в кулинарных книгах, и с большей вероятностью приведут к проблемам, если их исключить неправильно.

Например, данные автоматических атрибутов, подобные:

{
  "filesystem" => {
    "/dev/disk0s2" => {
      "size" => "10mb"
    },
    "map - autohome" => {
      "size" => "10mb"
    }
  },
  "network" => {
    "interfaces" => {
      "eth0" => {...},
      "eth1" => {...},
    }
  }
}

Для исключения атрибутов filesystem и сохранения остальных атрибутов, обновите файл client.rb:

blocked_automatic_attributes ['filesystem']

Когда определён список исключений, любой атрибут данного типа, не указанный в этом списке исключений, будет сохранён. Таким образом, исходя из предыдущего списка исключений для автоматических атрибутов, атрибуты filesystem и map - autohome не будут сохранены, а атрибуты network будут.

Для атрибутов, содержащих косые черты (/) в значении атрибута, таких как атрибут filesystem '/dev/diskos2', используйте массив. Например:

blocked_automatic_attributes [['filesystem', '/dev/diskos2']]

Список разрешённых атрибутов

Предупреждение

При использовании настроек списка разрешённых атрибутов будут сохранены только атрибуты, определённые в списке разрешённых атрибутов, а любые атрибуты, не определённые в нём, не будут сохранены. Каждый тип атрибутов разрешается независимо от других типов. Например, если automatic_attribute_allowlist определяет атрибуты для сохранения, но normal_attribute_allowlist, default_attribute_allowlist, и override_attribute_allowlist не определены, то все обычные атрибуты, атрибуты по умолчанию и переопределённые атрибуты сохраняются, а также автоматические атрибуты, которые были включены в список разрешённых.

Атрибуты, которые необходимо сохранить узлом, могут быть включены в список разрешённых атрибутов в файле client.rb. Список разрешённых атрибутов — это массив ключей, которые указывают каждый атрибут для сохранения.

Атрибуты разрешаются по типу атрибута, и каждый тип атрибутов разрешается независимо. Каждый тип атрибутов — automatic, default, normal, и override — может определять списки разрешённых атрибутов, используя следующие настройки в файле client.rb:

Настройка Описание
allowed_automatic_attributes Хэш, который разрешает список automatic атрибутов, предотвращая сохранение атрибутов, не включённых в список. Например: ['network/interfaces/eth0']. Значение по умолчанию: nil, все атрибуты сохраняются. Если хэш пустой, атрибуты не сохраняются.
allowed_default_attributes Хэш, который разрешает список default атрибутов, предотвращая сохранение атрибутов, не включённых в список. Например: ['filesystem/dev/disk0s2/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если хэш пустой, атрибуты не сохраняются.
allowed_normal_attributes Хэш, который разрешает список normal атрибутов, предотвращая сохранение атрибутов, не включённых в список. Например: ['filesystem/dev/disk0s2/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если хэш пустой, атрибуты не сохраняются.
allowed_override_attributes Хэш, который разрешает список override атрибутов, предотвращая сохранение атрибутов, не включённых в список. Например: ['map - autohome/size']. Значение по умолчанию: nil, все атрибуты сохраняются. Если хэш пустой, атрибуты не сохраняются.

Разрешение списка атрибутов Ohai (автоматические)

Рекомендуется использовать allowed_automatic_attributes для разрешения конкретных атрибутов, заполненных механизмом сбора информации Ohai. Ohai собирает большое количество атрибутов, которые могут занимать значительное место на сервере Chef Infra. Многие из этих атрибутов могут быть очень ценными, а другие можно пропустить без ущерба для данных, доступных в поиске. Обычно атрибуты нормальные, по умолчанию и переопределения намного важнее, используемые в кулинариях, и скорее всего вызовут проблемы, если их неправильно исключить из списка разрешённых.

Например, данные автоматических атрибутов, аналогичные:

{
  "filesystem" => {
    "/dev/disk0s2" => {
      "size" => "10mb"
    },
    "map - autohome" => {
      "size" => "10mb"
    }
  },
  "network" => {
    "interfaces" => {
      "eth0" => {...},
      "eth1" => {...},
    }
  }
}

Чтобы разрешить список network атрибутов и предотвратить сохранение других атрибутов, обновите файл client.rb:

allowed_automatic_attributes ['network/interfaces/']

Когда список разрешённых атрибутов определён, любой атрибут данного типа, не указанный в этом списке разрешённых атрибутов, не будет сохранён. Таким образом, исходя из предыдущего списка разрешённых атрибутов для автоматических атрибутов, атрибуты filesystem и map - autohome не будут сохранены, но атрибуты network будут.

Оставьте значение пустым, чтобы предотвратить сохранение всех атрибутов данного типа:

allowed_automatic_attributes []

Для атрибутов, содержащих слеши (/) в значении атрибута, таких как атрибут filesystem '/dev/diskos2', используйте массив. Например:

allowed_automatic_attributes [['filesystem', '/dev/diskos2']]

Плагины по умолчанию

В следующем списке показаны типы плагинов, которые входят в состав Ohai. Полный список см. в каталоге ohai/lib/ohai/plugins в версии Ohai, установленной на вашей системе:

Плагины общего назначения

azure.rb
c.rb
chef.rb
cloud.rb
command.rb
cpu.rb
digital_ocean.rb
dmi.rb
docker.rb
ec2.rb
elixir.rb
erlang.rb
eucalyptus.rb
filesystem.rb
freebsd
gce.rb
go.rb
groovy.rb
haskell.rb
hostname.rb
init_package.rb
java.rb
joyent.rb
kernel.rb
keys.rb
languages.rb
libvirt.rb
linode.rb
lua.rb
mono.rb
network.rb
nodejs.rb
ohai_time.rb
ohai.rb
memory.rb
network.rb
platform.rb
openstack.rb
os.rb
packages.rb
perl.rb
php.rb
platform.rb
powershell.rb
ps.rb
python.rb
rackspace.rb
root_group.rb
ruby.rb
rust.rb
scala.rb
scaleway.rb
shard.rb
shells.rb
softlayer.rb
ssh_host_key.rb
timezone.rb
uptime.rb
virtualbox.rb
vmware.rb
zpools.rb

Плагины, специфичные для платформы

aix
  kernel.rb
  memory.rb
  network.rb
  platform.rb
  uptime.rb
  virtualization.rb
bsd
 virtualization.rb
darwin
  cpu.rb
  filesystem.rb
  hardware.rb
  memory.rb
  network.rb
  platform.rb
  system_profiler.rb
  virtualization.rb
dragonflybsd
 cpu.rb
 memory.rb
 network.rb
 os.rb
 platform.rb
freebsd
  cpu.rb
  memory.rb
  network.rb
  os.rb
  platform.rb
linux
  block_device.rb
  cpu.rb
  filesystem.rb
  fips.rb
  hostnamectl.rb
  lsb.rb
  machineid.rb
  mdadm.rb
  memory.rb
  network.rb
  platform.rb
  sessions.rb
  virtualization.rb
netbsd
  cpu.rb
  memory.rb
  network.rb
  platform.rb
openbsd
  cpu.rb
  memory.rb
  network.rb
  platform.rb
solaris2
  cpu.rb
  dmi.rb
  filesystem.rb
  memory.rb
  network.rb
  platform.rb
  virtualization.rb
windows
  cpu.rb
  drivers.rb
  filesystem.rb
  fips.rb
  memory.rb
  network.rb
  platform.rb
  system_enclosure.rb
  virtualization.rb

Дополнительные плагины

Ohai поставляется с несколькими плагинами, которые считаются необязательными и могут быть включены в файле конфигурации client.rb.

  • :IPC - Информация о сегментах IPC SysV (Новая функция в Chef Infra Client 16)
  • :Interupts - Данные из /proc/interrupts и /proc/irq (Новая функция в Chef Infra Client 16)
  • :Lspci - Информация о устройствах PCI на Linux-хостах.
  • :Lsscsi - Информация о устройствах SCSI на Linux-хостах.
  • :Passwd - Информация об пользователях и группах на хостах, отличных от Windows. Этот плагин может привести к очень большим размерам узлов, если система подключается к Active Directory или LDAP.
  • :Sessions - Данные сессий из loginctl на Linux-хостах.
  • :Sysctl - Все значения sysctl на Linux-хостах.

Включение дополнительных плагинов

Дополнительные плагины могут быть включены в файле конфигурации client.rb:

ohai.optional_plugins = [
  :Sessions,
  :Lspci,
]

Примечание

Массив optional_plugins в конфигурации Ohai должен содержать массив имён плагинов в виде символов, а не строк.

Настройки Ohai в client.rb

Настройки конфигурации Ohai можно добавить в файл client.rb.

ohai.directory

Каталог, в котором находятся плагины Ohai.

ohai.disabled_plugins

Массив плагинов Ohai, которые нужно отключить на узле. Список плагинов, включённых в Ohai, можно найти в источнике ohai/lib/ohai/plugins. Например, отключение одного плагина:

ohai.disabled_plugins = [
  :MyPlugin
]

или отключение нескольких плагинов:

ohai.disabled_plugins = [
  :MyPlugin,
  :MyPlugin2,
  :MyPlugin3
]

При отключении плагина в журнале Chef Infra Client будут записи, похожие на:

[2014-06-13T23:49:12+00:00] DEBUG: Skipping disabled plugin MyPlugin
ohai.hints_path

Путь к файлу, содержащему подсказки для Ohai.

ohai.log_level

Уровень ведения журнала, который будет сохранён в файле журнала.

ohai.log_location

Расположение файла журнала.

ohai.plugin_path

Массив путей, в которых расположены плагины Ohai. Значение по умолчанию: [<CHEF_GEM_PATH>/ohai-9.9.9/lib/ohai/plugins]. При добавлении пользовательских плагинов Ohai пути необходимо добавить в массив. Например, один плагин:

ohai.plugin_path << '/etc/chef/ohai_plugins'

и для нескольких плагинов:

ohai.plugin_path += [
  '/etc/chef/ohai_plugins',
  '/path/to/other/plugins'
  ]

Примечание

Утилита Ohai игнорирует настройки в файле client.rb, когда Ohai выполняется независимо от Chef Infra Client.

Пользовательские плагины

Для сбора дополнительной информации с систем по мере необходимости можно написать пользовательские плагины Ohai. См. документацию Пользовательские плагины Ohai для получения дополнительной информации.

Подсказки

Подсказки Ohai используются для указания Ohai о системе, на которой он выполняется, что он не смог бы обнаружить самостоятельно. Подсказка Ohai существует, если в каталоге подсказок существует файл JSON с тем же именем, что и подсказка. Например, вызов hint?('antarctica') в плагине Ohai вернёт пустой хэш, если файл antarctica.json существует в каталоге подсказок, и вернёт null, если файл не существует.

Если файл подсказки содержит JSON-контент, он будет возвращён в виде хэша из вызова hint?.

{
  "snow": true,
  "penguins": "many"
}
antarctica_hint = hint?('antarctica')
if antarctica_hint['snow']
  "There are #{antarctica_hint['penguins']} penguins here."
else
  'There is no snow here, and penguins like snow.'
end

Файлы подсказок по умолчанию расположены в каталоге /etc/chef/ohai/hints/. Используйте настройку Ohai.config[:hints_path] в файле конфигурации client.rb для настройки этого расположения.

Ресурс кулинарии Ohai

Chef Infra Client включает ресурс ohai, который позволяет перезагрузить данные Ohai на узле. Это позволяет рецептам или ресурсам, которые изменяют системные атрибуты (например, рецепт, добавляющий пользователя), ссылаться на эти атрибуты позже во время выполнения Chef Infra Client. Подробную информацию об использовании см. в ресурсе ohai.

Утилита Ohai командной строки

Ohai можно запустить в командной строке вне выполнения Chef Infra Client. Подробную информацию см. в разделе Ohai (утилита).

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/ohai.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API