作为平台设置流程的一部分,我们使用python软件包在云中的计算机集群上安装各种软件包。
我们有以下情形:
在许多软件中,
我们能做什么-
在独立厨师食谱的帮助下,我们成功地在群集计算机中分别安装了ambari服务器和ambari代理。
我们无法做的-
我们如何修改每台计算机的ambari-agent属性文件,使其指向我们的ambari服务器IP。总的来说,作为厨师编排的一部分,连接基于集群的软件的一种优雅方法是什么?
注意:。 ambari-server是动态创建的,因此在运行时会获取其IP。
是否可以?是否有上述问题的替代方案?
谢谢
最佳答案
这是Chef-server和search的方案。
您将必须更改安装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/