0

我想做

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

谢谢

4

1 回答 1

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 界面是如何工作的,我通常会执行“gem contents chef | xargs grep whatever”并仔细查看。

于 2012-07-31T21:46:30.450 回答