通过代码在厨师中添加角色

时间:2012-07-30 20:15:05

标签: chef

我希望

knife role create <role-name> -y

通过ruby代码。我不想写另一个刀插件。我能够打印整个角色列表(见下面的代码)。但是现在我如何在角色中添加一个没有配方的简单角色?

require 'rubygems'
require 'chef' 

Chef::Config[:node_name]='client_name'
Chef::Config[:client_key]='path to client cert.pem'
Chef::Config[:chef_server_url]="http://ur chef server:4000"    


puts Chef::Role.list

由于

1 个答案:

答案 0 :(得分:2)

通过run_list属性访问节点的运行列表。首先,您必须从Chef服务器加载节点。以下代码将role[foo]添加到现有节点n

require 'rubygems'
require 'chef' 

Chef::Config[:node_name]='client_name'
Chef::Config[:client_key]='path to client cert.pem'
Chef::Config[:chef_server_url]="http://ur chef server:4000"    

node = Chef::Node.load('n')
node.run_list << "role[foo]"
node.save

为了帮助弄清楚Chef Ruby界面是如何工作的,我通常会做“宝石内容厨师| xargs grep what”并且好好看看。