puppet一个完整的实例

一个具体实例来简单说明puppet的具体结构

创建第一个配置

puppet的组成清单这主要包含这几个部分

资源,文件,模板,节点,类,定义

puppet中有个模块的定义,这个比较重要,基本是puppet的核心,这个模块主要是由资源,文件,模板,类,定义来组成的。

puppet的清单文件是以.pp来结尾的,在载入文件的时候就不需要写.pp的扩展名了。

现在我们来创建第一个模块:

第一创建模块

 1 进入到这个目录下
 2 cd /etc/puppet/modules/
 3 mkdir motd    #创建模块
 4 查看模块的目录树,需要自己创建
 5 [[email protected] modules]# tree motd/
 6 motd/
 7 ├── files    #存放文件目录
 8 │   └── etc
 9 │       └── motd   #文件
10 ├── manifests     #存放模块pp配置文件目录
11 │   └── init.pp
12 └── templates    #存放模板目录
13
14 4 directories, 2 files

上面就是几个基本模块的目录,init.pp是模块的核心配置文件

第二下面我们来写init.pp文件

 1 [[email protected] manifests]# cat  init.pp
 2 class motd{              #定义一个类
 3     package{‘setup‘:     #定义package资源包
 4      ensure => present,  #要求setup这个包处于安装状态
 5 }
 6     file{‘/etc/motd‘:     #定义file资源
 7      ensure => present,   #要求文件存在
 8      owner => ‘root‘,       #要求file属主为root
 9      group => ‘root‘,         #要求file属组为root
10      mode => ‘0644‘,
11      source => "puppet:///modules/motd/etc/motd",   #文件在服务器上的位置
12      require => Package[‘setup‘],  #要求文件在被配置之前执行package资源
13 }
14 }

简单说明下:

require是个元参数,确保能够先执行,上面就是在文件在被配置之前执行package资源,

在说明下source,告诉puppet去哪里寻找这个文件,注意路径是“puppet:///modules/motd/etc/motd“ 而不是这个puppet:///modules/motd//files/etc/motd

”一定要注意没有files。

为了便于观察我们在motd文件中添加一点东西

1 [[email protected] etc]# cat motd
2 ---------------------
3 this is puppet testing
4 -----------------------

第三来编写site.pp文件

还记得site.pp文件的位置吗?在这里

1 [[email protected] puppet]# pwd
2 /etc/puppet
3 [[email protected] puppet]# tree manifests/
4 manifests/
5 └── site.pp
6
7 0 directories, 1 file
 1 $puppetserver = ‘puppetmaster.com‘
 2 node ‘agent1.puppetmaster.com‘{
 3     include motd
 4 }
 5 #或者使用正则表达式来写
 6 #node /^(agent.*)\.puppetmaster\.com$/
 7 node /^agent\d+\.puppetmaster\.com$/{
 8     include motd     #包含这个类
 9 }
