设为首页 收藏本站
查看: 1936|回复: 0

[经验分享] puppet模块汇总

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-4-20 11:48:54 | 显示全部楼层 |阅读模式
  在磁盘上,一个模块对应一个特殊的目录结构:

  • MODULE_NAME

    • manifests
    • files
    • templates
    • lib
    • tests
    • spec

  例如,一个名为"my_module"的模块,它的目录结构应该是:

  • my_module - 顶层目录,对应到模块名称。

    • manifests/ - 模块所有的清单。

      • init.pp - 类定义。该文件中的类名必须对应到模块名称。
      • other_class.pp - 类定义。该文件中的类名必须是my_module::other_class。
      • my_defined_type.pp - 函数定义。该文件中的函数名必须是my_module::my_defined_type。
      • implementation/ - 清单子目录。

        • foo.pp - 类定义。该文件中的类名必须是my_module::implementation::foo。
        • bar.pp - 类定义。该文件中的类别必须是my_module::implementation::bar。


    • files/ - 静态文件目录,能够被被代理节点下载。

      • service.conf - 该文件对应的URL是puppet://modules/my_module/service.conf。

    • lib/ - 插件目录,例如自定义的行为和自定义的资源类型。查阅"使用插件"获取更多的细节。
    • templates/ - 清单中用到的模板文件目录。查阅"模版"获取更多的细节。

      • component.erp - 在清单中可以使用template('my_module/component.erp')的方式使用该模版。

    • tests/ - 讲述如何使用类和函数的一些实例。

      • init.pp
      • other_class.pp - 清单目录中的每个类和函数在实例目录中都可以有对应的实例。

    • spec/ - 讲述如何使用插件的一些实例。

  manifests目录中的每个清单文件都只能定义一个类或函数,文件名称要与其中定义的类或函数名称对应。
init.pp是特殊的清单文件,包含的类名同模块名。其它清单文件包含的类或函数要满足下面的规则:

模块名::其它目录::(如果存在)文件名(不包含后缀)
my_module:: other_class
my_module::implementation::foo
 

 


  • my_module::other_class必须在my_module/manifests/other_class.pp文件中定义。
  • my_module::implementation::foo必须在my_module/manifests/implementation/foo.pp定义。
  类名中间的双冒号(::)被称为命名空间分割符(namespace separator)
  
  模块名只能包含小写字母、数字和下划线,而且必须以小写字母开头,也就是必须满足正则表达式[a-z][a-z0-9_]*。类名在相同限制上再加上不能包含命名空间分隔符。一些特殊的名称是不允许的,例如:

  • main
  • settings
  模块中的静态文件都可以通过file资源类型的source属性访问。每个静态文件都可以映射到一个URL
协议三个斜杠符号“modules”/模块名/文件名
puppet:///modules/my_module/service.conf
  例如,puppet:///modules/my_module/service.conf对应的文件是my_module/files/service.conf。
  每个ERB模版文件(查阅"模版"获取更多信息)都可以通过template函数被输出。输出的内容是一个简单的字符串,通常作为file资源类型的content属性,或者保存到一个变量。
  template函数按照下面的方式定位模版文件:
template函数(‘模块名/模版名’)
template('my_module/component.erb')
  例如,template('my_module/component.erb')对应的文件是my_module/templates/component.erb。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366853-1-1.html 上篇帖子: puppet:编译安装+使用方法 下篇帖子: 安装并试用puppet
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表