Spec-Zone.ru › Chef 17

Ресурс mount

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

Все страницы ресурсов Infra


Используйте ресурс mount для управления смонтированной файловой системой.

Синтаксис


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

mount 'name' do
  device           String
  device_type      String, Symbol # default value: :device
  domain           String
  dump             Integer, false # default value: 0
  enabled          true, false # default value: false
  fsck_device      String # default value: "-"
  fstype           String # default value: "auto"
  mount_point      String # default value: 'name' unless specified
  options          Array, String # default value: ["defaults"]
  pass             Integer, false # default value: 2
  password         String
  supports         Array, Hash # default value: { remount: false }
  username         String
  action           Symbol # defaults to :mount if not specified
end

где:

  • mount — это ресурс.
  • name — имя блока ресурса.
  • action определяет шаги, которые Chef Infra Client предпримет для приведения узла к желаемому состоянию.
  • device, device_type, domain, dump, enabled, fsck_device, fstype, mount_point, options, pass, password, supports, и username — доступные свойства этого ресурса.

Действия


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

:disable
Удаление записи из таблицы файловых систем (fstab).
:enable
Добавление записи в таблицу файловых систем (fstab).
:mount
По умолчанию. Монтирование устройства.
:nothing
Этот блок ресурса не действует, пока не получит уведомление от другого ресурса. После уведомления, этот блок либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:remount
Перемонтирование устройства.
:umount
Размонтирование устройства.
:unmount
Псевдоним для действия :umount.

Свойства


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

device
Тип в Ruby: Строка

Требуется для действий :umount и :remount (для проверки вывода команды mount на наличие). Специальное блочное устройство или удалённый узел, метка или uuid для монтирования.

device_type
Тип в Ruby: Строка, Символ | Значение по умолчанию: :device Допустимые значения: :device, :label, :uuid

Тип устройства: :device, :label или :uuid

domain
Тип в Ruby: Строка

Только Windows: Используется для указания домена, в котором находятся username и password.

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

Частота дампов (в днях), используемая при создании записи в таблице файловых систем (fstab).

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

Указывает, включена ли смонтированная файловая система.

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

Только Solaris: Устройство fsck.

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

Тип файловой системы (fstype) устройства.

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

Директория (или путь), в которую должно быть смонтировано устройство. По умолчанию — имя блока ресурса, если не указано другое.

options
Тип в Ruby: Массив, Строка | Значение по умолчанию: ["defaults"]

Массив или список опций через запятую для монтирования.

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

Номер прохода, используемый командой проверки файловой системы (fsck) при создании записи в таблице файловых систем (fstab).

password
Тип в Ruby: Строка

Только Windows: Используется для указания пароля для имени пользователя.

supports
Тип в Ruby: Массив, Хеш | Значение по умолчанию: { remount: false }

Укажите хеш поддерживаемых функций монтирования.

username
Тип в Ruby: Строка

Только Windows: Используется для указания имени пользователя.


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


Ресурсы 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 Infra Client.

Уведомления

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]', действие, которое должно быть выполнено, и :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, следует ли продолжать выполнение ресурса. Свойство блокировки принимает либо строковое значение, либо блок 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.

Примеры


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

Монтирование файловой системы с меткой

mount '/mnt/volume1' do
  device 'volume1'
  device_type :label
  fstype 'xfs'
  options 'rw'
end

Монтирование локального блочного диска

mount '/mnt/local' do
  device '/dev/sdb1'
  fstype 'ext3'
end

Монтирование файловой системы без блоков

mount '/mount/tmp' do
  pass     0
  fstype   'tmpfs'
  device   '/dev/null'
  options  'nr_inodes=999k,mode=755,size=500m'
  action   [:mount, :enable]
end

Монтирование и добавление в таблицу файловых систем

mount '/export/www' do
  device 'nas1prod:/export/web_sites'
  fstype 'nfs'
  options 'rw'
  action [:mount, :enable]
end

Монтирование удаленной файловой системы

mount '/export/www' do
  device 'nas1prod:/export/web_sites'
  fstype 'nfs'
  options 'rw'
end

Монтирование удаленной папки в Microsoft Windows

mount 'T:' do
  action :mount
  device '\\\\hostname.example.com\\folder'
end

Отключение удаленной папки в Microsoft Windows

mount 'T:' do
  action :umount
  device '\\\\hostname.example.com\\D$'
end

Остановка службы, выполнение действий и последующий перезапуск

Следующий пример демонстрирует, как использовать ресурсы execute, service и mount вместе для обеспечения запуска MySQL на узле, работающем на Amazon EC2. Этот пример выполняет следующие действия:

  • Проверка наличия MySQL на узле Amazon EC2
  • Если на узле есть MySQL, остановка MySQL
  • Установка MySQL
  • Монтирование узла
  • Перезапуск MySQL
# the following code sample comes from the ``server_ec2``
# recipe in the following cookbook:
# https://github.com/chef-cookbooks/mysql

if (node.attribute?('ec2') && ! FileTest.directory?(node['mysql']['ec2_path']))

  service 'mysql' do
    action :stop
  end

  execute 'install-mysql' do
    command "mv #{node['mysql']['data_dir']}#{node['mysql']['ec2_path']}"
    not_if do FileTest.directory?(node['mysql']['ec2_path']) end
  end

  [node['mysql']['ec2_path'], node['mysql']['data_dir']].each do |dir|
    directory dir do
      owner 'mysql'
      group 'mysql'
    end
  end

  mount node['mysql']['data_dir'] do
    device node['mysql']['ec2_path']
    fstype 'none'
    options 'bind,rw'
    action [:mount, :enable]
  end

  service 'mysql' do
    action :start
  end

end

где

  • два ресурса service используются для остановки и последующего перезапуска службы MySQL
  • ресурс execute используется для установки MySQL
  • ресурс mount используется для монтирования узла и включения MySQL

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

Spec-Zone.ru

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