Puppet 资源排序同步问题“->”不起作用?
我遇到过非常奇怪的行为,这与我所学到的是背道而驰的,教程中说的等等。所以如果有人能解释为什么会发生这种情况,我会很高兴。 我有一个角色模块,它由配置文件的组合角色配置文件模式组成。我的职责包括:Puppet 资源排序同步问题“->”不起作用?,puppet,Puppet,我遇到过非常奇怪的行为,这与我所学到的是背道而驰的,教程中说的等等。所以如果有人能解释为什么会发生这种情况,我会很高兴。 我有一个角色模块,它由配置文件的组合角色配置文件模式组成。我的职责包括: class role::lab_prg_c2_dn inherits lab_prg_c2 { class { 'profile::cluster_data_node': namenode_fqdn => $role::lab_prg_c2::namen
class role::lab_prg_c2_dn inherits lab_prg_c2 {
class { 'profile::cluster_data_node':
namenode_fqdn => $role::lab_prg_c2::namenode_fqdn,
secondarynamenode_fqdn => $role::lab_prg_c2::secondarynamenode_fqdn,
}
->
class{'bigdatasolution':}
}
第一类安装技术,第二类安装基于技术之上的组件和项目。因此需要先安装技术,这就是->依赖的原因。然而,在我看来,这似乎并不正确。因为类“bigdatasolution”中的组件安装在类概要文件::cluster_data_节点完成之前的某个位置。
我尝试使用require=>Class['profile::cluster\u data\u node'],但这没有任何区别!
类{'bigdatasolution':}的内容:
class bigdatasolution {
$hdfs_default_conf = '/usr/local/hadoop.hdfs.conf'
$hbase_default_conf = '/usr/local/hadoop.hbase.conf'
include symlinks
include bdjar
}
符号链接-为安装在class profile::cluster_data_节点中的配置创建符号链接,并且不直接进行管理-它将在实际安装指定的包时显示
bdjar—将我们的jar添加到技术库中,以便内容如下:
class bigdatasolution::bdjar {
file { "/usr/lib/hadoop/lib/bigdata-properties.jar":
ensure => present,
mode => 0644,
group => 'root',
owner => 'root',
source => "puppet:///modules/bigdatasolution/bigdata-properties.jar"
}
}
我甚至试着把require=>technologycalClass放在这里,但也没用
有人能帮我理解出了什么问题,以及应该如何妥善解决吗?
我使用puppet 3,并明确指定了顺序-因此不应该发生puppet设置的任意顺序
谢谢如果您的“profile::cluster\u data\u node”类包含“其他类/模块”,则它们与“bigdatasolution”类没有依赖关系排序 我看到您实际上包含了符号链接和bdjar。基本上,你想在puppet中拥有的每一条命令,你都需要明确地写出来 在这里,您应该将include语句替换为require,这样类cluster_data_节点就需要完成其他两个模块,然后才能说它已经完成了。Include是在puppet中导入东西的一种非常失败的方式,在我看来,最好避免它,而是使用显式require语句
TL;DR:包含的模块没有传递顺序;所需的模块可以。在class profile::cluster_data_节点完成之前,您认为来自class bigdatasolution的组件安装在某处是什么意思。您的代码应该在“profile::cluster\u data\u node”之后安装“bigdatasolution”,并在需要和包含的所有资源之后安装,但不能在“profile::cluster\u data\u node”通知的资源之后安装,这就是“bigdatasolution”应该在“profile::cluster_data_node”及其内容之后同步的意图,但这不是当前正在发生的事情。没有定义明确的通知。这就是为什么我在这里张贴,因为我不明白为什么行为不是我所期望的!没有什么比遏制更好的了?例如,bigdata类包括bdjar和符号链接。由于我想同步后一个模块,所以我设置了我想首先发生的模块上所需的bigdata。该模块包含其他资源。如果这真的不起作用,那么什么是避免模块内部深层模块间依赖性的最佳方法,因为我认为这是维护的一个潜在问题。根据我的经验,未来避免这种依赖的最佳方法是永远不要使用include。请始终记住,puppet应用资源的方式是将它们映射为一个有向无环图DAG,因此您应该有一个像样的心智模型,您也可以输出实际的图,说明您的模型如何与其他模型交互。当然不是很理想,但另一种选择是使用锚定模式。编辑:木偶记录这些东西