9

我想知道给定的配方是否已应用于管理给 Chef 的 N 个节点的列表。我怎样才能轻松做到这一点。

4

3 回答 3

6

您可以使用刀轻松完成此操作(刀是您的朋友!)。

要获取所有节点的列表:

knife node list

要获取给定环境中所有节点的列表:

knife node list --environment <ENVIRONMENT>

有了节点列表,您可以使用以下命令显示节点的详细信息:

knife node show <NODE_ID>

刀节点秀,会显示:

Node Name:   
Environment: 
FQDN:        
IP:          
Run List:    
Roles:       
Recipes:     
Platform:    
Tags:   

Recipes:行是已应用于节点的配方列表。

使用刀搜索,您可以搜索一组满足特定条件的节点。使用它,您可以找到应用或不应用特定配方的节点。

于 2013-03-19T22:17:18.897 回答
6

我怀疑你正在寻找这样的东西:

knife search node "recipes:<recipe_name>"

这将适用于显式运行列表以及扩展(隐式)运行列表。

这里有关于刀具搜索的更详细的文档:

http://docs.opscode.com/knife_search.html

于 2013-04-26T20:38:40.787 回答
1

如果您的意思是在食谱中,您可以使用search,例如

ruby_nodes = search(:node, "recipes:ruby_build")

为了解决您的实际问题,您可以执行以下操作:

['192.168.1.2'].include?(ruby_nodes.map{|node| node[:ipaddress]})
于 2013-04-08T02:54:47.880 回答