yaomint 发表于 2015-9-16 10:36:26

puppet中anchor的作用

  anchor出现背景:Puppet Forge是一个网上的module仓库,许多人写的puppet module会传上去,供大家下载使用。大家下载了一个module可以直接使用,不应该再来改动里面manifests。
  但是在puppet2.6版本,当一个class声明另外一个class时,被声明的class的资源将不会被外部的这个类所包含,这使得我们不可能通过一些简单的小class文件组成一个复杂功能的module。为了解决这个问题,引入了anchor。
  具体事例请看:http://projects.puppetlabs.com/projects/puppet/wiki/Anchor_Pattern
  可见anchor是为了将被引入的class的资源包含进来而存在的。
  在使用anchor之前必须确保puppetlabs/stdlib module已经安装好了。在使用anchor时注意:
  l被包含的class必须在两个唯一命名的anchor之间
  l任何被包含的class必须确定它与anchor之间的关系如:
  anchor { 'ntp_first': } -> Class['ntp::service'] -> anchor { 'ntp_last': }
  
  在puppet3.4.0之后的版本里有contain方法来替代anchor。
  class ntp {
  file { '/etc/ntp.conf':
  ...
  require => Package['ntp'],
  notify=> Class['ntp::service'],
  }
  contain ntp::service
  package { 'ntp':
  ...
  }
  }
  
  include ntp
  exec { '/usr/local/bin/update_custom_timestamps.sh':
  require => Class['ntp'],
  }
  
页: [1]
查看完整版本: puppet中anchor的作用