【问题标题】:Get IP address of node returned by chef search in recipe获取recipe中厨师搜索返回的节点IP地址
【发布时间】:2012-11-12 14:19:13
【问题描述】:

如何获取厨师食谱(红宝石)中节点搜索返回的 IP 地址。

dbnodes = search(:node, "role:Db")
Chef::Log.info(dbnodes.first["ipaddress"]) # nil

几周前,此代码从搜索 API 返回了第一个实例的 IP。

版本:厨师:10.14.2

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    我猜你是 Ruby 的新手。如果是,欢迎!

    Chef search() 函数返回一个 Chef 节点数组,您正在使用 first 方法获取该数组的头部。要访问其他节点的 IP 地址,请使用常规数组运算符:

    dbnodes = search(:node, "role:Db")
    dbnodes.each do |node|
      Chef::Log.info("#{node["name"]} has IP address #{node["ipaddress"]}")
    end
    

    这应该为您提供所需的信息。

    【讨论】:

    • 我认为“这段代码从搜索 API 返回了 first 实例的 IP”,Matej 的意思完全一样。
    • 因此,为了获取节点的 ip,我们必须分配一些角色或环境作为模式来搜索节点,对吗?假设我没有分配任何角色或环境,只是配置了 3 个带有服务器的客户端,那么有什么方法可以获取这些客户端的 ip。
    • 您可以使用不同的搜索命令获取所有节点的列表。试试search(:node, "*:*")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2017-07-02
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多