Chef:如何显示节点IP地址

时间:2017-09-29 08:03:10

标签: chef

  1. 我注意到有2个命令可用于显示节点。但是,它仅显示主机名而不显示IP地址。 如果有办法在每个节点上显示IP地址,请告诉我。

  2. knife node listknife client list命令之间有什么区别?输出看起来很相似。

  3. 刀节点列表

    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>
    

3 个答案:

答案 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;