我正在开发一个项目,我正在使用Vagrant创建机架空间云实例。我正在使用vagrant-rackspace插件来完成它。除了我需要捕获在vagrantfile中创建的新rackspace实例的IP之外,一切都能正常工作。
我需要此IP地址才能将其添加到Ansible库存文件(/ etc / ansible / hosts)
这是我的Vagrantfile:
Vagrant.configure(2) do |config|
config.ssh.private_key_path = "rackspace_rsa"
config.vm.provider :rackspace do |rs|
rs.username = "rackspace-user"
rs.api_key = "a98weqrq3r34ewfadsf43rffa4697cc0036"
rs.admin_password = "Password1"
rs.flavor = /1 GB Performance/
rs.image = /Ubuntu 12.04/
rs.rackspace_region = :dfw
rs.server_name = "ansible_server_1"
rs.public_key_path = "rackspace_rsa.pub"
end
end
创建实例后,我将使用Shell配置来安装机器以安装ansible。安装ansible后,我将更新库存文件以反映新创建的rackspace实例的IP。
答案 0 :(得分:1)
您可以使用Vagrant Host Manager plugin
使用Custom IP Resolver自定义IP解析器为您提供了自己计算每台计算机的IP地址的机会,让您也可以访问正在更新/ etc / hosts的计算机。例如:
config.hostmanager.ip_resolver = proc do |vm, resolving_vm|
if hostname = (vm.ssh_info && vm.ssh_info[:host])
`host #{hostname}`.split("\n").last[/(\d+\.\d+\.\d+\.\d+)/, 1]
end
end
答案 1 :(得分:0)
@FrédéricHenri我将此作为答案添加,因为评论时间过长。
好吧,我的计划是在rackspace(VM-ONE,VM-TWO和VM-THREE)上启动三个虚拟机。
/usr/local/nagios/libexec/check_nrpe -H <IP Address of my_host> -c check_this_process
我在这里遇到了障碍。
我需要创建一个库存文件,其中包含VM-TWO和VM-THREE的IP。
我认为Vagrant提供了一个默认的库存文件,其中包含它创建的两个实例的IP,并且ansible将在运行playbook时使用该库存文件。
vagrant自动生成的库存文件位于.vagrant / provisioners / ansible / inventory / vagrant_ansible_inventory。
所以我原来的问题现在解决了。谢谢。