Ресурс mount
Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл mount.rb и отправьте запрос на добавление в репозиторий Chef Infra Client.
Используйте ресурс 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/