Синхронизировать папки после запуска скрипта предоставления?

Возможно ли иметь бродячую синхронизацию папки после запуска скрипта предоставления?

Мне нужно синхронизировать гостевую папку с хост-папкой, но хост-папка должна быть пустой, чтобы скрипт предоставления работал. Пользователь и группа также должны существовать. Ни один из них не может существовать до тех пор, пока не будет запущен сценарий обеспечения. Мой сценарий предоставления создает пользователя и группу.

Синхронизируемая папка представляет собой тему Magento. Сначала необходимо установить Magento, прежде чем я смогу синхронизировать каталоги, поскольку Magento не будет устанавливаться в непустой каталог.

Вот мой Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provision "shell", path: "provision.sh"
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.synced_folder "app/design/frontend", 
              "/var/www/mage/app/design/frontend",
              create: false,
              owner: "mage",
              group: "www-data"
    
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "3000"
  end
end

Я рассмотрел триггеры, но могу понять, как использовать config.vm.synced_folder в триггере.

Любой совет?


person BugHunterUK    schedule 05.09.2020    source источник


Ответы (1)


Я нашел решение.

В Vagrantfile установите config.vm.synced_folder как false (также работает для nfs):

config.vm.synced_folder "app/design/frontend", 
          "/var/www/mage/app/design/frontend",
          type: "rsync",
          disabled: false,
          owner: "mage",
          group: "www-data"

Теперь запустите vagrant up. После завершения подготовки сервера измените значение disabled на true следующим образом:

config.vm.synced_folder "app/design/frontend", 
          "/var/www/mage/app/design/frontend",
          type: "rsync",
          disabled: true,
          owner: "mage",
          group: "www-data"

Теперь запустите vagrant reload и папка будет синхронизирована.

В документах говорится

disabled (boolean) — если true, эта синхронизированная папка будет отключена и не будет настроена. Это можно использовать для отключения ранее определенной синхронизированной папки или для условного отключения определения на основе какого-либо внешнего фактора.

Что заставляет меня поверить, что это может быть одним из предполагаемых способов решения моей проблемы.

Существует запрос функции для монтирования папок после предоставления, который кажется закрытым и не разрешенным, поэтому я не думаю, что для этого есть другой способ: https://github.com/hashicorp/vagrant/issues/936

person BugHunterUK    schedule 05.09.2020