О инструменте Ohai
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 собрал для конкретного узла.
Примечание
Список исключений атрибутов
Предупреждение
При использовании настроек списка исключений атрибутов, любой атрибут, определённый в списке исключений, не будет сохранён на сервере 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,
]
Примечание
Настройки 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 существует в каталоге подсказок, и вернёт nil, если файл не существует.
Если файл подсказки содержит содержимое 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/