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

[经验分享] Puppet学习之模板(6)

[复制链接]

尚未签到

发表于 2015-11-27 12:09:35 | 显示全部楼层 |阅读模式
1.puppet的类1.1Tips:

  • puppet 2.7之后,基类必须无参。
  • 子类和父类有相同的属性,如果在子类中再次赋值,将覆盖掉原有的属性值。
  • 如果想取消某个属性的值,可以使用undef覆盖原有的值。
  • 可以通过require对资源增加属性。
  例子:  class :: foo inherits from nginx {service { 'nginx': require +> [File['nginx.conf'], File['foo.conf']],}}通过require+参数追加后,在子类nginx::foo中所定义的service资源需要依赖两个文件才能启动,其他参数默认继承父类。
1.2 参数化类puppet中不存在重载,如果一个类被声明多次,并且存在相互矛盾的参数值,puppet会编译失败。需要使用Hiera这个参数自动化查询工具参数化类,是指通过动态变量的查找将参数传递到类。可以在节点范围内设置一些变量,进行类的声明,并将变量分配给父范围,这个类就会查找所需的信息并进行应用。参数化类缺点如下:所有变量将应用到全局命名空间。(1)参数化类定义 class nginx ($package, $port) {.........}(2)参数化类的使用局部变量$package和$port在类中的定义可以作为参数名,也可以在作用域内使用。#作为参数名class nginx ($package, $port) {   package {$package: ensure => present}
#在类作用域中引用file {'nginx.conf':port => $port,ensure => tile,  }}(3)参数默认值class nginx ($package, $port = '80') {.......}
(4)声明参数化类class {'nginx':}或者class {'nginx': $package => 'nginx', $port => '80'}

2.模板2.1 Puppet模板主要是基于ERB。(1)标签除打上标签的内容外,ERB模板中的内容都会原封不动的传送回puppet<% document = &quot;&quot; %>(2)打印表达式注意与标签的区别<% = sectionheader %>或者environment = <% = gitversion [0,5]%>
(3)注释<%# this is comment. %>
(4)禁止换行<% document &#43;= thisline-%>
2.2ERB模板语法<%= ruby expression%>直接替换成表达式的&#20540;<% ruby code %> Ruby代码,包括条件,循环等<%# comment%>注释<%% or %%> 等同于<% or %>,分别进行<%-    等同于<%,闭合标签,控制代码前输出大量空&#26684;-%>    等同于%>, 闭合标签,控制代码后输出大量空&#26684;例子:<%= @ipaddress%> 也可以写成 <%= ipaddress%>
2.3 变量的引用当前范围内的变量都可以作为ruby的变量,用@符号引用puppet传递一个scop对象到模板中,其中包含当前设定的变量,以及其他数据。可以使用scope对象的lookupvar方法找到任何变量(1)超出本范围的变量<% = scope.lookipvar ('apache::user')%>(2)测试不明变量<% if @myvar%>myvar has <%= @myvar%> value<% end %>(3)获取当期作用域下的所有变量名如果使用的作用域在一个to_hash下,可以得到一个在当前作用域下的所有哈希变量表。这个哈希列表使用多个变量(osfamily),而不是合&#26684;的名称(::osfamily).如下代码将打印所有变量<%scope.to_hash.keys.each do |k| -%><%=k%><% end -%>
2.4模板结合多个模板,可以使用逗号结合template (’mumodule/template1.erb‘, ’mumodule/template2.erb‘)
2.5数组迭代$values = [var1, var2, other]<% values.each do |val| -%>some stuff with <%= val %><% end -%>
2.6语法检查erb -P -x -T '-' mytemplate.erb | ruby -c


以上参考《Puppet实践》

运维网声明 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-144104-1-1.html 上篇帖子: Puppet的错误Syntax error at ''; expected '' at 下篇帖子: Unity3d的2D骨骼动画插件Puppet2D的使用2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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