Spec-Zone.ru › Chef 16

Ресурс sudo

Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл sudo.rb и отправьте запрос на вытягивание в репозиторий Chef.

Страница справки по ресурсам


Используйте ресурс sudo для добавления или удаления отдельных записей sudo с использованием файлов sudoers.d. Для использования ресурса sudo требуется версия sudo 1.7.2 или более поздняя, так как он полагается на директиву #includedir, введённую в версии 1.7.2. Этот ресурс не проверяет установку требуемой версии sudo. Все поддерживаемые Chef версии Ubuntu, SuSE, Debian и RHEL (6+) поддерживают эту функцию.

Новое в Chef Infra Client 14.0.

Синтаксис


Полный синтаксис всех свойств, доступных для ресурса sudo:

sudo 'name' do
  command_aliases        Array
  commands               Array # default value: ["ALL"]
  config_prefix          String # default value: "Prefix values based on the node's platform"
  defaults               Array
  env_keep_add           Array
  env_keep_subtract      Array
  filename               String # default value: 'name' unless specified
  groups                 String, Array
  host                   String # default value: "ALL"
  noexec                 true, false # default value: false
  nopasswd               true, false # default value: false
  runas                  String # default value: "ALL"
  setenv                 true, false # default value: false
  template               String
  users                  String, Array
  variables              Hash
  visudo_binary          String # default value: "/usr/sbin/visudo"
  action                 Symbol # defaults to :create if not specified
end

где:

  • sudo — это ресурс.
  • name — имя блока ресурса.
  • action определяет действия, которые Chef Infra Client предпримет для приведения узла в нужное состояние.
  • command_aliases, commands, config_prefix, defaults, env_keep_add, env_keep_subtract, filename, groups, host, noexec, nopasswd, runas, setenv, template, users, variables и visudo_binary — это доступные свойства этого ресурса.

Действия


Ресурс sudo имеет следующие действия:

:create
По умолчанию. Создаёт файл конфигурации sudoers в директории sudoers.d.
:delete
Удаляет файл конфигурации sudoers из директории sudoers.d.
:nothing
Этот блок ресурса не выполняет действия, пока не получит уведомление от другого ресурса. После получения уведомления, этот блок ресурса либо выполняется сразу, либо ставится в очередь для выполнения в конце выполнения Chef Infra Client.

Свойства


Ресурс sudo имеет следующие свойства:

command_aliases
Тип Ruby: Массив

Псевдонимы команд, которые могут использоваться в качестве разрешённых команд позже в конфигурации.

commands
Тип Ruby: Массив | Значение по умолчанию: ["ALL"]

Массив полных путей к командам, которые этот пользователь sudo может выполнить.

config_prefix
Тип Ruby: Строка | Значение по умолчанию: Prefix values based on the node's platform

Директория, содержащая файл конфигурации sudoers.

defaults
Тип Ruby: Массив

Массив значений по умолчанию для пользователя/группы.

env_keep_add
Тип Ruby: Массив

Массив строк для добавления в env_keep.

env_keep_subtract
Тип Ruby: Массив

Массив строк для удаления из env_keep.

filename
Тип Ruby: Строка | Значение по умолчанию: The resource block's name

Имя файла sudoers.d, если оно отличается от имени блока ресурса.

groups
Тип Ruby: Строка, Массив

Группа(ы) для предоставления привилегий sudo. Это свойство принимает либо массив, либо список, разделённый запятыми. Лидирующая % в именах групп необязательна.

host
Тип Ruby: Строка | Значение по умолчанию: ALL

Хост, который нужно установить в конфигурации sudo.

noexec
Тип Ruby: true, false | Значение по умолчанию: false

Запретить выполнение команд с выводом.

nopasswd
Тип Ruby: true, false | Значение по умолчанию: false

Разрешить запуск sudo без указания пароля.

runas
Тип Ruby: Строка | Значение по умолчанию: ALL

Пользователь, от имени которого можно выполнить команды.

setenv
Тип Ruby: true, false | Значение по умолчанию: false

Определяет, разрешено ли сохранение среды с sudo -E.

template
Тип Ruby: Строка

Имя шаблона erb в вашем кулинарном руководстве, если вы хотите предоставить свой шаблон.

users
Тип Ruby: Строка, Массив

Пользователь(и) для предоставления привилегий sudo. Это свойство принимает либо массив, либо список, разделённый запятыми.

variables
Тип Ruby: Словарь

Переменные, которые нужно передать в пользовательский шаблон. Это свойство игнорируется, если не используется пользовательский шаблон.

visudo_binary
Тип Ruby: Строка | Значение по умолчанию: /usr/sbin/visudo

Путь к visudo для проверки конфигурации.


Общие функциональные возможности ресурсов


Ресурсы Chef включают общие свойства, уведомления и защиты ресурсов.

Общие свойства

Следующие свойства общие для всех ресурсов:

compile_time

Тип Ruby: true, false | Значение по умолчанию: false

Управление фазой, в которой ресурс выполняется на узле. Установите в значение true, чтобы запустить во время построения коллекции ресурсов (compile phase). Установите в значение false, чтобы запустить во время настройки узла Chef Infra Client (converge phase).

ignore_failure

Тип Ruby: true, false, :quiet | Значение по умолчанию: false

