vagrant设置重复的IP地址;Ansible把它们捡起来了?

vagrant设置重复的IP地址;Ansible把它们捡起来了?,vagrant,ansible,vagrantfile,Vagrant,Ansible,Vagrantfile,我有以下vagrant文件: # -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" NUM_HOSTS = 3 def hostname(id) "node#{id}" end Vagrant.configure(VAGRANTFILE_A

我有以下
vagrant文件

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
NUM_HOSTS = 3

def hostname(id)
  "node#{id}"
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "chef/centos-7.0"

  config.ssh.forward_agent = true
  config.ssh.insert_key = false

  config.vm.provider :virtualbox do |vb|
    vb.gui = false
    vb.memory = 512
    vb.cpus = 1
  end

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "vagrant_playbook.yml"
    ansible.groups = {
      "vagrant" => (1..NUM_HOSTS).collect { |id| hostname(id) }
    }
  end

  NUM_HOSTS.times do |n|
    id = n + 1
    config.vm.define hostname(id), primary: id == 1 do |host|
      host.vm.network :private_network, ip: "10.0.33.1#{id}"
    end
  end
end
这将在
enp0s8
上分配专用地址。但是,它在
enp0s3
10.0.2.15
上分配重复的IP地址。不幸的是,Ansible似乎在
Ansible\u default\u ipv4
中选择了重复的地址,而不是唯一的地址,因此在这些框上运行的服务无法正常工作。那么,有没有办法:

  • 阻止流浪者分配重复IP?(如果有帮助,我正在使用virtualbox提供商)
  • 更改ipv4使用的
    ansible\u default\u接口
  • 我没有想到要寻找的其他解决方案

这是一个您可以同时使用的解决方案:

{{ ansible_all_ipv4_addresses | last }}

如果保证目标框的ipv4地址始终按可预测的顺序排序,则可以正常工作。

它可以正常工作,但风险很大:必须确保在所有环境中都有此功能。没有解决方案可以在vagrant中执行一个shell,该shell可以强制私有网络作为默认接口,但可以让internet连接正常工作?