作为平台设置流程的一部分,我们使用python软件包在云中的计算机集群上安装各种软件包。

我们有以下情形:

在许多软件中,

  • 是我们的软件之一是Ambari(帮助管理hadoop平台)。
  • 它的工作方式如下-向1个ambari服务器报告的'n'个群集计算机的数量。
  • 对于每台群集计算机要进行报告的
  • ,我们必须在每台群集计算机上安装ambari-agent,并使用应该报告并启动ambari-agent的ambari服务器修改其属性文件。

  • 我们能做什么-
    在独立厨师食谱的帮助下,我们成功地在群集计算机中分别安装了ambari服务器和ambari代理。

    我们无法做的-
    我们如何修改每台计算机的ambari-agent属性文件,使其指向我们的ambari服务器IP。总的来说,作为厨师编排的一部分,连接基于集群的软件的一种优雅方法是什么?

    注意:。 ambari-server是动态创建的,因此在运行时会获取其IP。

    是否可以?是否有上述问题的替代方案?

    谢谢

    最佳答案

    这是Chef-serversearch的方案。

    您将必须更改安装ambari代理的配方才能动态获取ambari服务器的IP。

    首先,您运行配置ambari服务器的配方。当Chef在此处成功运行后,它将在Chef服务器上填充有关该节点的一些信息,包括应用于该特定节点的配方和角色。您可以转到Chef-server并检查节点属性,尤其是“recipes”属性。

    现在更改您的ambari代理配方。我不知道代理的配置文件到底是什么样子,但是我们只对设置主服务器IP的一行感兴趣。

    创建配置文件的模板并将其添加到菜谱。将已编码的主IP值替换为<%= @master_ip %>
    更改ambari代理配方,使其正确设置此值:

    # search for the server node. I expect server node was configured with
    # ambari::server recipe. If not, change it to the appropriate value and
    # don't fortget to escape colons.
    ambari_server_node = search( :node, 'recipes:ambari\:\:server' )
    
    # now create the configuration file on ambari agent node from
    # the previously created template and pass the value for the @master_ip
    # variable
    template '/right/path/on/target/node/config.file' do
      [...]
      variables( :master_ip => ambari_server_node['ipaddress'] )
    end
    

    关于python - 我们如何使用Chef连接基于集群的软件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31241531/

    10-15 21:57