Продолжать выполнение рецепта, если ресурс завершился неудачей по любой причине. :quiet не будет отображать полный стек отслеживания, и рецепт продолжит выполнение, если ресурс завершится неудачей.

retries

Тип Ruby: Целое число | Значение по умолчанию: 0

Количество попыток перехватить исключения и повторить ресурс.

retry_delay

Тип Ruby: Целое число | Значение по умолчанию: 2

Задержка повтора (в секундах).

sensitive

Тип Ruby: true, false | Значение по умолчанию: false

Обеспечить, чтобы конфиденциальные данные ресурса не регистрировались Chef InfraClient.

Уведомления

notifies

Тип Ruby: Символ, 'Chef::Resource[String]'

Ресурс может уведомить другой ресурс о выполнении действия при изменении его состояния. Укажите 'resource[name]', :action, которое должен выполнить ресурс, и затем :timer для этого действия. Ресурс может уведомить несколько ресурсов; используйте инструкцию notifies для каждого уведомляемого ресурса.

Если указанный ресурс не существует, возникает ошибка. В противоположность этому, subscribes не завершится ошибкой, если исходный ресурс не найден.

Таймер определяет момент выполнения уведомления во время работы Chef Infra Client. Доступны следующие таймеры:

:before

Указывает, что действие по уведомлённому ресурсу должно выполняться до обработки блока ресурса, в котором находится уведомление.

:delayed

По умолчанию. Указывает, что уведомление должно быть помещено в очередь и выполнено в конце выполнения Chef Infra Client.

:immediate, :immediately

Указывает, что уведомление должно быть выполнено немедленно, для каждого уведомлённого ресурса.

Синтаксис для notifies:

notifies :action, 'resource[name]', :timer
subscribes

Тип Ruby: Символ, 'Chef::Resource[String]'

Ресурс может следить за другим ресурсом и выполнять действие, если состояние отслеживаемого ресурса изменится. Укажите 'resource[name]', :action, которое необходимо выполнить, и затем :timer для этого действия.

Обратите внимание, что subscribes не применяет указанное действие к ресурсу, за которым он следит — например:

file '/etc/nginx/ssl/example.crt' do
  mode '0600'
  owner 'root'
end

service 'nginx' do
  subscribes :reload, 'file[/etc/nginx/ssl/example.crt]', :immediately
end

В этом случае свойство subscribes перезагружает службу nginx всякий раз, когда файл сертификата, расположенный по адресу /etc/nginx/ssl/example.crt, обновляется. subscribes не вносит никаких изменений в сам файл сертификата, он просто отслеживает изменения в файле и выполняет действие :reload для своего ресурса (в этом примере nginx) при обнаружении изменений.

Если другой ресурс не существует, подписка не вызовет ошибку. В отличие от более строгих правил notifies, которая вызовет ошибку, если другой ресурс не существует.

Таймер определяет момент выполнения уведомления во время работы Chef Infra Client. Доступны следующие таймеры:

:before

Указывает, что действие по уведомлённому ресурсу должно выполняться до обработки блока ресурса, в котором находится уведомление.

:delayed

По умолчанию. Указывает, что уведомление должно быть помещено в очередь и выполнено в конце выполнения Chef Infra Client.

:immediate, :immediately

Указывает, что уведомление должно быть выполнено немедленно, для каждого уведомлённого ресурса.

Синтаксис для subscribes:

subscribes :action, 'resource[name]', :timer

Защиты

Свойство защиты может использоваться для оценки состояния узла во время фазы выполнения Chef Infra Client. Основываясь на результатах этой оценки, свойство защиты используется для указания Chef Infra Client, продолжать ли выполнение ресурса.

  • Строка выполняется как командная строка. Если команда возвращает 0, применяется защита. Если команда возвращает любое другое значение, то свойство защиты не применяется. Строковые защиты в powershell_script выполняют команды Windows PowerShell и могут возвращать true в дополнение к 0.
  • Блок выполняется как код Ruby, который должен вернуть либо true, либо false. Если блок возвращает true, свойство защиты применяется. Если блок возвращает false, свойство защиты не применяется.

Свойство защиты полезно для обеспечения идемпотентности ресурса, позволяя этому ресурсу проверить желаемое состояние во время выполнения, а затем, если желаемое состояние присутствует, Chef Infra Client ничего не делает.

Свойства

Следующие свойства могут быть использованы для определения защиты, которая оценивается во время фазы выполнения выполнения Chef Infra Client:

not_if

Запретить выполнение ресурса, когда условие возвращает true.

only_if

Разрешить выполнение ресурса только если условие возвращает true.

Примеры


Следующие примеры демонстрируют различные подходы к использованию ресурса sudo в рецептах:

Предоставление пользователю привилегий sudo для любой команды

sudo 'admin' do
  user 'admin'
end

Предоставление пользователю и группам привилегий sudo для любой команды

sudo 'admins' do
  users 'bob'
  groups 'sysadmins, superusers'
end

Предоставление привилегий sudo без пароля для определенных команд

sudo 'passwordless-access' do
  commands ['/bin/systemctl restart httpd', '/bin/systemctl restart mysql']
  nopasswd true
end
Ресурс sudo
  • Синтаксис
  • Действия
  • Свойства
  • Общие функциональные возможности ресурсов
    • Общие свойства
    • Уведомления
    • Защиты
  • Примеры

© 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/resources/sudo/

Spec-Zone.ru

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