Ресурс mount
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл mount.rb и отправьте запрос на вытягивание в репозиторий Chef.
Используйте ресурс 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
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(предпочтительный). Массив по умолчанию:remount: true(не рекомендуется).
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 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, следует ли ему продолжать выполнение ресурса. Свойство защиты принимает либо строковое значение, либо значение блока 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 вместе, чтобы убедиться, что у узла, работающего на Amazon EC2, работает MySQL. Этот пример выполняет следующие действия:
- Проверяет, есть ли у узла Amazon EC2 MySQL
- Если у узла есть 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/