Бродячие и синхронизированные папки: как назначить владельцем пользователя, отличного от бродячего пользователя по умолчанию?

Я пытаюсь настроить среду разработки для проекта Rails 2 в виртуальной машине CoreOS Vagrant, которая имеет несколько движущихся частей. После того, как виртуальная машина подготовлена, существует сценарий Puppet, который устанавливает все компоненты и запускает их.

Бит, над которым я работаю, который находится на моей локальной машине (OS X 10.10.5), выставляется на виртуальную машину через synced folder и появляется в нужном месте в виртуальной машине с владельцем vagrant и группой vagrant.

Для того, чтобы он работал с остальной частью системы, необходимо вместо этого установить владение этой папкой на projectx.

Простое указание Puppet установить разрешения не работает. Они не меняются. Я подтвердил это, вручную chown изменяя файлы, и они не меняются.

Я не могу просто установить пользователя в Vagrantfile, хотя, пока Puppet не сделает свое дело, пользователя projectx нет.

Похоже, мое единственное решение — взломать файлы Puppet и исключить использование пользователя projectx, но я бы предпочел вместо этого найти способ установить владельца synced folder, так как это было бы намного чище.

Как установить право собственности на synced folder для пользователя, который не будет создан до тех пор, пока виртуальная машина не будет подготовлена?


person Dave Sag    schedule 19.08.2015    source источник
comment
Соответствующее сообщение об ошибке для индексации Google: Vagrant не удалось смонтировать общие папки VirtualBox ... такого пользователя нет   -  person Martti Laine    schedule 02.11.2019


Ответы (1)


К сожалению, нет простых способов сделать это.

Распространенным обходным решением является использование uid и gid в конфигурации папки синхронизации. Таким образом, вы можете создать синхронизированную папку как пользователь, который позже будет добавлен в систему.

projectx_uid = 1001
projectx_gid = 1001
config.vm.synced_folder "src/", "/srv/website",
  owner: projectx_uid, group: projectx_guid0

Это означает, что projectx должен быть создан в самом начале процесса подготовки, чтобы он имел предсказуемый uid/gid.

Связанная проблема в трекере Vagrant: https://github.com/mitchellh/vagrant/issues/936

person Alik    schedule 19.08.2015
comment
Это работало нормально. И я просто вручную указал gid и uid в файле марионетки - person Dave Sag; 20.08.2015