【发布时间】:2017-05-04 20:39:00
【问题描述】:
我正在尝试将 Vagrant 和 Chef-Client 配置用于我正在处理的任务。我希望能够在使用 vagrant up 时生成唯一名称,将实例加入 Chef 服务器,然后在完成后删除节点。我大部分时间都在工作;当我运行 Chef Destroy 时,我被卡在从 Chef 服务器中自动删除节点的问题上。我需要找到一种方法来缓存名称并稍后检索它,仅在vagrant up 处运行主机名配置,或者一些我还没有想到的选项。
我的 vagrantfile 的一个 sn-p 如下:
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 知道稍后将其删除?
【问题讨论】:
标签: vagrant chef-infra vagrantfile vagrant-provision