Vagrant 流浪汉与流浪汉的结合
在谈话和聚会中,大多数人使用ansible和vagrant在电脑上测试东西。我现在已经完成了这两个教程的学习,但是在这些教程中,他们似乎没有对这个想法进行太多的思考。我知道,但我认为这是错误的。我认为我不想单独与每个VM交互,而是使用ansible为它们提供一个playbook和一个shell命令。可能吗?它需要一些特殊设置吗?您的Vagrant 流浪汉与流浪汉的结合,vagrant,ansible,provisioning,Vagrant,Ansible,Provisioning,在谈话和聚会中,大多数人使用ansible和vagrant在电脑上测试东西。我现在已经完成了这两个教程的学习,但是在这些教程中,他们似乎没有对这个想法进行太多的思考。我知道,但我认为这是错误的。我认为我不想单独与每个VM交互,而是使用ansible为它们提供一个playbook和一个shell命令。可能吗?它需要一些特殊设置吗?您的vagrant文件可以包含有关多个虚拟机的信息 或者,在创建虚拟机时不要使用任何provisioner,然后使用ansible一次性配置所有虚拟机。是的,这是可能的,
vagrant文件
可以包含有关多个虚拟机的信息
或者,在创建虚拟机时不要使用任何provisioner,然后使用ansible一次性配置所有虚拟机。是的,这是可能的,下面的工作示例可以帮助您了解如何在不同服务器上同时运行单独的playbook,而不与服务器交互
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box_check_update = false
config.ssh.insert_key = false
# Web Server Configuration
config.vm.define "webserver" do |webserver|
webserver.vm.hostname = "webserver"
webserver.vm.network "private_network", ip: "192.168.33.50"
webserver.vm.provider "virtualbox" do |vb|
# Do not load the command line GUI
vb.gui = false
# Virtual Machine Name
vb.name = "webserver"
# Network settings
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
# Use VBoxManage to customize the VM
vb.customize ["modifyvm", :id, "--memory", "512"]
end
# Configuration for Ansible as Provisioner
webserver.vm.provision :ansible do |ansible|
ansible.playbook = "webserver.yml"
ansible.host_key_checking = false
end
end
# Database Server Configuration
config.vm.define "database" do |database|
database.vm.hostname = "database"
database.vm.network "private_network", ip: "192.168.33.100"
database.vm.provider "virtualbox" do |vb|
# Do not load the command line GUI
vb.gui = false
# Virtual Machine Name
vb.name = "database"
# Network settings
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
# Use VBoxManage to customize the VM
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
# Configuration for Ansible as Provisioner
database.vm.provision :ansible do |ansible|
ansible.playbook = "database.yml"
ansible.host_key_checking = false
end
end
end
如果要同时向所有服务器运行一个playbook,则可以执行以下操作:
- 删除单独的
块规定
- 在最后一个
语句之前添加此end
块provision
config.vm.provision:ansible do | ansible |
ansible.playbook = "playbook.yml" ansible.host_key_checking = false end