Клиент Chef Infra (исполняемый файл)
Клиент Chef Infra — это агент, который выполняется локально на каждом узле, управляемом сервером Chef Infra. При запуске клиента Chef Infra выполняются все необходимые шаги для приведения узла к ожидаемому состоянию, включая:
- Регистрацию и аутентификацию узла на сервере Chef Infra
- Синхронизацию кулинарных книг с сервера Chef Infra на узел
- Компиляцию коллекции ресурсов путём загрузки всех необходимых кулинарных книг, включая рецепты, атрибуты и все остальные зависимости
- Выполнение необходимых действий по настройке узла на основе рецептов и атрибутов
- Отчёт о сводке выполнения в Chef Automate
Примечание
Исполняемый файл клиента Chef Infra запускается как командная утилита.
Примечание
Файл client.rb определяет конфигурацию клиента Chef Infra на узле и имеет следующие характеристики:
- Этот файл загружается каждый раз при запуске исполняемого файла 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, если у клиента Chef Infra нет административных привилегий в 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 будет сканировать порты от 8889 до 9999 и выберет первый доступный порт. -
-d SECONDS,--daemonize SECONDS -
Запустить исполняемый файл в качестве демона. Используйте
SECONDSдля указания количества секунд ожидания перед первым запуском демонизированного клиента Chef Infra.SECONDSустанавливается в0по умолчанию. Если не указано, демон использует значения по умолчанию--intervalи--splay.Этот параметр доступен только для машин с ОС UNIX или Linux. Для машин с Microsoft Windows, требующих аналогичной функциональности, используйте рецепт
chef-client::serviceв кулинарной книгеchef-client: https://supermarket.chef.io/cookbooks/chef-client. Это установит службу клиента Chef Infra под Microsoft Windows с помощью Windows Service Wrapper. --delete-entire-chef-repo-
Этот параметр удаляет весь репозиторий. Этот параметр может быть использован только при запуске клиента Chef Infra в локальном режиме (
--local-mode). Для этого параметра требуется указать--recipe-url. --disable-config-
Используется для запуска клиента Chef Infra с настройками по умолчанию. Это предотвратит использование обычного файла конфигурации. Этот параметр следует использовать только для целей тестирования и никогда не использовать в рабочей среде.
-
-E ENVIRONMENT_NAME,--environment ENVIRONMENT_NAME -
Имя среды.
-
-f,--[no-]fork -
Выполняет операции клиента Chef Infra в дочернем процессе с выделенной оперативной памятью. По завершении выполнения, оперативная память возвращается главному процессу. Этот параметр помогает гарантировать стабильное использование оперативной памяти клиентом Chef Infra, так как главный процесс не выполняет рецепты. Также это помогает предотвратить утечки памяти, которые могут возникнуть из-за плохо спроектированной кулинарной книги. Для отключения запуска клиента Chef Infra в дочернем процессе используйте
--no-fork. Значение по умолчанию:--fork. -
-F FORMAT,--format FORMAT -
Формат вывода:
doc(по умолчанию) илиmin.
- Используйте
docдля вывода хода выполнения клиента Chef Infra с полными строками, отображающими сводку обновлений по мере их появления. - Используйте
minдля вывода хода выполнения клиента Chef Infra с использованием отдельных символов.
Сводка обновлений выводится в конце выполнения клиента Chef Infra. Точка (.) выводится для событий, которые не имеют осмысленной информации о состоянии, таких как загрузка файла или синхронизация кулинарной книги. Для ресурсов, точка (.) выводится, если ресурс соответствует актуальному состоянию, 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'].Указать политику
Используйте эту опцию для использования файлов политики, указав файл 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 -
Заменить текущий список выполнения указанными элементами. Эта опция не очистит список кулинарных книг (и связанных файлов), кэшированных на узле. Эта опция не сохранит данные узла в конце выполнения клиента.
--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 -
Постоянно заменить текущий список выполнения указанным списком элементов.
-
-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 в локальном режиме без необходимости прав администратора.
О режиме 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 можно запустить от имени обычного пользователя — то есть «запустить как пользователя с ограниченными системными привилегиями», что может быть полезно, когда объекты в системе доступны другим учётным записям пользователей.
Когда Chef Infra Client запущен от имени обычного пользователя, он может выполнять любое действие, разрешённое этому пользователю, если это действие не требует повышенных привилегий (например, sudo или pbrun). Попытки управления любым объектом, требующим повышенных привилегий, приведут к ошибке. Например, когда Chef Infra Client запущен от имени обычного пользователя, который не может создавать или изменять пользователей, ресурс 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). - Перед установкой Chef Infra Client на логический раздел (LPAR) должен быть установлен набор символов EN_US (UTF-8).
Установка 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, вместо значения по умолчанию. Например:
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/