条件
- 流浪者 2.0.1
- 流浪盒:ubuntu/xenial64
- 供应:ansible
流浪文件
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 主机。我使用 ansible 将这 3 个单独的配置(启用的站点)从来宾系统符号链接到我的主机系统中,这将等于
sudo ln -s /vagrant/path/to/dist.conf /etc/nginx/sites-enabled/dist.conf
当我第一次使用vagrant up
Box 时,站点是可访问的,因为在配置结束时我重新启动了nginx
服务。但是,一旦我停止该框并再次启动它,这些站点就无法访问,但该nginx
服务正在运行。然后我可以nginx
在 shell 上重新启动服务,然后一切正常。
原因
我发现在nginx
服务启动时/vagrant
尚未安装同步文件夹。nginx
无论符号链接的配置是否可以解析,该服务仍然可以正常启动。
问题
我可以设置一个始终运行的配置 shell 脚本,它会nginx
在每个vagrant up
. 但这不是我正在寻找的解决方案。
安装文件夹后,有没有办法在来宾系统中处理触发器/vagrant
?我可以想象有某种xyz.d
文件夹可以放入脚本,其中将使用所有必要的参数来执行以识别 vagrant mount。
编辑 (2018-04-25)
我不想依赖 Vagrant 的机制,比如插件或进一步的配置脚本。我最近从配置 shell 脚本更改为 Ansible,而我想对 Docker 或其他部署机制使用相同的配置。我可以想象 Docker 中的挂载存在同样的问题。
编辑 (2018-04-27)
我发现@razius 的这篇文章有完全相同的问题。该解决方案不是最新的,我得到了寻找systemd
与他的解决方案等效的提示。但我不熟悉它。所以可能有人可以帮助我。