我注意到有2个命令可用于显示节点。但是,它仅显示主机名而不显示IP地址。 如果有办法在每个节点上显示IP地址,请告诉我。
knife node list
和knife client list
命令之间有什么区别?输出看起来很相似。
刀节点列表
C:\chef\cookbooks>knife node list
cheftestnode1
cheftestnode2
cheftestnode3
C:\chef\cookbooks>
刀客户列表
C:\chef\cookbooks>knife client list
admin-validator
cheftestnode1
cheftestnode2
cheftestnode3
C:\chef\cookbooks>
我希望看到IP地址格式的输出而不是像这样的主机名。这可能吗?
C:\chef\cookbooks>knife node list
10.1.1.1
10.1.1.2
10.1.1.3
C:\chef\cookbooks>
或者像这样。会不可能?
C:\chef\cookbooks>knife node list
cheftestnode1 - 10.1.1.1
cheftestnode2 - 10.1.1.2
cheftestnode3 - 10.1.1.3
C:\chef\cookbooks>
答案 0 :(得分:3)
最简单的选择是使用knife exec
:
knife exec -E 'nodes.all.each {|n| puts n["ipaddress"] }'
答案 1 :(得分:1)
使用Chef提供的工具 ohai ,可以轻松安静地完成。因此,如果您在命令行上键入ohai,您将能够看到/ grep主机IP地址以及其他属性。
第二个问题的答案如下:
Node = Machine
客户端=针对chef-server
进行身份验证的用户节点 将运行您的食谱 客户端 具有访问厨师服务器的权限级别
所以它会是这样的:
当您的主机尝试连接到您的主厨服务器时,它会说Hello我是客户端X,我可以获得节点Y的运行列表吗?
答案 2 :(得分:1)
如果要检索Chef节点的IP,要回答问题#2,请执行以下操作
knife node show <your node name> -a ipaddress
要查看可以使用-a标志返回的所有信息的完整列表,请执行以下操作
knife node show <your node name> -l
如果要检索一组节点的所有IP,则构造它们的列表并在循环中迭代它。获取每个IP地址并输出到控制台的一个示例:
knife node list > node_list.txt
while read p; do eval "knife node show ${p} -a ipaddress"; done < node_list.txt;