56u6i 发表于 2016-3-22 08:19:13

Puppet 详细使用(1) Class类与module模块

分析 /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.ppclass ssh::config

dylina 发表于 2016-4-24 20:09:46

谢谢分享
页: [1]
查看完整版本: Puppet 详细使用(1) Class类与module模块