puppet一个完整的实例

时间:2021-05-08 03:36:33

一个具体实例来简单说明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基础知识,并且介绍如何构建更加复杂的配置