puppet erb模板

在日常运维工作中有很多需求,他们各自有各自相对独立的差异化配置,如果要管理这些差异配置的话,就可以通过erb模板和模板语言来管理这些差异化服务器配置,这就是erb模板的主要应用场景.

ERB模板的体现就是一个文本文件,它以.erb作为扩展名来标示它的用途,代码如下:

file { "/etc/php-fpm.d/www.conf":
ensure  => file,
content => template("php/wwwproxy.conf.erb"),
}

注意:这里模板文件的路径可以使用相对路径也可以使用绝对路径,相对路径通常用于C/S架构,绝对路径通常用于单机.

file资源中的source属性,与template函数调用模板形式,两者相比都可以实现同步文件的功能,但是过程和结果却不一样,file资源的source属性同步文件通过puppet的文件协议,将文件由源路径同步到目的路径,但是它并不能更改文件中的内容,从而可以实现根据需求来定制同步文件与内容。

file中的source示例:

file {'/etc/haproxy/haproxy.cfg':ensure => present,source => 'puppet:///modules/haproxy/haproxy.cfg',notify => Exec['/etc/init.d/haproxy restart'],
}

puppet erb模板文件示例:

模板文件支持变量传参:

示例:

master端puppet代码:

$ip_1="8.8.8.8"
file {'/etc/resolv.conf':content => template('admin/etc/resolv.conf.erb'),
}

模板文件:

; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.30.2
nameserver <%= ip_1 %>

agent端更新:

