乡亲
目前我们有一个自定义的部署工具,我们正在评估用像puppet这样的非私有的东西来取代它。
目前它为我们做的主要事情之一是标记化。 例如,在tomcat部署中的一个server.xml文件中,我们可能会使用如下所示的一行来部署一个名为server.xml.tokenzenized的文件
<Ajp12Connector port="@@TOMCAT.AJP.PORT@@" ajpidFile="conf/ajp12_2.id" />
然后有一个tokens.xml文件,将有一个像
<TOKEN NAME='TOMCAT.AJP.PORT' value = '8080/>
我们的部署过程然后扫描server.xml.tokenized,并replace令牌,写出文件到server.xml。
木偶可以为任意文件做这个 – 或者像tomcat这样的东西,我需要下载一个能够理解tomcat如何工作的插件吗?
其次,从我迄今为止所做的阅读来看,似乎大多数人都使用木偶代理从主人那里检索文件 – 这是否应该是这种情况 – 你可以有一个使用木偶build模和基础设施的脚本,然后login到主机来部署软件? – 理由是,由于各种原因,我们对我们环境中的代理人有偏见。
干杯
对于第一个问题:是的, puppet可以使用与hiera和/或hiera耦合的模板来hiera 。 这个过程是使用模板文件从软件中抽象出来的。
例如,你可以有一个像这样的节的server.xml模板:
<Connector address="<%= @ipaddress_eth0 %>" executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<%= @ipaddress_eth0 %>部分就是你现在称之为“令牌”的部分,puppet知道如何用facterreplace给定的主机:
# facter ipaddress_eth0 10.0.0.2
如果你需要的话,你也可以自定义事实 。
分层数据主题稍微复杂一些,需要您阅读一些文档以了解它如何帮助您部署。 这是一个非常好的介绍其可能性。 基本上,它的目的是提供分离代码和数据(您的“令牌”)的方法,并以熟悉,易于维护的格式(YAML或JSON)存储数据。 上面描述的用例(为tomcat定义一个自定义端口)是hiera的经典使用模式:
在tomcat模块中,你会有这样的东西:
class tomcat ( $port ){ #rest of the module }
在一个模板(比如server.xml.erb )中:
<Ajp12Connector port="<%= port %>" ajpidFile="conf/ajp12_2.id" />
和你的分层数据匹配的代码部分看起来像这样:
tomcat::port = 8080
对于第二个问题,答案在一定程度上也是肯定的。 您可以使用木偶集体 (实际上是木偶报价的一部分),将更改推向无代理的服务器农场。 你需要安装客户端(不完全一样,因为这些客户端是被动的,不像puppet代理商,他们主动向puppet puppetmaster索取他们的目录 )。 同样,您需要阅读文档以更好地了解其function的细节。