【问题标题】:Setting up selenium grid 2 using chef cookbook使用厨师食谱设置硒网格2
【发布时间】:2013-11-23 00:09:59
【问题描述】:

我正在尝试使用厨师食谱来安装硒网格。

我有两个食谱 1) hub.rb - 安装集线器 2) node.rb - 向集线器注册节点。

在 hub.rb 中,我只需下载 selenium 网格 java 文件并运行命令来启动集线器。

java –jar selenium-server-standalone-2.30.0.jar –role hub

在特定的虚拟机(或节点)中启动集线器

在 node.rb 中,我需要使用命令将节点注册到上面创建的集线器

 java –jar selenium-server-standalone-2.30.0.jar –role node  -hub http://ipofhub:port/grid/register

现在的问题是我如何动态获取集线器的 Ip 以在节点配方中提供。

我可以在 hub.rb 中将 node[ipaddress] 分配给一个变量 hub_ip 并在 node.rb 中使用它吗?

在 hub.rb 中

hub_ip = node[ipaddress]

然后在node.rb中

    java –jar selenium-server-standalone-2.30.0.jar –role node  -hub http://#{hub_ip}:port/grid/register    

我不确定上述是否可行,因为我还没有测试过(等待 vms 测试出来)但是还有其他方法吗?

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

    是的,这是理想的方式。您需要修复的唯一语法项是:

    hub_ip = node[:ipaddress]
    

    或者你可以这样做:

    hub_url = "http://" + node[:ipaddress] + ":port/grid/register"
    execute "adding node" do
       command "java –jar selenium-server-standalone-2.30.0.jar –role node  -hub #{hub_url}"
    end 
    

    【讨论】:

    • 谢谢。语法是一个错字。我想问的是关于配方中变量的范围。 hub_ip 在 hub.rb 中定义,我也将在 node.rb 中使用它。 hub.rb 和 node.rb 都是属于同一本食谱的食谱。 Hub.rb 将运行一次以设置集线器,之后 node.rb 将根据需要运行多次,并且每次 hub_ip 变量应在 node.rb 中可用。
    • 或者我可以在 node.rb 中做这样的事情吗(我有一个 sg 角色) hubnodes = search(:node, "role:sg") hub_ip = hubnodes.first["ipaddress"]
    • 如果您真的想在配方之间以“全局”方式使用变量。我建议将其添加到您的属性文件中,以便所有食谱都可以访问。 docs.opscode.com/essentials_cookbook_attribute_files.html 没有必要像你的搜索命令那样复杂化
    • 我正在使用属性,但如果我在属性文件中说 ip = node[:ipaddress]。现在,我将运行 hub.rb,它将在 1.1.1.1 中创建 selenium 网格服务器或集线器。如果我也在同一个 1.1.1.1 中运行 node.rb,那么它会起作用,但是如果我想在 2.2.2.2 中创建一个节点,那么如果我使用该属性,它不会指向 hub = 2.2.2.2 而不是 1.1.1.1 ?基本上我想要一个变量来存储集线器的 ip,然后通过仅调用 node.rb 配方在许多节点中使用它。
    • node[:ipaddress] 将使用您正在运行 chef-client 的服务器的 IP。所以你可以切换到你想要的主机。另一种选择是创建一个属性覆盖文件并将 IP 覆盖为您需要的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2019-01-29
    • 2021-11-01
    相关资源
    最近更新 更多