我希望
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
由于
答案 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”并且好好看看。