我正在尝试使用流浪汉和厨师客户端配置为我正在处理的任务。我希望能够使用vagrant up
生成的唯一名称,将实例加入Chef Server,然后在完成时删除该节点。我有这个主要工作;当我运行Chef Destroy时,我被困在厨师服务器的自动删除节点上。我需要找到一种缓存名称并稍后检索的方法,只需运行vagrant up
的主机名配置,或者我还没有弄清楚的一些选项。流浪汉:设置主机名一旦在流浪汉
我vagrantfile的一个片段如下:
Vagrant.configure('2') do |config|
config.vm.box = 'centos/6'
config.vm.hostname = "vagrant-#{SecureRandom.hex(2)}-el6.dev.local"
config.vm.provision 'chef_client' do |chef|
chef.chef_server_url = 'https://chef.dev.local/organizations/foo'
chef.add_role 'build_vm'
chef.node_name = config.vm.hostname
chef.delete_node = true
chef.delete_client = true
end
end
当这个运行在vagrant up
主机名设置为vagrant-229b-el6.dev.local
但破坏它试图摧毁vagrant-3a1c-el6.dev.local
。很明显,在每次运行中都会运行config.vm.hostname
,所以合乎逻辑的是不要让这种情况发生。我需要做什么才能让vagrant up
创建的主机名持续存在,以便Chef知道稍后将其删除?
我想你可以只依赖于流浪者产生的'id'文件时,它会创建虚拟机,这是VirtualBox的/ vmware VM Id,所以你不需要维护另一个文件。 –
我很久没有和流浪者一起工作过。如果vagrant将主机名本身保存到某个文件中,那么使用该文件肯定会是更清晰的解决方案。 –
好吧,需要详细说明 - 不,它不会保存主机名本身,但vagrant维护一个文件与它创建的虚拟机的ID(在.vagrant文件夹下的部分文件),所以我会看到OP是如果这个文件存在,这意味着虚拟机已经设置并且主机名已被设置,则不运行'config.vm.hostname ='vagrant - #{SecureRandom.hex(2)} - el6.dev.local''行 –