Vagrant:一起使用 provider 和 provision
Vagrant: use provider and provision togather
这是我的主要 Vagrant 文件
Vagrant.configure(2) do |config|
config.vm.define "app7" do |app7|
app7.vm.synced_folder "/home/behrad/dunro","/var/www/html"
app7.vm.network "forwarded_port", id: "ssh", guest: 22, host: 2222, auto_correct: true
app7.vm.provider "docker" do |docker|
docker.vagrant_vagrantfile = "dev/app7/Vagrantfile"
docker.build_dir = "./dev/app7"
docker.build_args = "-t","dunro/app7:20170701"
docker.name = "app7"
docker.ports = ['80:80']
docker.has_ssh = true
end
end
end
和dev/app7/Vagrantfile
Vagrant.configure(2) do |config|
config.vm.hostname = "app7"
config.vm.provision "file", source: "keys/id_rsa.pub", destination: "/var/www/.ssh/authorized_keys"
config.ssh.username = "www-data"
config.ssh.private_key_path = "keys/id_rsa"
end
dev/app7/Vagrantfile 不工作
The dev/app7/Vagrantfile not working
是的,它不起作用,因为它不是有效的 Vagrantfile。
你基本上已经指示 vagrant 使用 host VM 所以从主 Vagrantfile,你告诉 vagrant 查看另一个 Vagrantfile 以了解主机 VM 的配置(主机 VM 运行 docker) 所以至少你需要有一个 config.vm.box
设置,它将成为这个 VM
的基本框
主机 VM Vagrantfile 的一个例子是
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "app7"
config.vm.provision "shell", inline: "echo Hello, World"
# make sure to have docker installed on this VM
config.vm.provision "docker"
config.vm.network :forwarded_port, guest: 80, host: 4567
end
这将创建一个基于 ubuntu trusty64 的虚拟机(我确保安装最新版本的 docker 因此具有 docker 提供程序的主要 Vagrantfile 将能够 运行正确)
在这种情况下,我可以看到我的内联 shell 配置 运行ning,docker 配置将安装 docker,然后在 docker main 之后提供商将在此虚拟机上拉取映像
这是我的主要 Vagrant 文件
Vagrant.configure(2) do |config|
config.vm.define "app7" do |app7|
app7.vm.synced_folder "/home/behrad/dunro","/var/www/html"
app7.vm.network "forwarded_port", id: "ssh", guest: 22, host: 2222, auto_correct: true
app7.vm.provider "docker" do |docker|
docker.vagrant_vagrantfile = "dev/app7/Vagrantfile"
docker.build_dir = "./dev/app7"
docker.build_args = "-t","dunro/app7:20170701"
docker.name = "app7"
docker.ports = ['80:80']
docker.has_ssh = true
end
end
end
和dev/app7/Vagrantfile
Vagrant.configure(2) do |config|
config.vm.hostname = "app7"
config.vm.provision "file", source: "keys/id_rsa.pub", destination: "/var/www/.ssh/authorized_keys"
config.ssh.username = "www-data"
config.ssh.private_key_path = "keys/id_rsa"
end
dev/app7/Vagrantfile 不工作
The dev/app7/Vagrantfile not working
是的,它不起作用,因为它不是有效的 Vagrantfile。
你基本上已经指示 vagrant 使用 host VM 所以从主 Vagrantfile,你告诉 vagrant 查看另一个 Vagrantfile 以了解主机 VM 的配置(主机 VM 运行 docker) 所以至少你需要有一个 config.vm.box
设置,它将成为这个 VM
主机 VM Vagrantfile 的一个例子是
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "app7"
config.vm.provision "shell", inline: "echo Hello, World"
# make sure to have docker installed on this VM
config.vm.provision "docker"
config.vm.network :forwarded_port, guest: 80, host: 4567
end
这将创建一个基于 ubuntu trusty64 的虚拟机(我确保安装最新版本的 docker 因此具有 docker 提供程序的主要 Vagrantfile 将能够 运行正确)
在这种情况下,我可以看到我的内联 shell 配置 运行ning,docker 配置将安装 docker,然后在 docker main 之后提供商将在此虚拟机上拉取映像