Spec-Zone.ru › Chef 18

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

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

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 для получения последней информации об Ohai.

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

Примечание

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

Автоматический атрибут — это определенный атрибут узла, например, 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.

  • :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,
]

Примечание

Массив 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/

Spec-Zone.ru

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