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.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 {‘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.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 => 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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章