Vagrant 流浪汉与流浪汉的结合

Vagrant 流浪汉与流浪汉的结合,vagrant,ansible,provisioning,Vagrant,Ansible,Provisioning,在谈话和聚会中,大多数人使用ansible和vagrant在电脑上测试东西。我现在已经完成了这两个教程的学习,但是在这些教程中,他们似乎没有对这个想法进行太多的思考。我知道,但我认为这是错误的。我认为我不想单独与每个VM交互,而是使用ansible为它们提供一个playbook和一个shell命令。可能吗?它需要一些特殊设置吗?您的vagrant文件可以包含有关多个虚拟机的信息 或者,在创建虚拟机时不要使用任何provisioner,然后使用ansible一次性配置所有虚拟机。是的,这是可能的,

在谈话和聚会中,大多数人使用ansible和vagrant在电脑上测试东西。我现在已经完成了这两个教程的学习,但是在这些教程中,他们似乎没有对这个想法进行太多的思考。我知道,但我认为这是错误的。我认为我不想单独与每个VM交互,而是使用ansible为它们提供一个playbook和一个shell命令。可能吗?它需要一些特殊设置吗?

您的
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
    
希望这对你有帮助