Условия
- Бродяга 2.0.1
- Vagrant Box: ubuntu / xenial64
- Предоставление: ansible
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 отдельных конфига (enabled-sites) из гостевой системы в мою хост-систему с 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
эквивалент его решения. Но я не знаком с этим. Так что можно мне помочь.