gaoke 发表于 2018-8-2 08:31:10

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 类 怎么写举个例子
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 >
页: [1]
查看完整版本: Puppet 详细使用(1) Class类与module模块