分析 /etc/puppet/manifests 的结构 root@main:/etc/puppet/manifests# tree.├── classes│ ├── apache.pp│ ├── apt.pp│ ├── dovecot.pp│ ├── dovecot.pp.bak│ ├── icedove.pp│ ├── index.html│ ├── localrepo.pp│ ├── lynx.pp│ ├── osticket.pp│ ├── tcpdump.pp│ ├── toolbox.pp│ └── users.pp├── nodes.pp└── site.pp1.site.pp 主文件里include 各个node的配置 和import 各个类 import "classes/*.pp"import "nodes.pp"include viminclude tcpdumpinclude lynxinclude usersinclude startpuppet2. nodes.pp 具体针对每个node 进行puppet类的分配 node 'aptcache.test.group5.local' {class {'aptcacherng':}}node 'master.test.group5.local' {include puppetmaster}node default{}class里的 各个pp可以直接引用,因为再site.pp 里已经 import了 module 也可以直接使用 或者 用 class {‘aptcacherng’:} class 类 怎么写 举个例子 class tcpdump {package { 'tcpdump':ensure => installed,}}一个class 可以包含的各种资源 ├── classes│ ├── file│ ├── service│ ├── package│ ├── user│ ├── group│ ├── exec│ ├── cron│ ├── notify分析一个module 结构 root@hai:~/group5/modules/postfix# tree . ├── files │ ├── main.cf │ └── master.cf ├── manifests │ ├── config.pp │ ├── init.pp │ ├── package.pp │ ├── postinstall.pp │ └── service.pp ├── Modulefile ├── propuppet-postfix │ ├── manifests │ │ └── init.pp │ ├── Modulefile │ ├── README │ ├── spec │ │ └── spec_helper.rb │ └── tests │ └── init.pp ├── README ├── spec │ └── spec_helper.rb ├── templates │ └── main.cf.erb └── tests └── init.ppmanifest里 init.pp 为初始文件,里面包含其他 config.pp-service.pp-package.pp 等等
之后 再config.pp 里 可以配置 包含一个类 类里有各种资源 有时config会应用source 指向files 文件 而files 里会有 config 所需要的source 这里的 files的文件 master.cf main.cf 和 apt-get 安装的postfix 一模一样copy就好了 ,可以照此写module
看看config.pp 怎么写 class postfix::config {File {owner => 'postfix',group => 'postfix',mode => 0644,}file { '/etc/postfix/master.cf':ensure => present,source => 'puppet:///modules/postfix/master.cf',require => Class['postfix::package'],notify => Class['postfix::service'],}file { '/etc/postfix/main.cf':ensure => present,source => 'puppet:///modules/postfix/main.cf',#content => template('postfix/main.cf.erb'),require => Class['postfix::package'],notify => Class['postfix::service'],}}注意到 source 怎么写 source => ‘puppet:///modules/postfix/main.cf’, 文件的位置在 /modules/postfix/files 下
再举个列 看看 模块 ssh结构
root@hai:~/group5/modules/ssh# tree
.
├── files
│ └── sshd_config
└── manifests
├── config.pp
├── init.pp
├── install.pp
└── service.pproot@hai:~/group5/modules/ssh# cd manifests/
root@hai:~/group5/modules/ssh/manifests# cat init.pp
class ssh {
include ssh::install, ssh::config, ssh::service
}
root@hai:~/group5/modules/ssh/manifests# cat config.pp
class ssh::config {
file { “/etc/ssh/sshd_config”:
ensure => present,
owner => ‘root’,
group => ‘root’,
mode => 0600,
source => “puppet:///modules/ssh/sshd_config”,
require => Class[“ssh::install”],
notify => Class[“ssh::service”],
}
}
root@hai:~/group5/modules/ssh/manifests# cat service.pp
class ssh::service {
service { “ssh”:
ensure => running,
hasstatus => true,
hasrestart => true,
enable => true,
require => Class[“ssh::config”],
}
}root@hai:~/group5/modules/ssh/manifests# cat install.pp
class ssh::install {
package { “openssh-server”:
ensure => present,
}
} 发现 init.pp 的class ssh
install.pp class ssh::install 两个::后不一样 service.pp class ssh::service
config.pp class ssh::config
|