深入探索Chef对象的加载、编辑与保存
1. 用户对象概述
在Chef中,用户对象由 Chef::User 类表示,该类位于 lib/chef/user.rb 。Chef中的用户与客户端不同,用户对象通常用于在使用开源Chef服务器时允许访问Chef服务器的Web UI,或者在使用托管的企业版Chef时授予特定权限。
虽然这些类没有共同的超类,但它们允许我们使用相同的技术和方法名来访问、操作对象并将其保存到服务器。接下来,我们将探讨从服务器加载对象的两种主要方式。
2. 加载对象:搜索方式
Knife提供的第一种从服务器访问对象的方式是通过搜索查询结果。以下是一个搜索示例代码:
search_object = Chef::Search::Query.new
query = "name:*#{name_args.first}*"
search_object.search('node', query) do |item|
# Do stuff with results
end
当我们运行搜索查询并迭代结果时,集合中的每个结果都是之前定义的类的实例。例如,在上述代码中,由于指定在节点索引中搜索,搜索查询返回的所有结果都是 Chef::Node 对象。
下面是一个完整的演示代码,将其粘贴到 ~/.chef/plugins/knife/awesome_object_demo.rb 中:
<
超级会员免费看
订阅专栏 解锁全文
1462

被折叠的 条评论
为什么被折叠?



