我已获得以下Vagrantfile
:
# -*- 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
上分配重复的IP地址:10.0.2.15
。不幸的是,Ansible似乎在ansible_default_ipv4
而不是唯一的地址中选择了重复的地址,因此在这些盒子上运行的服务不能按预期工作。那么,有没有办法:
ansible_default_ipv4
使用?答案 0 :(得分:2)
这是您可以在此期间使用的解决方法:
{{ ansible_all_ipv4_addresses | last }}
假设它保证您的目标框的ipv4地址将始终以可预测的顺序排序,将会有效。