【问题标题】:Chef: How to display nodes IP AddressChef:如何显示节点 IP 地址
【发布时间】:2018-03-11 02:18:56
【问题描述】:
  1. 我注意到有 2 个命令可用于显示节点。但是,它只显示主机名而不显示 IP 地址。 如果有办法在每个节点上显示 IP 地址,请告诉我。

  2. 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>

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    最简单的选择是使用knife exec:

    knife exec -E 'nodes.all.each {|n| puts n["ipaddress"] }'
    

    【讨论】:

      【解决方案2】:

      如果要检索 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;

      【讨论】:

        【解决方案3】:

        使用 Chef 提供的 ohai 工具可以轻松完成。因此,如果您在命令行中键入 ohai,您将能够看到主机 IP 地址的 /grep 以及其他属性。

        第二个问题的答案如下:

        节点 = 机器

        Client = 针对 chef-server 进行身份验证的用户

        节点将运行您的食谱 客户端具有访问您的厨师服务器的权限级别

        所以应该是这样的:

        当您的主机尝试连接到您的厨师服务器时,它会说您好,我是客户端 X,我可以获取节点 Y 的运行列表吗?

        【讨论】:

          【解决方案4】:

          您可以使用带有一些过滤器的搜索选项来限制输出并使用 jq 解析 json 输出:

          刀搜索节点“Environment:prod*” -F json | jq -r '.rows[]|"|(.name)|(.automatic.ipaddress)|"'

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-04-18
            • 1970-01-01
            相关资源
            最近更新 更多