|
分析 /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.pp
1.site.pp 主文件里include 各个node的配置 和import 各个类
import "classes/*.pp"
import "nodes.pp"
include vim
include tcpdump
include lynx
include users
include startpuppet
2. 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 类 怎么写 举个例子
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.pp
manifest里 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 =>>
notify =>> }
}
root@hai:~/group5/modules/ssh/manifests# cat service.pp
class ssh::service {
service { “ssh”:
ensure => running,
hasstatus => true,
hasrestart => true,
enable => true,
require =>> }
}root@hai:~/group5/modules/ssh/manifests# cat install.pp
class ssh::install {
package { “openssh-server”:
ensure => present,
}
}
发现 init.pp 的class ssh
install.pp >
service.pp >
config.pp > |
|