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‘],

}

puppet中anchor的作用

时间: 2024-11-04 12:48:40

puppet中anchor的作用的相关文章

javascript中defer的作用

javascript中defer的作用 <script src="../CGI-bin/delscript.js" defer></script>中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题 加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!defer是脚本程序强大功能中的一个"无名英雄".它告诉浏览器Script段包含了无需立即执行

web.xml的配置中&lt;context-param&gt;配置作用

<context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将&l

java中super的作用

super()的作用 super可以用来访问超类的构造方法和被子类所隐藏的方法,如果子类中有方法与超类中的方法名称和参数相同,则超类中的方法就被隐藏起来,也就是说在子类中重载了父类中的方法. 引用父类中所隐藏的语法格式如下: super(参数列表)或super.方法名(参数列表) 下面通过代码展示一下super的用法: package cn.demo; public class Demo1 { public static void main(String[] args) { SubClass_A

&#39;autocomplete=&quot;off&quot;&#39;在Chrome 中不起作用

加油_linda 'autocomplete="off"'在Chrome 中不起作用 我们在表单输入框中输入信息,提交表单后,当我们再次进入表单页面,双击输入框时,会出现之前提交的信息,这是因为浏览器一般会记录下输入框之前提交表单的信息.这就是这篇文章要讲的autocomplete. AutoComplete控件就是指用户在文本框输入前几个字母或是汉子的时候,该控件就能从存放数据的文本或是数据库里将所有以这些字母开头的数据提升给用户,供用户选择,提供方便. 输入框(input,text

OSEck中odo_vect2pcb的作用

在基于OSEck RTOS的TI DSP中,中断可以作为一个进程存在,在OSEck系统中,进程分为两类:优先级进程,中断进程.当可屏蔽中断(INT4~15)发生后,就会执行相应的中断vector,在vector的代码中会找到注册在该中断号上的进程,然后由OSEck负责调度,进而切换到可屏蔽中断进程.该中断进程与优先级进程类似,同样有PCB(进程控制块),而在odo_vect2pcb数组中就存储了可屏蔽中断号(INT4~15)与中断进程PCB的映射(这就是vect2pcb的含义),odo_vect

宏定义中##和#的作用

解释1 : 定义中##和#的作用内核中有很多的宏定义,在宏定义define中经常看到两个字符串##和#,这里把它的用法做一下说明:1. ####是一个连接符号,用于把参数连在一起例如:> #define FOO(arg) my##arg则> FOO(abc)相当于 myabc2.#:是"字符串化"的意思.出现在宏定义中的#是把跟在后面的参数转换成一个字符串例如:> #define STRCPY(dst, src) strcpy(dst, #src)则> STRC

C/C++中static关键字作用总结

1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件,一个是a.c,另一个是main.c. 1 //a.c 2 char a = 'A'; // global variable 3 void msg() 4 { 5 printf("Hello\n"); 6 } //main.c int main() { extern char a; //

C/C++中static关键字作用总结[转]

1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件,一个是a.c,另一个是main.c. //a.c char a = 'A'; // global variable void msg() { printf("Hello\n"); } //main.c int main() { extern char a; // extern varia

【JAVA学习】struts2 中 Actionsupport 的作用

尊重原创:http://xumiao900.iteye.com/blog/469760 Action 跟 Actionsupport 的区别 当我们在写action的时候,可以实现Action接口,也可以继承Actionsupport这个类.到底这两个有什么区别呢? Action接口有: public static final java.lang.String SUCCESS = "success"; public static final java.lang.String NONE