Клиент Chef Infra (исполняемый файл)
Chef Infra Client — это агент, который выполняется локально на каждом узле, управляемом сервером Chef Infra Server. При запуске Chef Infra Client выполняет все необходимые шаги для приведения узла в ожидаемое состояние, включая:
- Регистрацию и аутентификацию узла с сервером Chef Infra Server
- Синхронизацию кулинарных книг с сервера Chef Infra Server на узел
- Компиляцию коллекции ресурсов путем загрузки каждой необходимой кулинарной книги, включая рецепты, атрибуты и все другие зависимости
- Выполнение необходимых действий для настройки узла на основе рецептов и атрибутов
- Отчет о сводной информации о выполнении в Chef Automate
Примечание
Исполняемый файл Chef Infra Client запускается как утилита командной строки.
Примечание
Файл client.rb определяет конфигурацию Chef Infra Client на узле и обладает следующими характеристиками:
- Этот файл загружается каждый раз при запуске исполняемого файла chef-client.
- В Microsoft Windows по умолчанию расположение этого файла —
C:\chef\client.rb. На всех других системах по умолчанию расположение этого файла —/etc/chef/client.rb. - Используйте параметр
--configиз командной строки для переопределения расположения файла конфигурации по умолчанию. - Этот файл не создается по умолчанию
Параметры
Эта команда имеет следующий синтаксис:
chef-client OPTION VALUE OPTION VALUE ...
Эта команда имеет следующие параметры:
-
-A,--fatal-windows-admin-check Приводит к завершению работы Chef Infra Client с ошибкой, если у Chef Infra Client нет административных привилегий в Microsoft Windows.
-
-c CONFIG,--config CONFIG Файл конфигурации для использования.
--config-option OPTION-
Переопределяет один параметр конфигурации. Можно переопределить несколько параметров конфигурации, добавив другой
--config-option OPTION.property :db_password, String, sensitive: true --chef-zero-host HOSTХост, на котором запускается chef-zero.
--chef-zero-port PORT-
Порт, на котором прослушивает chef-zero. Если порт не указан — ни индивидуально, ни в виде диапазона портов, ни из настройки
chef_zero.portв файле client.rb — Chef Infra Client будет сканировать порты в диапазоне от 8889 до 9999 и выберет первый доступный порт.Изменено в Chef Client 12.0 для поддержки указания диапазона портов.
-
-d SECONDS,--daemonize SECONDS -
Запустить исполняемый файл как демона. Используйте
SECONDSдля указания количества секунд, которые нужно подождать до первого запуска демонизированного Chef Infra Client.SECONDSустановлено по умолчанию в0.Этот параметр доступен только на машинах, работающих в средах UNIX или Linux. Для машин под управлением Microsoft Windows, которым требуется аналогичная функциональность, используйте рецепт
chef-client::serviceв кулинарной книгеchef-client: https://supermarket.chef.io/cookbooks/chef-client. Это установит службу Chef Infra Client под Microsoft Windows с помощью обёртки Windows Service. --delete-entire-chef-repoЭтот параметр удаляет весь репозиторий. Этот параметр можно использовать только при запуске Chef Infra Client в локальном режиме (
--local-mode). Для этого необходимо указать--recipe-url.--disable-configИспользуйте для запуска Chef Infra Client с использованием стандартных настроек. Это предотвратит использование файла конфигурации по умолчанию. Это значение следует использовать только для тестирования и никогда не использовать в рабочей среде.
-
-E ENVIRONMENT_NAME,--environment ENVIRONMENT_NAME Имя среды.
-
-f,--[no-]fork -
Запускает выполнение Chef Infra Client в отдельном процессе с выделенной памятью ОЗУ. После завершения выполнения Chef Infra Client память возвращается основному процессу. Это помогает гарантировать, что Chef Infra Client использует стабильный объём ОЗУ со временем, потому что основной процесс не выполняет рецепты. Это также помогает предотвратить утечки памяти, такие как те, что могут быть вызваны кодом, содержащимся в плохо спроектированной кулинарной книге. Используйте
--no-forkдля отключения запуска Chef Infra Client в дочернем процессе. Значение по умолчанию:--fork.Изменено в Chef Client 12.0, запущенные без разделения интервалы больше не допускаются.
-
-F FORMAT,--format FORMAT Формат вывода:
doc(по умолчанию) илиmin.
- Используйте
docдля отображения прогресса выполнения Chef Infra Client с использованием полных строк, отображающих сводку обновлений по мере их возникновения. - Используйте
minдля отображения прогресса выполнения Chef Infra Client с использованием отдельных символов.
Сводка обновлений печатается в конце выполнения Chef Infra Client. Точка (.) печатается для событий, у которых нет осмысленной информации о состоянии, например, загрузка файла или синхронизация кулинарной книги. Для ресурсов печатается точка (.) при обновлении, S печатается, когда ресурс пропущен not_if или only_if, а U печатается, когда ресурс обновлён.
Другие форматы доступны, когда эти форматеры настроены в файле client.rb с помощью параметра add_formatter.
--force-formatterПоказать вывод форматировщика вместо вывода логгера.
--force-loggerПоказать вывод логгера вместо вывода форматировщика.
-
-g GROUP,--group GROUP Имя группы, владеющей процессом. Это требуется при запуске любого исполняемого файла в качестве демона.
-
-h,--help Показать справку по команде.
-
-i SECONDS,--interval SECONDS Частота (в секундах), с которой выполняется Chef Infra Client. При выполнении Chef Infra Client с интервалами, применяйте значения
--splayи--intervalперед запуском Chef Infra Client. Значение по умолчанию:1800.-
-j PATH,--json-attributes PATH -
Путь к файлу, содержащему JSON-данные. Используется для настройки первого запуска клиента. Атрибуты будут сохраняться на сервере Chef Infra для всех последующих запусков с опцией
-j.Списки задач (Run-lists)
Используйте эту опцию для определения объекта
run_list. Например, JSON-файл, подобный:"run_list": [ "recipe[base]", "recipe[foo]", "recipe[bar]", "role[webserver]" ],может быть использован, выполняя
chef-client -j path/to/file.json.В некоторых ситуациях эта опция может быть использована для обновления атрибутов
normal.Среды (Environments)
Используйте эту опцию для установки значения
chef_environmentдля узла.Примечание
Любая среда, указанная дляchef_environmentв JSON-файле, будет иметь приоритет перед средой, указанной опцией--environment, когда обе опции являются частью одной команды.Например, выполните следующее:
chef-client -j /path/to/file.jsonгде
/path/to/file.jsonподобен:{ "chef_environment": "pre-production" }Это установит среду для узла на
pre-production.Все атрибуты являются обычными атрибутами
Любой другой тип атрибутов, содержащихся в этом JSON-файле, будет обрабатываться как атрибут
normal. Установка атрибутов на других уровнях приоритета невозможна. Например, попытка обновить атрибутыoverrideс использованием опции-j:{ "name": "dev-99", "description": "Install some stuff", "override_attributes": { "apptastic": { "enable_apptastic": "false", "apptastic_tier_name": "dev-99.bomb.com" } } }приведет к объекту узла, подобному:
{ "name": "maybe-dev-99", "normal": { "name": "dev-99", "description": "Install some stuff", "override_attributes": { "apptastic": { "enable_apptastic": "false", "apptastic_tier_name": "dev-99.bomb.com" } } } }Примечание
Это установило атрибутnormalсо значениемnode['override_attributes']['apptastic'].Укажите политику (Specify a policy)
Используйте эту опцию для использования файлов политики, указав JSON-файл, содержащий следующие настройки:
Настройка Описание policy_groupИмя группы политик, которая существует на сервере Chef Infra. policy_nameИмя политики, определенное настройкой nameв файле Policyfile.rb.Например:
{ "policy_name": "appserver", "policy_group": "staging" } -
-k KEY_FILE,--client_key KEY_FILE Расположение файла, содержащего ключ клиента. Значение по умолчанию:
/etc/chef/client.pem.-
-K KEY_FILE,--validation_key KEY_FILE Расположение файла, содержащего ключ, используемый при регистрации Chef Infra Client на сервере Chef Infra. Ключ проверки подписывается с использованием
validation_client_nameдля аутентификации. Значение по умолчанию:/etc/chef/validation.pem.-
-l LEVEL,--log_level LEVEL Уровень ведения журнала, который будет храниться в файле журнала. Возможные уровни:
auto(по умолчанию),debug,error,fatal,info,trace, илиwarn. Значение по умолчанию:warn(если терминал доступен) илиinfo(если терминал недоступен).-
-L LOGLOCATION,--logfile LOGLOCATION Расположение файла журнала. Рекомендуется при запуске любого исполняемого файла в качестве демона. Значение по умолчанию:
STDOUT.--lockfile LOCATIONИспользуется для указания расположения файла блокировки, который предотвращает одновременное слияние нескольких процессов Chef Infra Client.
--minimal-ohaiВыполнить плагины Ohai для определения имени и выбора ресурса/провайдера, и не запускать другие плагины Ohai. Установите в
trueво время интеграционных тестов для ускорения циклов тестирования.--[no-]colorОтобразить цветной вывод. Значение по умолчанию:
--color.--[no-]fipsРазрешает OpenSSL принудительно применять FIPS-валидированную безопасность во время выполнения Chef Infra Client.
--[no-]skip-cookbook-syncИспользовать кэшированные кулинарные книги без перезаписи локальных различий с сервера. Используйте с осторожностью. Полезно для исправления набора кулинарных книг на машине во время итераций при разработке.
--[no-]listenЗапустить chef-zero в бессокетированном режиме. Это поведение по умолчанию в Chef Client 13.1 и выше.
-
-n NAME,--named-run-list NAME Список задач (run-list), связанный с файлом политики.
-
-N NODE_NAME,--node-name NODE_NAME Уникальный идентификатор узла.
-
-o RUN_LIST_ITEM,--override-runlist RUN_LIST_ITEM Заменить текущий список задач (run-list) на указанные элементы. Эта опция не очистит список кулинарных книг (и связанных файлов), кэшированных на узле. Эта опция не сохранит данные узла в конце выполнения клиента.
--onceВыполнить только один запуск Chef Infra Client и отменить опции
intervalиsplay.-
-P PID_FILE,--pid PID_FILE Расположение, в котором сохраняется идентификатор процесса (PID). Исполняемый файл, запущенный как демон, записывает PID в указанный файл. Значение по умолчанию:
/tmp/name-of-executable.pid.--profile-ruby-
Используйте опцию
--profile-rubyдля вывода графика профилирования (большого размера) в/var/chef/cache/graph_profile.out. Используйте графический вывод для выявления и устранения узких мест производительности при выполнении Chef Infra Client. Эта опция:- Генерирует большое количество данных о выполнении Chef Infra Client.
- Зависит от драгоценного камня
ruby-prof, который входит в состав Chef и Chef Workstation. - Увеличивает время, необходимое для завершения выполнения Chef Infra Client.
- Не должна использоваться в рабочей среде.
-
-r RUN_LIST_ITEM,--runlist RUN_LIST_ITEM Постоянно заменить текущий список задач (run-list) на указанные элементы списка задач (run-list).
-
-R,--enable-reporting Включить сбор отчетов, который выполняет сбор данных во время выполнения Chef Infra Client.
RECIPE_FILEПуть к рецепту. Например, если файл рецепта находится в текущей директории, используйте
recipe_file.rb. Обычно используется с опцией--local-mode.--recipe-url=RECIPE_URLРасположение рецепта, если он находится по URL. Используйте эту опцию только при запуске Chef Infra Client с опцией
--local-mode.--run-lock-timeout SECONDSВремя (в секундах) ожидания удаления файла блокировки Chef Infra Client. Значение по умолчанию: не установлено (неопределенное). Установите значение
0для того, чтобы второй Chef Infra Client завершился немедленно.-
-s SECONDS,--splay SECONDS -
Случайное число от нуля до
splay, которое добавляется кinterval. Использование splay помогает сбалансировать нагрузку на сервер Chef Infra, гарантируя, что много запусков Chef Infra Client не происходят в один и тот же интервал. При выполнении Chef Infra Client с интервалами, применяйте значения--splayи--intervalперед запуском Chef Infra Client.Изменено в Chef Client 12.0, чтобы применяться до запуска Chef Client.
-
-S CHEF_SERVER_URL,--server CHEF_SERVER_URL URL сервера Chef Infra.
-
-u USER,--user USER Пользователь, владеющий процессом. Требуется при запуске любого исполняемого файла в качестве демона.
-
-v,--version Версия Chef Infra Client.
-
-W,--why-run Выполнить исполняемый файл в режиме why-run. Это тип запуска Chef Infra Client, который выполняет все, кроме изменения системы. Используйте режим why-run для понимания того, почему Chef Infra Client принимает решения, и для получения дополнительной информации о текущем и предполагаемом состоянии системы.
-
-z,--local-mode Запустить Chef Infra Client в локальном режиме. Это позволяет всем командам, работающим с сервером Chef Infra, работать и с локальным chef-repo.
Файл блокировки Chef Infra Client
Chef Infra Client использует файл блокировки для обеспечения того, что только один запуск Chef Infra Client происходит в данный момент. Файл блокировки создаётся в начале запуска Chef Infra Client и удаляется в конце. Новый запуск Chef Infra Client проверяет наличие файла блокировки и, если он присутствует, ждёт его удаления. Расположение файла блокировки может различаться в зависимости от платформы.
- Используйте настройку
lockfileв файле client.rb для указания расположений файла блокировки, отличных от стандартных. (Стандартное расположение обычно зависит от платформы и рекомендуется.) - Используйте настройку
run_lock_timeoutв файле client.rb для указания времени (в секундах) ожидания удаления файла блокировки, связанного с выполняемым запуском Chef Infra Client.
Запуск в локальном режиме
Локальный режим — это способ запуска Chef Infra Client с локальным chef-repo, как если бы он работал с сервером Chef Infra. Локальный режим полагается на chef-zero, который действует как очень лёгкая инстанция сервера Chef Infra. chef-zero считывает и записывает в chef_repo_path, что позволяет использовать все команды, которые обычно работают с сервером Chef Infra, с локальным chef-repo.
Локальный режим не требует файла конфигурации, вместо этого он будет искать директорию с именем /cookbooks и установит chef_repo_path как директорию над ней. (Локальный режим учтёт настройки в файле конфигурации, если они есть.) Если файл client.rb не найден и не указан файл конфигурации, локальный режим будет искать файл config.rb.
Локальный режим по умолчанию будет хранить временные и кешированные файлы в каталоге <chef_repo_path>/.cache. Это позволяет обычному пользователю запускать Chef Infra Client в локальном режиме без необходимости прав root.
О режиме why-run
Режим why-run позволяет просмотреть, как бы сконфигурировал Chef Infra Client, если бы был запущен настоящий Chef Infra Client. Этот подход аналогичен концепции «бездействия» (или «no-op»): определить, что должно быть сделано, но не делать ничего до тех пор, пока это не будет сделано правильно. Такой подход к управлению конфигурацией помогает определить, где в системе существует сложность, где могут находиться взаимозависимости и проверить, что все будет сконфигурировано желаемым образом.
При включенном режиме why-run выполняется запуск Chef Infra Client, который делает всё до момента, когда обычно происходит конфигурация. Это включает получение данных конфигурации, аутентификацию на Chef Infra Server, перестроение объекта узла, расширение списка выполнения, получение необходимых файлов кулинарной книги, сброс атрибутов узла, идентификацию ресурсов и построение коллекции ресурсов, но не включает сопоставление каждого ресурса с поставщиком или конфигурацию какой-либо части системы.
Примечание
При запуске Chef Infra Client в режиме why-run делаются определённые предположения:
- Если ресурс service не может найти соответствующую команду для проверки состояния службы, режим why-run предположит, что команда была установлена предыдущим ресурсом, и что служба не запущена.
- Для свойств
not_ifиonly_ifрежим why-run будет предполагать, что это команды или блоки, которые безопасно запускать. Эти условия не предназначены для изменения состояния системы, а скорее для облегчения идемпотентности самого ресурса. Тем не менее, возможно, что эти атрибуты используются таким образом, что изменяют состояние системы. - Чем ближе текущее состояние системы к желаемому состоянию, тем полезнее будет режим why-run. Например, если весь список выполнения запускается на новой системе, этот список может быть не совсем правильным с первого раза, но также этот список выведет больше выходных данных, чем меньший список выполнения.
Например, ресурс service может использоваться для запуска службы. Если действие :start, то служба запустится, если она не запущена, и ничего не сделает, если она запущена. Если служба установлена из пакета, то Chef Infra Client не может проверить, запущена ли служба, пока пакет не будет установлен. В этом случае режим why-run укажет, что Chef Infra Client сделает со службой после установки пакета. Это важно, потому что действия службы часто вызывают уведомления другим ресурсам, поэтому важно знать, что эти уведомления срабатывают правильно.
О chef-zero
chef-zero — это очень лёгкий Chef Infra Server, работающий в оперативной памяти на локальной машине. Это позволяет запускать Chef Infra Client на chef-repo так, как если бы он работал на Chef Infra Server. chef-zero изначально был автономным инструментом; он активируется внутри Chef Infra Client с помощью параметра --local-mode. chef-zero очень полезен для быстрого тестирования и проверки поведения Chef Infra Client, кулинарных книг, рецептов и списков выполнения перед загрузкой этих данных на фактический Chef Infra Server.
Примечание
Изменено в Chef Client 12.8, теперь chef-zero поддерживает все конечные точки API Chef Server версии 12, за исключением /universe.
Использование зашифрованных пакетов данных
Пакеты данных хранят глобальные переменные в формате JSON. Пакеты данных индексируются для поиска и могут загружаться кулинарной книгой или использоваться при поиске.
Создание зашифрованного пакета данных для использования с локальным режимом Chef Infra Client
Чтобы сгенерировать элемент зашифрованного пакета данных в файле JSON для использования при запуске Chef Infra Client в локальном режиме (через параметр --local-mode), введите:
knife data bag from file my_data_bag /path/to/data_bag_item.json -z --secret-file /path/to/encrypted_data_bag_secret
это создаст зашифрованный файл JSON в:
data_bags/my_data_bag/data_bag_item.json
Запуск в режиме FIPS
Федеральные стандарты обработки информации (FIPS) — это стандарт компьютерной безопасности правительства США, который определяет требования к криптографии. Текущая версия стандарта — FIPS 140-2. Chef Infra Client можно настроить таким образом, чтобы OpenSSL обеспечивал проверку безопасности FIPS во время запуска Chef Infra Client. Это отключит криптографию, которая явно запрещена в программном обеспечении с проверкой FIPS, включая определённые шифры и алгоритмы хеширования. Любая попытка использовать запрещённую криптографию приведёт к сбою Chef Infra Client во время запуска.
Примечание
Chef использует хеши MD5 для уникальной идентификации файлов, хранящихся на Chef Infra Server. MD5 используется только для генерации уникального идентификатора хеша и не используется для каких-либо криптографических целей.
Примечания по FIPS:
- Может быть включен для узлов, работающих на платформах Microsoft Windows и Enterprise Linux
- Должен быть включен только для сред, требующих соответствия стандарту FIPS 140-2
Загрузка узла с использованием FIPS
knife bootstrap 192.0.2.0 -P vanilla -x root -r 'recipe[apt],recipe[xfs],recipe[vim]' --fips
что показывает что-то подобное:
OpenSSL FIPS 140 mode enabled
...
192.0.2.0 Chef Infra Client finished, 12/12 resources updated in 78.942455583 seconds
Запуск в виде службы
Chef Infra Client можно запускать в виде демона. Используйте кулинарную книгу Chef Infra Client для настройки Chef Infra Client в качестве демона. Добавьте рецепт default в список выполнения узла, а затем используйте атрибуты в этой кулинарной книге для настройки поведения Chef Infra Client. Более подробную информацию об этих параметрах конфигурации см. в репозитории кулинарной книги Chef Infra Client на github.
При запуске Chef Infra Client в виде демона могут быть использованы следующие сигналы:
HUPИспользуется для переконфигурации Chef Infra Client.
INTИспользуется для немедленного завершения без ожидания завершения текущего запуска Chef Infra Client.
QUITИспользуется для вывода трассировки стека и продолжения работы.
TERMИспользуется для завершения, но ожидания завершения текущего запуска Chef Infra Client, а затем выхода.
USR1Используется для пробуждения спящего Chef Infra Client и запуска схождения узла.
В Microsoft Windows оба сигнала HUP и QUIT не поддерживаются.
Запуск с повышенными правами
Chef Infra Client может потребоваться запускать с повышенными правами для корректного выполнения рецепта. В UNIX-подобных операционных системах это можно сделать, запустив команду от имени root. В Microsoft Windows это можно сделать, запустив командную строку от имени администратора.
Linux
В Linux иногда возникает следующая ошибка, когда права, используемые для запуска Chef Infra Client, неверны:
chef-client
[Tue, 29 Nov 2015 19:46:17 -0800] INFO: *** Chef 12.X.X ***
[Tue, 29 Nov 2015 19:46:18 -0800] WARN: Failed to read the private key /etc/chef/client.pem: #<Errno::EACCES: Permission denied - /etc/chef/client.pem>
Это можно исправить, запустив команду от имени root. Существует несколько способов сделать это:
Войдите как root, а затем запустите Chef Infra Client
-
Используйте
suдля перехода в учетную запись root, а затем запустите Chef Infra Client. Например:suа затем:
chef-client -
Используйте утилиту sudo
sudo chef-client Предоставьте пользователю доступ для чтения
/etc/chefи также для файлов, к которым обращается Chef Infra Client. Это требует привилегий суперпользователя и, следовательно, не является рекомендуемым подходом.
Windows
В Microsoft Windows запуск без повышенных привилегий (когда они необходимы) — это проблема, которая проходит незаметно. Будет казаться, что Chef Infra Client успешно завершил свой запуск, но изменения не будут внесены. В этом случае выполните одно из следующих действий для запуска Chef Infra Client от имени администратора:
Войдите в учетную запись администратора. (Это не то же самое, что учетная запись в группе администраторов.)
-
Запустите процесс Chef Infra Client от имени администратора, будучи авторизованным в другой учетной записи. Выполните следующую команду:
runas /user:Administrator "cmd /C chef-client"Это запросит пароль учетной записи администратора.
Откройте командную строку, щелкнув правой кнопкой мыши по приложению командной строки и выбрав Запуск от имени администратора. После открытия окна командной строки можно запустить Chef Infra Client от имени администратора.
Запуск как пользователь, не являющийся root
В крупных распределённых организациях возможность изменения конфигурации систем иногда распределена между командами, часто с разным уровнем доступа к этим системам. Например, основные приложения могут быть развернуты на системах центральной командой по развертыванию серверов, а затем разработчики в разных командах создают инструменты для поддержки конкретных приложений. В такой ситуации разработчику требуется ограниченный доступ к машинам и необходимо выполнять только операции, необходимые для развертывания инструментов для конкретного приложения.
По умолчанию Chef Infra Client предполагает запуск от имени пользователя root. Это предоставляет Chef Infra Client максимальную гибкость при управлении состоянием любого объекта. Однако Chef Infra Client можно запустить от имени пользователя, не являющегося root — т. е. «запуск как пользователя с ограниченными системными привилегиями», что может быть полезно, когда объекты на системе доступны другим пользовательским учётным записям.
Когда Chef Infra Client запускается как пользователь, не являющийся root, Chef Infra Client может выполнить любое действие, разрешенное этому пользователю, если это действие не требует и повышенных привилегий (например, sudo или pbrun). Попытки управления любым объектом, требующим повышенных привилегий, приведут к ошибке. Например, при запуске Chef Infra Client как пользователя, не являющегося root, который не может создавать или изменять пользователей, ресурс user не будет работать.
Настройка пути кеша
Чтобы запустить Chef Infra Client в режиме, отличном от root, добавьте настройку file_cache_path в файл client.rb для узла, который будет выполняться пользователем, не являющимся root. Установите значение file_cache_path в домашний каталог пользователя, запускающего Chef Infra Client. Например:
file_cache_path '~/.chef/cache'
или:
file_cache_path File.join(File.expand_path('~'), '.chef', 'cache')
Примечание
--local-mode, значение по умолчанию для file_cache_path равно ~/.chef/local-mode-cache.Команды с повышенными привилегиями
Еще один пример запуска Chef Infra Client пользователем, не являющимся root, включает использование ресурсов для передачи команд sudo в качестве атрибута ресурса. Например, ресурс service использует ряд атрибутов _command (например, start_command, stop_command, и так далее), ресурсы, основанные на package, используют атрибут options, а ресурсы, основанные на script, используют атрибут code.
Команда может быть выполнена с повышенными привилегиями, аналогично следующему:
service 'apache2' do
start_command 'sudo /etc/init.d/apache2 start'
action :start
end
Этот подход может хорошо работать в отдельных случаях. Сложность этого подхода часто связана с управлением размером файла /etc/sudoers.
Запуск на IBM AIX
Теперь Chef Infra Client может использоваться для настройки узлов, работающих на платформе AIX, версий 7.1 (TL5 SP2 или выше, рекомендуется) и 7.2. Ресурс service поддерживает запуск, остановку и перезапуск сервисов, управляемых System Resource Controller (SRC), а также управление всеми состояниями сервисов с системами инициализации на основе BSD.
Системные требования
Chef Infra Client имеет те же системные требования на платформе AIX, что и на любой другой платформе, с учетом следующих замечаний:
- Расширьте файловую систему на платформе AIX с помощью
chfsили передав флаг-Xкомандеinstallpдля автоматического расширения логического раздела (LPAR) - На логическом разделе (LPAR) должен быть установлен набор символов EN_US (UTF-8) перед установкой Chef Infra Client
Установка Chef Infra Client на платформе AIX
Chef Infra Client распространяется в формате двоичного файла Backup File Format (BFF) и устанавливается на платформе AIX с помощью следующей команды, выполняемой пользователем root:
# installp -aYgd chef-12.0.0-1.powerpc.bff all
Увеличение системных лимитов процессов
Предустановленные системные лимиты для максимального размера памяти процесса (RSS) и количества открытых файлов обычно слишком низки для запуска Chef Infra Client на логическом разделе (LPAR). Если системные лимиты процессов слишком низки, Chef Infra Client не сможет создавать потоки. Чтобы увеличить системные лимиты процессов:
Проверьте, не были ли системные лимиты процессов уже увеличены.
-
Если они не были увеличены, выполните следующие команды от имени пользователя root:
chsec -f /etc/security/limits -s default -a "rss=-1"а затем:
chsec -f /etc/security/limits -s default -a "data=-1"а затем:
chsec -f /etc/security/limits -s default -a "nofiles=50000"Примечание
Предшествующие команды могут быть выполнены от имени пользователя root, вместо default. Например:
chsec -f /etc/security/limits -s root_user -a "rss=-1" Перезагрузите логический раздел (LPAR), чтобы применить обновленные системные лимиты процессов.
Если системные лимиты процессов слишком низки, возвращается ошибка, похожая на:
Error Syncing Cookbooks:
==================================================================
Unexpected Error:
-----------------
ThreadError: can't create Thread: Resource temporarily unavailable
Установка набора символов UTF-8
Chef Infra Client использует набор символов EN_US (UTF-8). По умолчанию базовая операционная система AIX не включает набор символов EN_US (UTF-8), и его необходимо установить перед установкой Chef Infra Client. Набор символов EN_US (UTF-8) можно установить с первого диска носителя AIX или скопировать его из /installp/ppc/*EN_US* в местоположение на логическом разделе (LPAR). В этом разделе предполагается, что это местоположение /tmp/rte.
Используйте smit для установки набора символов EN_US (UTF-8). Это гарантирует, что для всех рабочих разделов (WPAR) также установлен набор символов UTF-8.
Не забудьте указать INPUT device/directory на /tmp/rte при установке не с компакт-диска.
-
В командной строке root введите:
# smit langБудет выведено сообщение, подобное следующему:
Manage Language Environment Move cursor to desired item and press Enter. Change/Show Primary Language Environment Add Additional Language Environments Remove Language Environments Change/Show Language Hierarchy Set User Languages Change/Show Applications for a Language Convert System Messages and Flat Files F1=Help F2=Refresh F3=Cancel F8=Image F9=Shell F10=Exit Enter=Do -
Выберите
Add Additional Language Environmentsи нажмитеEnter. Будет выведено сообщение, подобное следующему:Add Additional Language Environments Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] CULTURAL convention to install + LANGUAGE translation to install + INPUT device/directory for software [/dev/cd0] + EXTEND file systems if space needed? yes + WPAR Management Perform Operation in Global Environment yes + Perform Operation on Detached WPARs no + Detached WPAR Names [_all_wpars] + Remount Installation Device in WPARs yes + Alternate WPAR Installation Device [] F1=Help F2=Refresh F3=Cancel F4=List F5=Reset F6=Command F7=Edit F8=Image F9=Shell F10=Exit Enter=Do Перемещайте курсор по первым двум пунктам —
CULTURAL convention to installиLANGUAGE translation to install— и используйтеF4, чтобы переместиться по списку до тех пор, пока не будет выбранUTF-8 English (United States) [EN_US]. (EN_US написано заглавными буквами!)Нажмите
Enter, чтобы применить и установить языковой набор.
Поставщики
Ресурс service имеет следующие поставщики для поддержки платформы AIX:
| Полное имя | Короткое имя | Примечания |
|---|---|---|
Chef::Provider::Service::Aix |
service |
Поставщик, используемый с платформами AIX. Используйте короткое имя service, чтобы запускать, останавливать и перезапускать службы с помощью System Resource Controller (SRC). |
Chef::Provider::Service::AixInit |
service |
Поставщик, используемый для управления службами BSD-based init на AIX. |
Включение службы на AIX с помощью команды mkitab
Ресурс service не поддерживает использование действий :enable и :disable с ресурсами, управляемыми с помощью System Resource Controller (SRC). Это связано с тем, что System Resource Controller (SRC) не имеет стандартного механизма для включения и отключения служб при загрузке системы.
Один из подходов для включения или отключения служб, управляемых System Resource Controller (SRC), — использовать ресурс execute для вызова mkitab, а затем использовать эту команду для включения или отключения службы.
Следующий пример демонстрирует установку службы:
execute "install #{node['chef_client']['svc_name']} in SRC" do
command "mkssys -s #{node['chef_client']['svc_name']} -p #{node['chef_client']['bin']} -u root
-S
-n 15
-f 9
-o #{node['chef_client']['log_dir']}/client.log
-e #{node['chef_client']['log_dir']}/client.log -a '
-i #{node['chef_client']['interval']} -s #{node['chef_client']['splay']}'"
not_if "lssrc -s #{node['chef_client']['svc_name']}"
action :run
end
а затем ее включение с помощью команды mkitab:
execute "enable #{node['chef_client']['svc_name']}" do
command "mkitab '#{node['chef_client']['svc_name']}:2:once:/usr/bin/startsrc
-s #{node['chef_client']['svc_name']} > /dev/console 2>&1'"
not_if "lsitab #{node['chef_client']['svc_name']}"
end
Настройка прокси-сервера
См. документацию по прокси для получения информации о настройке Chef Infra Client для использования прокси-сервера.
Примеры
Запуск Chef Infra Client
sudo chef-client
Запуск выполнения, когда Chef Infra Client запущен в качестве демона
Chef Infra Client, запущенный в качестве демона, можно разбудить и запустить, отправив процессу SIGUSR1. Например, чтобы запустить выполнение Chef Infra Client на машине под управлением Linux:
sudo killall -USR1 chef-client
Установка начального списка выполнения с помощью файла JSON
Начальный список выполнения узла задается с помощью файла JSON на хост-системе. При запуске Chef Infra Client как исполняемого файла используйте опцию -j для указания Chef Infra Client, какой файл JSON использовать. Например:
chef-client -j /etc/chef/file.json --environment _default
где file.json аналогичен:
{
"resolver": {
"nameservers": [ "10.0.0.1" ],
"search":"int.example.com"
},
"run_list": [ "recipe[resolver]" ]
}
и где _default — имя среды, назначенной узлу.
Предупреждение
Этот подход можно использовать для обновления обычных атрибутов, но никогда не следует использовать для обновления других типов атрибутов, так как все атрибуты, обновленные с помощью этой опции, обрабатываются как атрибуты normal.
© 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/ctl_chef_client/