3.1 编辑init.pp
[iyunv@master manifests]# vim init.pp
class puppet{ #创建模块puppet类
include puppet::install #包含子类install,可以是install.pp文件,也可以直接写入本文件
}
3.2 编辑install.pp
注意:class名称要和创建的模块名保持一致,名称为puppet,由于在整个配置文件中init.pp为起始配置文件,包含的都应该是子配置文件,所有应该写成“class主类名称::class子类名称”,而class子类名称需要和创建的pp文件名保持一致,比如puppet::install,那么创建的子类名称就应该是install.pp
[iyunv@master manifests]# vim install.pp
class puppet::install{ #包含下面两个子类
include puppet::puppet_install,puppet::facter_install
}
class puppet::puppet_install{
package { 'puppet':
ensure => installed, #处于被安装状态
}
}
class puppet::facter_install{
package { 'facter':
ensure => installed,
具有判断版本的写法
[iyunv@master manifests]# vim install.pp
class puppet::install{
include puppet::puppet_install,puppet::facter_install
}
class puppet::puppet_install{
package { 'puppet':
ensure => $operatingsystemmajrelease ?{ #判断系统版本
5 => '2.7.25-1.el5',
6 => '2.7.25-1.el6',
}
}
}
class puppet::facter_install{
package { 'facter':
ensure => $operatingsystemmajrelease ?{
5 => '1.7.5-1.el5',
6 => '1.7.5-1.el6',
}
}
}
3.3 编辑site.pp
将模块应用到agent上
[iyunv@master ~]# vim /etc/puppet/manifests/site.pp
$master = 'master.puppet.com'
node 'master_cert.puppet.com'{
include test,puppet
}
node 'agent1_cert.puppet.com'{
include test,puppet
}
node 'agent2_cert.puppet.com'{
include test,puppet
}
node 'agent3_cert.puppet.com'{
include test,puppet
}
所有节点都使用相同的模块,也可以是以下写法
[iyunv@master ~]# vim /etc/puppet/manifests/site.pp
$master = 'master.puppet.com'
class environments{
include motd,puppet
}
node default{
include environments
}
3.7 添加class puppet::service puppet::config到init.pp中
[iyunv@master manifests]# vim init.pp
class puppet{
include puppet::install,puppet::config,puppet::service
}