错误重复声明已存在Puppet

时间:2016-01-29 23:29:11

标签: puppet puppet-enterprise

我在mon.pp文件中声明了这个

ObservableCollection

在另一个不同的模块中> azure_limits_sa.pp我正在使用相同的东西

  $pem_file_path = "/etc/ssl/private/${::environment}.pem"
  $defaults = hiera_hash('defaults')
  $subscription_id = $defaults['subscription_id']
  $pem_file_content = hiera('nb_monitoring::azure_limits_sa::pem_file_content')
  file { $pem_file_path:
  ensure  => 'present',
  owner   => 'root',
  group   => 'root',
  mode    => '0600',
  content => $pem_file_content
  }
  }

当我运行puppet时,我收到此错误: # From ${::env}/mon.yaml $pem_file_content = hiera('nb_monitoring::azure_limits_sa::pem_file_content') file { $pem_file_path: ensure => 'present', owner => 'root', group => 'root', mode => '0600', content => $pem_file_content }

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

最好的方法是使用单独的文件资源类进行重构,这样就不会在同一主机上的两个类中使用相同的资源。

或者,您可以在两个类中使用virtual resources

 @file { $pem_file_path:
  ensure  => 'present',
  owner   => 'root',
  group   => 'root',
  mode    => '0600',
  content => $pem_file_content
 }
 realize File[$pem_file_path]

答案 1 :(得分:1)

这在某种程度上违背了傀儡的本性。为什么要在两个不同的位置管理相同的文件并将其全部应用于同一节点?如果我是正确的,那么您在两个木偶清单中从Hiera获取相同的数据并将它们传递给文件资源。因此,可以安全地删除一个,或者你可以在第三个木偶清单中将它解耦,这会在文件(〜>)发生变化时将这些变化应用回文件