Spec-Zone.ru › Chef 16

Клиент Chef Infra (исполняемый файл)

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

Chef Infra Client — это агент, который выполняется локально на каждом узле, управляемом сервером Chef Infra Server. При запуске Chef Infra Client выполняет все необходимые шаги для приведения узла в ожидаемое состояние, включая:

  • Регистрацию и аутентификацию узла с сервером Chef Infra Server
  • Синхронизацию кулинарных книг с сервера Chef Infra Server на узел
  • Компиляцию коллекции ресурсов путем загрузки каждой необходимой кулинарной книги, включая рецепты, атрибуты и все другие зависимости
  • Выполнение необходимых действий для настройки узла на основе рецептов и атрибутов
  • Отчет о сводной информации о выполнении в Chef Automate

Примечание

Исполняемый файл Chef Infra Client может запускаться в качестве демона.

Исполняемый файл 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, перестроение объекта узла, расширение списка выполнения, получение необходимых файлов кулинарной книги, сброс атрибутов узла, идентификацию ресурсов и построение коллекции ресурсов, но не включает сопоставление каждого ресурса с поставщиком или конфигурацию какой-либо части системы.

Примечание

Режим why-run не является заменой запуска кулинарных книг в тестовой среде, имитирующей производственную среду. Chef использует режим why-run, чтобы больше узнать о происходящем, а также Kitchen на системах разработчиков, наряду с внутренней областью OpenStack и внешними поставщиками облачных сервисов для более тщательного тестирования.

При запуске 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-zero не сохраняет данные между перезапусками. Поскольку он предназначен для локального использования, chef-zero не выполняет проверку входных данных, аутентификацию или авторизацию, так как эти меры безопасности не нужны для локального тестирования. По этим причинам мы настоятельно не рекомендуем использовать chef-zero в качестве постоянного 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')

Примечание

При запуске Chef Infra Client с опцией --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 не сможет создавать потоки. Чтобы увеличить системные лимиты процессов:

  1. Проверьте, не были ли системные лимиты процессов уже увеличены.

  2. Если они не были увеличены, выполните следующие команды от имени пользователя 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"
    
  3. Перезагрузите логический раздел (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 при установке не с компакт-диска.

  1. В командной строке 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
    
  2. Выберите 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
    
  3. Перемещайте курсор по первым двум пунктам — CULTURAL convention to install и LANGUAGE translation to install — и используйте F4, чтобы переместиться по списку до тех пор, пока не будет выбран UTF-8 English (United States) [EN_US]. (EN_US написано заглавными буквами!)

  4. Нажмите 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/

Spec-Zone.ru

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