Spec-Zone.ru › Chef 16

Ресурс user

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

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


Используйте ресурс user для добавления пользователей, обновления существующих пользователей, удаления пользователей и блокировки/разблокировки паролей пользователей.

Примечание

Системные атрибуты собираются Ohai в начале каждого запуска клиента Chef Infra. По своей сути, действия, доступные для ресурса user, обрабатываются после начала запуска клиента Chef Infra. Это означает, что системные атрибуты, добавленные или измененные ресурсом user во время запуска клиента Chef Infra, должны быть перезагружены, прежде чем они станут доступны клиенту Chef Infra. Эти системные атрибуты могут быть перезагружены двумя способами: путем получения значений в начале следующего запуска клиента Chef Infra или с помощью ресурса ohai для перезагрузки системных атрибутов во время текущего запуска клиента Chef Infra.

Синтаксис


Блок ресурсов user управляет пользователями на узле:

user 'a user' do
  comment 'A random user'
  uid 1234
  gid 'groupname'
  home '/home/random'
  shell '/bin/bash'
  password '$1$JJsvHslasdfjVEroftprNn4JHtDi'
end

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

user 'name' do
  comment                    String
  force                      true, false # see description
  gid                        String, Integer
  home                       String
  iterations                 Integer
  manage_home                true, false
  non_unique                 true, false
  password                   String
  salt                       String
  shell                      String
  system                     true, false
  uid                        String, Integer
  username                   String # defaults to 'name' if not specified
  action                     Symbol # defaults to :create if not specified
end

где:

  • user — это ресурс
  • name — это имя блока ресурсов
  • action определяет действия, которые клиент Chef Infra выполнит для приведения узла в желаемое состояние
  • comment, force, gid, home, iterations, manage_home, non_unique, password, salt, shell, system, uid, и username — это свойства этого ресурса, с указанным типом Ruby. См. раздел «Свойства» ниже для получения дополнительной информации о всех свойствах, которые могут использоваться с этим ресурсом.

Действия


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

:create
По умолчанию. Создает пользователя с заданными свойствами. Если пользователь уже существует (но не соответствует), обновляет этого пользователя в соответствии с заданными свойствами.
:lock
Блокирует пароль пользователя.
:manage
Управляет существующим пользователем. Это действие ничего не делает, если пользователь не существует.
:modify
Изменяет существующего пользователя. Это действие вызывает исключение, если пользователь не существует.
:nothing
Этот блок ресурсов не выполняет никаких действий, если не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурсов либо запускается немедленно, либо помещается в очередь для запуска в конце запуска клиента Chef Infra.
:remove
Удаляет пользователя.
:unlock
Разблокирует пароль пользователя.

Свойства


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

comment
Тип Ruby: String

Один (или несколько) комментариев о пользователе.

force
Тип Ruby: true, false

Принудительное удаление пользователя. Может использоваться только с действием :remove.

Предупреждение

Использование этого свойства может привести к несогласованному состоянию системы. Например, учетная запись пользователя будет удалена, даже если пользователь вошел в систему. Домашний каталог пользователя будет удален, даже если этот каталог совместно используется несколькими пользователями.

gid
Тип Ruby: String, Integer

Идентификатор группы. Это свойство ранее называлось group, и оба варианта продолжают функционировать.

home
Тип Ruby: String

Расположение домашнего каталога.

iterations
Тип Ruby: Integer

Только для платформы macOS. Количество итераций для пароля с хешем shadow SALTED-SHA512-PBKDF2.

manage_home
Тип Ruby: true, false

Управление домашним каталогом пользователя.

При использовании с действием :create, домашний каталог пользователя создается на основе HOME_DIR. Если домашний каталог отсутствует, он создается, если только CREATE_HOME в /etc/login.defs не установлено в no. При создании в домашний каталог включается базовый набор файлов и подкаталогов.

При использовании с действием :modify, домашний каталог пользователя перемещается в HOME_DIR. Если домашний каталог отсутствует, он создается, если только CREATE_HOME в /etc/login.defs не установлено в no. Содержимое домашнего каталога пользователя перемещается в новое местоположение.

non_unique
Тип Ruby: true, false

Создать дубликат (неуникальную) учетную запись пользователя.

password
Тип Ruby: String

Хэш shadow пароля

salt
Тип Ruby: String

Хэш SALTED-SHA512-PBKDF2.

shell
Тип Ruby: String

Входная оболочка.

system
Тип Ruby: true, false

Создать системного пользователя. Это свойство может использоваться с useradd в качестве провайдера для создания системного пользователя, который передает флаг -r в useradd.

uid
Тип Ruby: String, Integer

Числовой идентификатор пользователя.

username
Тип Ruby: String

Имя пользователя. Значение по умолчанию: name блока ресурсов. См. раздел «Синтаксис» выше для получения дополнительной информации.


Общие функции ресурса


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

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

Следующие свойства являются общими для каждого ресурса:

compile_time

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

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

ignore_failure

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

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

retries

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

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

retry_delay

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

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

sensitive

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

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

Уведомления

notifies

Тип Ruby: Symbol, 'Chef::Resource[String]'

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

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

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

:before

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

:delayed

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

:immediate, :immediately

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

Синтаксис для notifies следующий:

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

Тип Ruby: Symbol, '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, в который выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

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

:immediate, :immediately

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

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

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

Охранники

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

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

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

Свойства

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

not_if

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

only_if

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

Примеры


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

Создать системного пользователя

user 'systemguy' do
  comment 'system guy'
  system true
  shell '/bin/false'
end

Создать системного пользователя с переменной

Следующий пример демонстрирует как создать системного пользователя. В этом случае значение home вычисляется и сохраняется в переменной под названием user_home, которая устанавливает атрибут home пользователя.

user_home = "/home/#{node['cookbook_name']['user']}"

user node['cookbook_name']['user'] do
  gid node['cookbook_name']['group']
  shell '/bin/bash'
  home user_home
  system true
  action :create
end

Использовать пароли SALTED-SHA512-PBKDF2

macOS 10.8 (и выше) рассчитывает хеш пароля тени, используя SALTED-SHA512-PBKDF2. Длина значения хеша тени составляет 128 байт, значение соли — 32 байта, а целое число определяет количество итераций. Следующий код вычислит хеши пароля тени для macOS 10.8 (и выше):

password = 'my_awesome_password'
salt = OpenSSL::Random.random_bytes(32)
iterations = 25000 # Any value above 20k should be fine.

shadow_hash = OpenSSL::PKCS5::pbkdf2_hmac(
  password,
  salt,
  iterations,
  128,
  OpenSSL::Digest::SHA512.new
).unpack('H*').first
salt_value = salt.unpack('H*').first

Использовать рассчитанный хеш пароля тени с ресурсом user:

user 'my_awesome_user' do
  password 'cbd1a....fc843'  # Length: 256
  salt 'bd1a....fc83'        # Length: 64
  iterations 25000
end
Ресурс user
  • Синтаксис
  • Действия
  • Свойства
  • Общие функциональные возможности ресурсов
    • Общие свойства
    • Уведомления
    • Охранники
  • Примеры

© 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/user/

Spec-Zone.ru

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