Условия
- Бродяга 2.0.1
- Бродячая коробка: ubuntu / xenial64
- Provisioning: доступный
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.box_download_insecure = true
config.vm.define "foobar"
config.vm.provider "virtualbox" do |provider|
provider.name = "foobar"
provider.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end
config.vm.network "private_network", ip: "192.168.5.4"
config.vm.hostname = "foobar.dev"
config.hostsupdater.aliases = ["pma.foobar.dev","readis.foobar.dev"]
config.vm.synced_folder ".", "/vagrant", type: "nfs"
config.vm.provision "Installing 'vagrant'", type: "ansible_local" do |provisioner|
provisioner.playbook = "/vagrant/env/ansible/install-vagrant.yml"
provisioner.inventory_path = "/vagrant/env/ansible/inv/integration/hosts"
provisioner.limit = "localhost"
end
end
Проблема
Как видите, на моем гостевом компьютере запущено 3 хоста nginx. Я связал эти 3 отдельных конфигурации (включенные сайты) из гостевой системы в мою хост-систему с помощью ansible, который будет равен
sudo ln -s /vagrant/path/to/dist.conf /etc/nginx/sites-enabled/dist.conf
Когда я впервые vagrant up
мой Box, сайты доступны, потому что в конце подготовки я перезапускаю службу nginx
. Но как только я останавливаю ящик и снова включаю его, сайты недоступны, но служба nginx
работает. Затем я могу перезапустить службу nginx
в оболочке, и тогда все будет работать нормально.
Причина
Я обнаружил, что на момент запуска службы nginx
синхронизированная папка /vagrant
не была смонтирована. Служба nginx
по-прежнему запускается правильно, независимо от того, могут ли быть разрешены конфиги, связанные с символическими ссылками, или нет.
Вопрос
Я мог бы настроить постоянно работающий сценарий оболочки, который перезапускает службу nginx
каждый vagrant up
. Но это не то решение, которое я ищу.
Есть ли способ обработать триггер в гостевой системе, как только папка /vagrant
будет смонтирована? Я могу представить, что есть какая-то xyz.d
папка, в которую я могу поместить сценарии, которые будут выполняться со всеми необходимыми аргументами для идентификации бродячего монтирования.
Изменить (2018-04-25)
Я не хочу полагаться на механизмы Vagrant, такие как плагины или сценарии дальнейшей подготовки. Недавно я перешел с подготовки сценариев оболочки на Ansible, в то время как хочу использовать такую же подготовку для Docker или других механизмов развертывания. И я мог представить ту же проблему с монтированием в Docker.
Изменить (2018-04-27)
Запуск служб после монтирования Vagrant
Я обнаружил, что эта статья @razius имеет точно такую же проблему. Решение устарело, и мне посоветовали поискать systemd
эквивалент его решения. Но я не знаком с этим. Так что можно мне помочь.