Невозможно смонтировать общие ресурсы NFS на клиентах Windows

У меня есть общий ресурс NFS, настроенный на компьютере с Linux. У меня есть рецепт установки служб NFS для Windows, и я могу подключиться к общему ресурсу NFS, используя путь UNC или сопоставление диска. Я также могу вручную смонтировать общий ресурс, успешно используя mount или net use. Я пытаюсь автоматизировать это с помощью Chef, но те же самые команды, которые работают вручную, не работают, когда я это делаю. Я пробовал несколько методов, и ни один не работал.

mount "X:" do
    device "\\\\d-devfs02.domain.com\\software"
    action :mount
end

ArgumentError: сетевой путь не найден.

mount "X:" do
    device "d-devfs02.domain.com:/software"
    fstype "nfs"
    action :mount
end

ArgumentError: Неверный параметр.

execute "Mount" do
  command "net use X: \\\\d-devfs02.domain.com\\software"
  action :run
end

---- Начало вывода сетевого использования X: \d-devfs02.domain.com\software ---- STDOUT: STDERR: Произошла системная ошибка 53.

Сетевой путь не найден. ---- End output of net use X: \d-devfs02.domain.com\software ---- Ran net use X: \d-devfs02.domain.com\software вернул 2

execute "Mount" do
  command "C:/Windows/System32/mount.exe \\\\d-devfs02.domain.com\\software *"
  action :run
end

---- Начало вывода C:/Windows/System32/mount.exe \d-devfs02.domain.com\so ftware * ---- STDOUT: STDERR: 'C:/Windows/System32/mount.exe' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл. ---- Конец вывода C:/Windows/System32/mount.exe \d-devfs02.domain.com\soft ware * ---- Ran C:/Windows/System32/mount.exe \d-devfs02.domain .com\software * возвращено 1

Это просто сводит меня с ума. Я не только подтвердил, что файл существует в этом месте, эта команда (вместе со всеми командами сетевого использования) работает, когда я запускаю их вручную.

Команды Net use и mount работают, когда я делаю их вручную. Я запускаю шеф-клиент от имени себя, поэтому это не проблема с разрешениями. Chef-клиент по какой-то причине не видит mount.exe, а у сетевого использования есть проблема с путем. Я не уверен, что еще здесь делать.


person wewantbananas    schedule 29.01.2014    source источник
comment
Первый фрагмент кода должен работать. Это даже показано в документации docs.opscode.com/resource_mount.html. Вы запускаете шеф-повар с тем же пользователем, что и запускаете команды вручную? Может быть, у Chef нет прав доступа к общему ресурсу?   -  person Draco Ater    schedule 30.01.2014
comment
Я запускаю шеф-клиент от своего имени и могу подключиться к общему ресурсу, когда запускаю команду вручную. Мне интересно, есть ли какое-то изменение в контексте запуска шеф-клиента, которое сломает это? Или, может быть, что-то нужно изменить, если это общий ресурс NFS на клиенте Windows?   -  person wewantbananas    schedule 30.01.2014
comment
Я бы порекомендовал задать вопрос в списке рассылки Chef [email protected] и узнать, сталкивался ли кто-нибудь с такой же проблемой. Вы также можете попробовать открыть тикет на сайте ticket.opscode.com, так как это похоже на ошибку.   -  person sethvargo    schedule 01.02.2014
comment
Даже спустя 7 лет я сталкиваюсь с той же проблемой. Ничего из этого не работает.   -  person Dr. Polar Humenn    schedule 24.02.2021


Ответы (1)


У вас 64-битная Windows-машина? Это может быть связано с тем, что Ruby в Chef является 32-разрядным Ruby, и поэтому срабатывает полезный «перенаправитель файловой системы» Windows.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187.aspx

Другими словами, реальный путь для 32-разрядной версии Ruby — C:\Windows\Sysnative, а не C:\Windows\System32.

person Julian Dunn    schedule 01.04.2014