我遇到了非常奇怪的行为,这违背了我所学到的,教程说等等。所以如果有人能解释为什么会这样,我会很高兴。 我有一个角色模块,它由配置文件的组合(角色配置文件模式)组成。我的角色包括:
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'的组件安装在类profile :: cluster_data_node完成之前的某处。 我试着用require => Class ['profile :: cluster_data_node']但这没有任何区别! class {'bigdatasolution':}:
的内容 class bigdatasolution {
$hdfs_default_conf = '/usr/local/hadoop.hdfs.conf'
$hbase_default_conf = '/usr/local/hadoop.hbase.conf'
include symlinks
include bdjar
}
符号链接 - 为类profile :: cluster_data_node中安装的配置创建符号链接,并且不直接管理 - 它将在实际指定的包安装时显示。
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 => “techcalClass”在这里,但这也无济于事。
有人可以帮我理解什么是错的,应该如何妥善解决? 我使用木偶3和命令是明确指定的 - 因此木偶不应该发生任意排序。
由于
答案 0 :(得分:0)
如果您的' profile :: cluster_data_node'课程包括'其他类/模块,他们将没有依赖于' bigdatasolution'类。
我看到你确实包含了符号链接和bdjar。基本上你想要在木偶中订购的每一个订单,都需要明确写出来。
在这里你应该用require替换include语句,这样类cluster_data_node将需要完成其他两个模块才能完成。包含是一种非常迷失的方式来输入木偶中的东西,我认为最好只是避免它,而是使用明确的require语句。
TL; DR:包含的模块没有传递顺序;所需的模块。