Spec-Zone.ru › Chef 18

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

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

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

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

Примечание

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

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

Примечание

Режим 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 можно запустить от имени обычного пользователя — то есть «запустить как пользователя с ограниченными системными привилегиями», что может быть полезно, когда объекты в системе доступны другим учётным записям пользователей.

Когда 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')

Примечание

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

  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, вместо значения по умолчанию. Например:

    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