О инструменте Ohai
Ohai — это инструмент для сбора данных о конфигурации системы, которые затем предоставляются клиенту Chef Infra для использования в кулинарных книгах. Клиент Chef Infra запускает Ohai в начале каждого выполнения Chef Infra для определения состояния системы. Атрибуты, которые собирает Ohai, называются automatic attributes. Клиент Chef Infra использует эти атрибуты, чтобы убедиться, что узлы находятся в желаемом состоянии после каждого выполнения конфигурации.
Типы атрибутов, которые собирает Ohai, включают, но не ограничиваются:
- Операционная система
- Сеть
- Память
- Диск
- Процессор
- Ядро
- Имена хостов
- Полные доменные имена
- Виртуализация
- Метаданные поставщика облачных услуг
Ohai включает обязательные и необязательные плагины для обнаружения общей информации о конфигурации. Ohai имеет модель плагинов и язык для написания пользовательских плагинов для сбора дополнительной информации о состоянии системы.
Ohai собирает данные для многих платформ, включая AIX, macOS, Linux, FreeBSD, Solaris и любые операционные системы Microsoft Windows.
См. примечания к выпуску Chef Infra Client для получения последней информации об Ohai.
Автоматические атрибуты
Примечание
Автоматический атрибут — это определенная деталь об узле, например, IP-адрес, имя хоста, список загруженных модулей ядра и т. д. Автоматические атрибуты обнаруживаются Ohai и затем используются клиентом Chef Infra для обеспечения их правильной обработки во время каждого выполнения Chef Infra Client. Наиболее часто используемые автоматические атрибуты:
| Атрибут | Описание |
|---|---|
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 Client. Этот список будет различаться в зависимости от организации, типа сервера и платформы, на которой работают эти серверы. Все атрибуты, собранные 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.
-
:Grub2- Информация из загрузчика Grub2 для Linux -
:IPC- Информация о разделяемой памяти SysV IPC (Новое в 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