puppet一个完整的实例
一个具体实例来简单说明puppet的具体结构
创建第一个配置
puppet的组成清单这主要包含这几个部分
资源,文件,模板,节点,类,定义
puppet中有个模块的定义,这个比较重要,基本是puppet的核心,这个模块主要是由资源,文件,模板,类,定义来组成的。
puppet的清单文件是以.pp来结尾的,在载入文件的时候就不需要写.pp的扩展名了。
现在我们来创建第一个模块:
第一创建模块
进入到这个目录下
cd /etc/puppet/modules/
mkdir motd #创建模块
查看模块的目录树,需要自己创建
[root@pup modules]# tree motd/
motd/
├── files #存放文件目录
│ └── etc
│ └── motd #文件
├── manifests #存放模块pp配置文件目录
│ └── init.pp
└── templates #存放模板目录 directories, files
上面就是几个基本模块的目录,init.pp是模块的核心配置文件
第二下面我们来写init.pp文件
[root@pup manifests]# cat init.pp
class motd{ #定义一个类
package{'setup': #定义package资源包
ensure => present, #要求setup这个包处于安装状态
}
file{'/etc/motd': #定义file资源
ensure => present, #要求文件存在
owner => 'root', #要求file属主为root
group => 'root', #要求file属组为root
mode => '',
source => "puppet:///modules/motd/etc/motd", #文件在服务器上的位置
require => Package['setup'], #要求文件在被配置之前执行package资源
}
}
简单说明下:
require是个元参数,确保能够先执行,上面就是在文件在被配置之前执行package资源,
在说明下source,告诉puppet去哪里寻找这个文件,注意路径是“puppet:///modules/motd/etc/motd“ 而不是这个puppet:///modules/motd//files/etc/motd
”一定要注意没有files。
为了便于观察我们在motd文件中添加一点东西
[root@pup etc]# cat motd
---------------------
this is puppet testing
-----------------------
第三来编写site.pp文件
还记得site.pp文件的位置吗?在这里
[root@pup puppet]# pwd
/etc/puppet
[root@pup puppet]# tree manifests/
manifests/
└── site.pp directories, file
$puppetserver = 'puppetmaster.com'
node 'agent1.puppetmaster.com'{
include motd
}
#或者使用正则表达式来写
#node /^(agent.*)\.puppetmaster\.com$/
node /^agent\d+\.puppetmaster\.com$/{
include motd #包含这个类
}
#或者更加简洁的方式使用通配符
node /*.puppetmaster\.com/{
include motd
}
第四应用第一个配置
客户端上执行:
[root@agent1 ~]# puppet agent -t
Notice: Ignoring --listen on onetime run
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent1.pup.yxnu
Info: Applying configuration version ''
Notice: /Stage[main]/Motd/File[/etc/motd]/content:
--- /etc/motd -- ::22.000000000 +
+++ /tmp/puppet-file20170109--1q3m9uz- -- ::21.074912907 +
@@ -, +, @@
+---------------------
+this is puppet testing
+----------------------- Info: Computing checksum on file /etc/motd
Info: /Stage[main]/Motd/File[/etc/motd]: Filebucketed /etc/motd to puppet with sum d41d8cd98f00b204e9800998ecf8427e
Notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}b97562be6190ed905ab4e86a21c4e0c9'
Notice: Finished catalog run in 0.71 seconds
[root@agent1 ~]# cat /etc/mo
modprobe.d/ motd
[root@agent1 ~]# cat /etc/motd
---------------------
this is puppet testing
-----------------------
[root@agent1 ~]#
这样一个简单的实例就完成了,可以看到在客户端上会创建文件/etc/motd,
很简单吧,接下来会介绍puppet基础知识,并且介绍如何构建更加复杂的配置
puppet一个完整的实例的更多相关文章
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二
原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 上一篇:一个完整的安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一4. 根据用户选择的组 ...
- html是什么?一个完整的html代码告诉你(完整实例版)
html什么意思?这篇文章主要为大家仔细的解释了HTML文档的一个基础的完整代码,还有具体的实例解释,让大家能一下就看懂HTML的基础结构和用法.下面我们一起来看看吧一.html是什么?点击查看htm ...
- 一个完整的Installshield安装程序实例-转
一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(一)---基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于 ...
- [转]一个完整的Installshield安装程序实例
@import url("http://files.cnblogs.com/files/go-jzg/vs.css"); --> Installshield安装程序实例—基本 ...
- 3dmax实例教程-使用3ds Max 创建一个完整的场景
本篇教程讲述了利用3ds max创建一个完整的场景. 灵感来源:当我在遇到一些事情睡不着觉的时候我便在努力想象一些别的事情,于是我便想到了这个场景,其实对于我的这个角色我即没有参考图也没有草稿图,有的 ...
- 搭建一个完整的Android工程(一)Dagger2
写在前面 现在越来越多的使用到了开源项目,但是仅限于使用,却不了解,更谈不上深入.也是因为越来越多的开源项目,平时工作中遇到问题也是第一时间寻找对应的开源项目,少了许多独立的思考.现在虽然能很轻松的完 ...
- Django1.8教程——从零开始搭建一个完整django博客(一)
第一个Django项目将是一个完整的博客网站.它和我们博客园使用的博客别无二致,一样有分类.标签.归档.查询等功能.如果你对Django感兴趣的话,这是一个绝好的机会.该教程将和你一起,从零开始,搭建 ...
- 开发一个完整的JavaScript组件
作为一名开发者,大家应该都知道在浏览器中存在一些内置的控件:Alert,Confirm等,但是这些控件通常根据浏览器产商的不同而形态各异,视觉效果往往达不到UI设计师的要求.更重要的是,这类内置控件的 ...
- Extjs的GridPanel分页前后台完整代码实例
第一次写文章啊,有些冲动.最近在公司学习Extjs,做了一个分页的小实例和大家分享. 1.首先编写paging-grid.js文件,这是我在网上参考的例子改写的,大同小异. Ext.onReady(f ...
随机推荐
- Django Rest framework基础使用之View:APIView, mixins, generic, viewsets
先看一张图,对DRF的各个APIView,Mixin,Viewset等有个基本印象: 具体使用方法: 1.APIView: DRF 的API视图 有两种实现方式: 一种是基于函数的:@api_view ...
- Quartz-Spring定时任务器持久化,通过Service动态添加,删除,启动暂停任务
原文地址:https://blog.csdn.net/ljqwstc/article/details/78257091 首先添加maven的依赖: <!--quartz定时任务--> &l ...
- CodeForces 550E Brackets in Implications 推理
给出一个四个规则 0->0=1 0->1=1 1->0=0 1->1=0 我自己当时一味的去找规律,没有把式子好好推一推. 当然每个人都能想到a[n]=0是必须的 当a[n ...
- 微信开发 提示 Redirect_uri(错误10003)
情景: 搭建完成一个网站,使用微信打开链接地址,结果报错1003 完整的错误信息: 出现这种情况一般有两种原因: 1.没有配置网页授权 我们可以根据微信的开发者文档http://mp.weixin. ...
- 导出数据之CSV
平常开发中,常见的需求就是导出数据为Excel,CSV格式的表格.所以,在此记录一下导出CSV数据的小方法 $fileName = 'demo.csv'; $data = [ ['id'=>1, ...
- 优化MySQL性能的几种方法-总结
原文:http://bbs.landingbj.com/t-0-245601-1.html 1.要选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越 小,在它上 ...
- 【Python3练习题 015】 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?
a = [100] #每个‘反弹落地’过程经过的路程,第1次只有落地(100米) h = 100 #每个‘反弹落地’过程,反弹的高度,第1次为100米 print('第1次从%s米高落地,走过%s ...
- java代理:静态代理和动态代理
一.Java中有一个设计模式是代理模式 代理模式是常用的Java设计模式,特征是代理类与委托类有相同的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 代理类 ...
- 6-1 Quantifiers
1 Quantifiers are used to describe the number or amount of something. Certain quantifiers are used w ...
- [转帖]关于CPU Cache -- 程序猿需要知道的那些事
关于CPU Cache -- 程序猿需要知道的那些事 很早之前读过作者的blog 记得作者在facebook 工作.. 还写过mysql相关的内容 大拿 本文将介绍一些作为程序猿或者IT从业者应该知道 ...