Puppet erb模板介绍(三十二)
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模板介绍(三十二)相关推荐
- 【正点原子FPGA连载】 第三十二章基于lwip的TCP服务器性能测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
第三十二章基于lwip的TCP服务器性能测试实验 上一章的lwip Echo Server实验让我们对lwip有一个基本的了解,而Echo Server是基于TCP协议的.TCP协议是为了在不可靠的互 ...
- axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 三十二、Java集合中的ArrayList
@Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- FreeSql (三十二)Aop
FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...
- 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...
- 如何选择适合你的兴趣爱好(三十二),养花
围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第三十二讲--养花.花是美好的象征,在植物世界中,花卉是一个大家族,它千姿百态,争奇斗艳,丰富多彩,是大自然的造化 ...
- 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...
一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...
- 深度学习入门(三十二)卷积神经网络——BN批量归一化
深度学习入门(三十二)卷积神经网络--BN批量归一化 前言 批量归一化batch normalization 课件 批量归一化 批量归一化层 批量归一化在做什么? 总结 教材 1 训练深层网络 2 批 ...
最新文章
- document 文挡对象 - JavaScript脚本语言描述
- 简单易懂棒棒哒的视频传输工具!
- 开源!100 页机器学习教程全面开放,附完整代码
- 柠檬班python自动化视频百度云_python自动化装逼指南1-装饰器详解
- css:构建响应式网站
- 岗位推荐 | 京东AI研究院招聘计算机视觉算法实习生
- boost::outcome模块constexpr相关的测试程序
- chrome插件 vscode_2020年,前端开发者必备的10个VS Code扩展插件
- 关于滤波电容、去耦电容、旁路电容作用
- 东南亚ERP仓储管理系统怎么样?
- direct3D 状态设置
- 为什么建议要延迟macOS升级,小编为你全面分析!
- 寻找二值图像的连通域算法分析
- 使用 做签名的post_使用 Go 添加 JWT 认证
- stm32f407与计算机的usb通讯,STM32F407 USB通信程序 USB Device 虚拟串口 CDC类 Cubemx生成...
- python写植物大战僵尸简单版_写个最简单的植物大战僵尸修改器吧!c和python
- oracle的mins,分钟缩写是min还是mins 即min是minutes的缩
- 什么是SaaS,PaaS和IaaS? 有例子
- 椭圆曲线加密中定义的加法运算
- 计算机维修工初级题库网盘,初级计算机维修工技能试卷.pdf
热门文章
- dns被劫持怎么办,什么是dns劫持,有什么方法处理?
- python3 tkinter 随机答题
- Html5红警源码,现在,你真的可以在网页上玩到原版《红警2》了
- 如何使用python sklearn 中的LeaveOneGroupOu?特例:leave one pair out的实现多重比较校正?
- 07 java.awt.Robot的一些使用
- 如何更改linux文件的拥有者及用户组 chown和chgrp
- Docker Nginx配置(docker.io/nginx)
- 在 Linux 平台及 IPv4 环境中构建 IPv6 测试环境
- 使用 maven 打包 src/test/java下的文件,并用 java jar 跑打包出来的jar
- 这可能是知乎中,最好的项目管理书单!