![](/img/trans.png)
[英]Relationship between different hbase-site.xml for a Cloudera install
[英]Puppet: relationship between resources on different nodes
我知道我们可以指定资源之间的关系,从而确定部署顺序。 但是有可能在Puppet中不同节点上的资源之间创建关系吗?
例如,我在节点A中有apache Web服务器,在节点B中有mysql服务器。我想先启动mysql,然后再启动apache web服务器。 我该如何用人偶语言表达?
我尝试了以下代码:
node ‘host1’ {
@@service { ‘mysql’:
ensure => running,
tag => ‘host1-mysql’,
}
}
node ‘host2’ {
service { ‘apache2’:
ensure => running,
}
Service<<| tag == ‘host1-mysql’ |>> -> Service[‘apache2’]
}
但这没有用-产生了编译错误。 还有其他解决方案吗?
在分布式“人偶”设置中,不能保证申请顺序。
木偶不跨多个节点进行编排 。 充其量,您的更改将在计算机上多次应用, 最后收敛到所需的状态 。
依赖项仅在同一节点上工作。 实际上,您可以获取由其他节点导出的资源的值(例如,配置数据库的防火墙以允许Web服务器执行sql),或者通过hiera作弊以了解谁具有“ db”和“ app”角色。
对于编排,请参见mcollective ,capistrano, ansible ,...之类的工具。
对puppet node dependency
进行一些谷歌搜索会发现有关导出资源的一些链接,这似乎是可行的方法。
根据http://docs.puppetlabs.com/puppet/latest/reference/lang_exported.html
导出的资源允许节点彼此共享信息。
基本上,您将资源导出到其所属的节点中,并在需要该资源的节点中进行收集,并照常使用依赖项箭头。
MCollective似乎也可以替代,但似乎是一个全新的框架。
您不能仅使用Puppet来做到这一点。 从概念上讲,使用Puppet可以生成节点配置的静态描述,然后将其应用。 导出的资源系统很方便,但是并没有从根本上改变Puppet的工作方式(您可以通过注意到您可以对资源进行硬编码来说服自己,这将产生完全相同的效果)。
因此,您需要另一种业务流程系统,并且不应在服务上设置enable => running
。
不幸的是,我没有很好的建议:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.