|
1.配置一个测试节点
一个节点的目录结构可以任意定义,在site.pp配置文件中import即可
节点信息:/etc/puppet/manifests/nodes
模块信息:/etc/puppet/modules
(1)创建test模块,模块目录为test,class类名应该是test,test类中有一个file资源,file资源的目录是在/tmp目录下创建一个agent主机名的txt文件,其内容为“hello world!”
服务端:mkdir -pv /etc/puppet/modules/test/{manifests,templates,files}
mkdir: 已创建目录 “/etc/puppet/modules/test”
mkdir: 已创建目录 “/etc/puppet/modules/test/manifests”
mkdir: 已创建目录 “/etc/puppet/modules/test/templates”
mkdir: 已创建目录 “/etc/puppet/modules/test/files”
vim /etc/puppet/modules/test/manifests/init.pp
class test {
file {"/tmp/$hostname.txt":content => "Hello World!";}
}
(2)在模块配置文件中定义了一个变量“$hostname”,需要将该变量传给ERB模块文件,此文件存放test类目录下的templates目录中,文件名与类名保持一致,主机名通过facter命令获取,以变量“$hostname”的形式传递给agent.jiachen.com.pp,配置如下
服务端:vim /etc/puppet/modules/test/templates/test.erb
hostname <%= fqdn %>
(3)通过上面创建的测试节点所需的模块信息,创建测试节点agent.jiachen.com
服务端:mkdir -pv /etc/puppet/manifests/nodes/
cd /etc/puppet/manifests/nodes/
vim agent.jiachen.com.pp
node 'agent.jiachen.com' {
include test
}
(4)最后将测试节点载入到puppet中,也就是修改site.pp配置文件,puppet会先读取site.pp文件,因此在创建客户端节点时需要在site.pp配置文件中设置import
服务端:vim /etc/puppet/manifests/site.pp
import "nodes/agent.jiachen.com.pp"
2.测试配置文件
完成节点配置后,不建议直接运行这些配置,需要对配置文件的语法进行检查,避免客户端运行时因报错而重复修改
检查语法分为两步:第一步在puppet master服务端采用puppet parser validate命令检查配置文件,第二步是在puppet agent客户端采用--noop参数检查语法及代码
(1)puppet master服务端检查
在puppet master服务端执行puppet parser validate init.pp,如果看到finished表示成功,无语法错误
服务端:puppet parser validate /etc/puppet/modules/test/manifests/init.pp
(2)puppet agent客户端检查
客户端检查主要是通过增加--noop参数来实现,其目的只是检验配置、模拟执行,但并不实际生效
客户端:puppet agent --test --server puppetmaster.jiachen.com --noop
3.检查运行结果
4.创建httpd模块
(1)创建httpd模块相应目录
服务端:mkdir -pv /etc/puppet/modules/httpd/{files,manifests,templates}
(2)编辑httpd模块,指定资源配置相关信息,采用163源进行安装
服务端:vim /etc/puppet/modules/httpd/manifests/init.pp
class httpd {
yumrepo {"repo163":
descr => "163 repo",
baseurl => "http://mirrors.163.com/centos/5/os/x86_64/",
gpgcheck => "0",
enable => "1";
}
package {"httpd":
ensure => installed,
require => Yumrepo["repo163"];
}
}
(3)修改agnet.jiachen.com.pp,增加httpd模块
服务端:vim /etc/puppet/manifests/nodes/agent.jiachen.com.pp
node 'agent.jiachen.com' {
include test
include httpd
}
上述代码中httpd模块的init.pp文件包含了一个单独的类httpd,该类包含了两个资源,yumrepo和package
第一个资源yumrepo定义了配置,第二个资源package使用ensure=>installed确保httpd包的安装,并指定了一个新的属性require,此属性代表依赖关系,在yumrepo资源执行后再执行package资源
(4)检查配置文件语法
服务端:puppet parser validate /etc/puppet/modules/httpd/manifests/init.pp
如果出现提醒需加入allow_virtual => false
(5)客户端运行配置
客户端:puppet agent --test --server puppetmaster.jiachen.com
(6)检查httpd是否安装成功
客户端:rpm -qa | grep httpd
|
|