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,因此您应该有一个像样的心智模型,您也可以输出实际的图,说明您的模型如何与其他模型交互。当然不是很理想,但另一种选择是使用锚定模式。编辑:木偶记录这些东西