我正在尝试使用Chef来管理新的虚拟机.我正在使用专用的Chef服务器,并从一个单独的工作站vm完成所有这些工作.
我目前正在这样做的方法是克隆一个基本vm映像,然后使用knife bootstrap来安装Chef并使vm处于一致状态.
我可以为vm指定环境或运行列表; 我可以覆盖我的环境中的某些设置,例如,我在测试环境的"覆盖"块中设置了厨师 - 客户端间隔,以便在我测试时每60次运行客户端,所以我不必手动运行厨师 -客户每次.
例如,我的工作流程如下:
克隆vm模板并启动vm
手动设置主机名(更新/ etc/hostname和/ etc/hosts)并重新启动
使用初始配方引导节点
刀bootstrap chef-test1 -r'配方[ntp],食谱[chef-client]'
编辑节点以反映新环境
我遇到的问题是设置每节点属性.我想使用hostname cookbook来设置节点的主机名,如果我将其设置为某个角色,那么每个服务器都必须创建一个新角色.但是当我尝试引导并包含此角色时,我收到一个错误:
chef-test1 * log[Please set the set_fqdn attribute to desired hostname] action write[2013-12-09T16:26:56-07:00] WARN: Please set the set_fqdn attribute to desired hostname
当我没有那个配方的bootstrap并尝试编辑节点并设置"set_fqdn"属性时,我无法保存属性,例如这个json:
{ "name": "chef-test1", "set_fqdn": "chef-test1.local.fqdn", "chef_environment": "test-dev1", "normal": { "tags": [ ] }, "run_list": [ "recipe[ntp]", "recipe[chef-client]", "recipe[hostname]" ] }
当我退出编辑器时,刀告诉我:
Node not updated, skipping node save
我试图在厨师gui中编辑这个属性,属性不会保存.
我找到了这个在/etc/chef/chef.json中创建json的人,基本上按照我的预期行事,但我不确定/etc/chef/chef.json如何发挥作用(为每个新的更新它)节点?我不是在使用大厨独唱所以也许这就是我的困惑所在.)
根据此电子邮件线程,无法使用刀节点编辑覆盖默认属性,但"set_fqdn"不是默认值.我想避免为每个节点创建一个角色,我想我可以使用hostname cookbook来减轻手动设置主机名的需要,例如:
刀具bootstrap saucy64 -r'配方[ntp],配方[chef-client],配方[主机名]' - json'"{set_fqdn":"chef-test1.local.tld","chef_client":{"interval" :"600"}'
刀引导程序fedora19 -r'recipe [ntp],食谱[chef-client],食谱[hostname]' - json'"{set_fqdn":"chef-test2.local.tld","chef_client":{"interval" :"60"}'
我很感激你的帮助.