[root@sh-web1 ~]# puppet agent -t
Notice: Ignoring --listen on onetime run
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sh-web1.localdomain
Info: Applying configuration version '1509984468'
Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfully
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content:
--- /etc/resolv.conf2017-09-01 18:10:30.036376971 +0800
+++ /tmp/puppet-file20171106-37158-4dbt1c-02017-11-06 16:07:47.101648953 +0800
@@ -1,3 +1,4 @@
-; generated by /sbin/dhclient-script
-search localdomain
-nameserver 192.168.30.2
+; generated by /sbin/dhclient-script
+search localdomain
+nameserver 192.168.30.2
+nameserver 8.8.8.8
\ No newline at end of file
Info: Computing checksum on file /etc/resolv.conf
Info: /Stage[main]/Admin/File[/etc/resolv.conf]: Filebucketed /etc/resolv.conf to puppet with sum a880aa161449e4801222f39b9087ad0b
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content: content changed '{md5}a880aa161449e4801222f39b9087ad0b' to '{md5}d64e778c4dd698a73b399c6430cd7fc4'
Notice: Finished catalog run in 0.30 seconds
[root@sh-web1 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.30.2
nameserver 8.8.8.8

puppet模板中的if...else...fi条件判断语句

if...elsif...else...fi条件语句需要放入以<%作为开始,以%>作为结束的符号内.另外需要注意<%if 条件表达式%>最后要以<% end %>作为结束.

模板文件内容:

; generated by /sbin/dhclient-script
search localdomain
<% if hostname =~ /sh-web\d/ %>
nameserver <%= ip_1 %>
<% end %>
nameserver 192.168.30.2

注释:模板使用if条件语句.

agent端更新测试:

[root@sh-web1 ~]# puppet agent -t
Notice: Ignoring --listen on onetime run
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sh-web1.localdomain
Info: Applying configuration version '1509985283'
Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfully
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content:
--- /etc/resolv.conf2017-11-06 16:20:16.706631342 +0800
+++ /tmp/puppet-file20171106-37995-5hvzbe-02017-11-06 16:21:21.839631273 +0800
@@ -1,7 +1,6 @@; generated by /sbin/dhclient-scriptsearch localdomain-$ip_1="22.22.22.22"
+nameserver 8.8.8.8nameserver 192.168.30.2
-nameserver 8.8.8.8
\ No newline at end of file
Info: Computing checksum on file /etc/resolv.conf
Info: /Stage[main]/Admin/File[/etc/resolv.conf]: Filebucketed /etc/resolv.conf to puppet with sum b53bde035cf20d095306e09e84334fbc
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content: content changed '{md5}b53bde035cf20d095306e09e84334fbc' to '{md5}da4ff6163dd0c7c1108bb4d1838295d3'
Notice: Finished catalog run in 0.23 seconds
[root@sh-web1 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 8.8.8.8
nameserver 192.168.30.2

each循环

each循环语句语法以<%作为开始,以 -%>作为结束.

puppet代码如下:

$arry_value=['192.168.1.2','192.168.1.3','192.168.1.4']
file {'/etc/resolv.conf':content => template('admin/etc/resolv.conf.erb'),}
}

模板文件内容:

; generated by /sbin/dhclient-script
search localdomain
<% arry_value.each do |val| -%>
nameserver <%= val %>
<% end -%>
nameserver 192.168.30.2

agent端更新:

[root@sh-web1 ~]# puppet agent -t
Notice: Ignoring --listen on onetime run
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sh-web1.localdomain
Info: Applying configuration version '1509986539'
Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfully
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content:
--- /etc/resolv.conf2017-11-06 16:21:21.846631274 +0800
+++ /tmp/puppet-file20171106-38795-2fa1gc-02017-11-06 16:42:17.130787147 +0800
@@ -1,6 +1,10 @@; generated by /sbin/dhclient-scriptsearch localdomain-nameserver 8.8.8.8
+nameserver 192.168.1.2
+
+nameserver 192.168.1.3
+
+nameserver 192.168.1.4nameserver 192.168.30.2
Info: Computing checksum on file /etc/resolv.conf
Info: /Stage[main]/Admin/File[/etc/resolv.conf]: Filebucketed /etc/resolv.conf to puppet with sum da4ff6163dd0c7c1108bb4d1838295d3
Notice: /Stage[main]/Admin/File[/etc/resolv.conf]/content: content changed '{md5}da4ff6163dd0c7c1108bb4d1838295d3' to '{md5}d6824dac14f7cbbe73317e5a4034c2bf'
Notice: Finished catalog run in 0.24 seconds

Puppet erb模板介绍(三十二)相关推荐

  1. 【正点原子FPGA连载】 第三十二章基于lwip的TCP服务器性能测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    第三十二章基于lwip的TCP服务器性能测试实验 上一章的lwip Echo Server实验让我们对lwip有一个基本的了解,而Echo Server是基于TCP协议的.TCP协议是为了在不可靠的互 ...

  2. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  3. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  4. 三十二、Java集合中的ArrayList

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  5. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  6. 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:  http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...

  7. 如何选择适合你的兴趣爱好(三十二),养花

    围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第三十二讲--养花.花是美好的象征,在植物世界中,花卉是一个大家族,它千姿百态,争奇斗艳,丰富多彩,是大自然的造化 ...

  8. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...

    一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...

  10. 深度学习入门(三十二)卷积神经网络——BN批量归一化

    深度学习入门(三十二)卷积神经网络--BN批量归一化 前言 批量归一化batch normalization 课件 批量归一化 批量归一化层 批量归一化在做什么? 总结 教材 1 训练深层网络 2 批 ...

最新文章

  1. document 文挡对象 - JavaScript脚本语言描述
  2. 简单易懂棒棒哒的视频传输工具!
  3. 开源!100 页机器学习教程全面开放,附完整代码
  4. 柠檬班python自动化视频百度云_python自动化装逼指南1-装饰器详解
  5. css:构建响应式网站
  6. 岗位推荐 | 京东AI研究院招聘计算机视觉算法实习生
  7. boost::outcome模块constexpr相关的测试程序
  8. chrome插件 vscode_2020年,前端开发者必备的10个VS Code扩展插件
  9. 关于滤波电容、去耦电容、旁路电容作用
  10. 东南亚ERP仓储管理系统怎么样?
  11. direct3D 状态设置
  12. 为什么建议要延迟macOS升级,小编为你全面分析!
  13. 寻找二值图像的连通域算法分析
  14. 使用 做签名的post_使用 Go 添加 JWT 认证
  15. stm32f407与计算机的usb通讯,STM32F407 USB通信程序 USB Device 虚拟串口 CDC类 Cubemx生成...
  16. python写植物大战僵尸简单版_写个最简单的植物大战僵尸修改器吧!c和python
  17. oracle的mins,分钟缩写是min还是mins 即min是minutes的缩
  18. 什么是SaaS,PaaS和IaaS? 有例子
  19. 椭圆曲线加密中定义的加法运算
  20. 计算机维修工初级题库网盘,初级计算机维修工技能试卷.pdf

热门文章

  1. dns被劫持怎么办,什么是dns劫持,有什么方法处理?
  2. python3 tkinter 随机答题
  3. Html5红警源码,现在,你真的可以在网页上玩到原版《红警2》了
  4. 如何使用python sklearn 中的LeaveOneGroupOu?特例:leave one pair out的实现多重比较校正?
  5. 07 java.awt.Robot的一些使用
  6. 如何更改linux文件的拥有者及用户组 chown和chgrp
  7. Docker Nginx配置(docker.io/nginx)
  8. 在 Linux 平台及 IPv4 环境中构建 IPv6 测试环境
  9. 使用 maven 打包 src/test/java下的文件,并用 java jar 跑打包出来的jar
  10. 这可能是知乎中,最好的项目管理书单!