10 #或者更加简洁的方式使用通配符
11 node /*.puppetmaster\.com/{
12        include motd
13 }

第四应用第一个配置

客户端上执行:

 1 [[email protected] ~]# puppet agent -t
 2 Notice: Ignoring --listen on onetime run
 3 Info: Retrieving pluginfacts
 4 Info: Retrieving plugin
 5 Info: Caching catalog for agent1.pup.yxnu
 6 Info: Applying configuration version ‘1483969520‘
 7 Notice: /Stage[main]/Motd/File[/etc/motd]/content:
 8 --- /etc/motd    2010-01-12 21:28:22.000000000 +0800
 9 +++ /tmp/puppet-file20170109-2933-1q3m9uz-0    2017-01-09 21:45:21.074912907 +0800
10 @@ -0,0 +1,3 @@
11 +---------------------
12 +this is puppet testing
13 +-----------------------
14
15 Info: Computing checksum on file /etc/motd
16 Info: /Stage[main]/Motd/File[/etc/motd]: Filebucketed /etc/motd to puppet with sum d41d8cd98f00b204e9800998ecf8427e
17 Notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed ‘{md5}d41d8cd98f00b204e9800998ecf8427e‘ to ‘{md5}b97562be6190ed905ab4e86a21c4e0c9‘
18 Notice: Finished catalog run in 0.71 seconds
19 [[email protected] ~]# cat /etc/mo
20 modprobe.d/ motd
21 [[email protected] ~]# cat /etc/motd
22 ---------------------
23 this is puppet testing
24 -----------------------
25 [[email protected] ~]# 

这样一个简单的实例就完成了,可以看到在客户端上会创建文件/etc/motd,

很简单吧,接下来会介绍puppet基础知识,并且介绍如何构建更加复杂的配置

时间: 2024-08-06 05:51:01

puppet一个完整的实例的相关文章

[转]一个完整的Installshield安装程序实例

Installshield安装程序实例—基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于上手和精通都不是容易的事情,之前都是用Installshield的Project Assistant对付过去的,这次做这个安装程序,为了实现一些功能,必须写代码,国内外现成的资料很少,而且很多都语焉不详,自己反复啃了多次,对比Installshiel自带的help,才明白资料所表达的意思.这个安装程序虽然比较简陋,在行家眼里可能是小菜一碟,但

高级I/O复用技术:Epoll的使用及一个完整的C实例

高性能的网络服务器需要同时并发处理大量的客户端,而采用以前的那种对每个连接使用一个分开的线程或进程方法效率不高,因为处理大量客户端的时候,资源的使用及进程上下文的切换将会影响服务器的性能.一个可替代的方法是在一个单一的线程中使用非阻塞的I/O(non-blocking I/O).         这篇文章主要介绍linux下的epoll(7)方法,其有着良好的就绪事件通知机制.我们将会使用C来展现一个完整的TCP服务器实现代码.Epoll是被linux2.6开始引进的,但是不被其他的类UNIX系

一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一

原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 上一篇:一个完整的安装程序实例—艾泽拉斯之海洋女神出品(二) --基本设置二 第二部分:脚本编程 在开始进行编程前,我们先明确一下我们要用编程来弥补前面设置的哪些功能的不足 1. 显示软件许可协议 2. 判断是否安装了本软件所需要的先决软件JKD1.6.0_04,如无,则启动外部安装程序进行安装(同样原理可以用来判断是否安装了其他软件,只要该软件在注册表中有键值) 3. 用户的输入信息.所选安装

一个完整的Installshield安装程序实例-转

一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(一)---基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于上手和精通都不是容易的事情,之前都是用Installshield的Project Assistant对付过去的,这次做这个安装程序,为了实现一些功能,必须写代码,国内外现成的资料很少,而且很多都语焉不详,自己反复啃了多次,对比Installshiel自带的help,才明白资料所表达的意思.这个安装程

iOS开发实践:一个完整微博客户端的实现

本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序代码中的标识符,其它字段具体描述它在线程中被如何使用,以及它所依赖的其它元素,数据字典中各个标识符基本上也是按照线程的执行流程来排序. 数据流图是一个平面拓扑结构,每个节点或者是外部数据,或者是可被线程执行的代码模块.从外部数据到代码模块的边意味着线程在执行代码模块的时候需要用到外部数据,从代码模块

文件上传插件Uploadify在Struts2中的应用,完整详细实例

->最近由于项目需要使用到一个上传插件,在网上发现uploadify挺不错,所以决定使用它,但是官网文档和例子是php的,而项目是SSI框架的,所以自己对uploadify在struts2中的使用进行了一番研究,最终实现了.发现网上关于这方面的资料很少,而且有的一两篇例子还不大全,网友提问质疑很多,所以,下面我特将我的代码公布: --------------------------------------------------------------------- 步骤一: 到官网上下载upl

Notification完整使用实例

MainActivity如下: package cc.cv; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.app.Notification; import android.app.Notification.B

puppet安装部署,实例JDK和tomcat

puppet 原理和工作流程 puppet 一个为实现数据中心自动化管理而设计的配置管理软件 基于C/S架构 原理:S服务端保存着所有的对客户端服务器的配置代码,puppet里叫清单(manifest):c客户端下载清单后,根据清单对服务器进行配置 工作流程:客户端调用facter facter探测出主机的一些变量,puppetd 把这些信息通过SSL连接发送到服务器puppetmaster 服务器puppetmaster 检测客户端的主机名,然后找到manifest里面对应主机的配置,对其解析

开发一个完整的JavaScript组件

作为一名开发者,大家应该都知道在浏览器中存在一些内置的控件:Alert,Confirm等,但是这些控件通常根据浏览器产商的不同而形态各异,视觉效果往往达不到UI设计师的要求.更重要的是,这类内置控件的风格很难与形形色色的各种风格迥异的互联网产品的设计风格统一.因此,优秀的前端开发者们各自开发自己的个性化控件来替代浏览器内置的这些控件.当然,这类组件在网络上已经有不计其数相当优秀的,写这篇文章的目的不是为了说明我开发的这个组件有多优秀,也不是为了炫耀什么,只是希望通过这种方式,与更多的开发者互相交