参考资料:Pro puppet

          http://docs.puppetlabs.com/

http://urchin.blog.51cto.com/4356076/986571

使用puppet模块管理mysql

模块的目录结构

  1. modules/mysql/ 
  2. ├── files 
  3. │   └── my.cnf 
  4. ├── manifests 
  5. │   ├── config.pp 
  6. │   ├── init.pp 
  7. │   ├── install.pp 
  8. │   └── service.pp 
  9. └── templates 

mysql::install

  1. # vi ../modules/mysql/manifests/install.pp 
  2. class mysql::install { 
  3.      package { ["mysql", "mysql-server", "mysql-test", "mysql-devel" ]: 
  4.         ensure => present, 
  5.         require => User["mysql"], 
  6.      } 
  7.      user { "mysql":    ##资源类型:用户 
  8.         ensure => present, 
  9.         comment => "mysql user",##/etc/passwd文件第五段信息 
  10.         gid => "mysql",  ##用户的组 
  11.         shell => "/bin/false", ##用户的shell 
  12.         require => Group["mysql"],##mysql用户依赖于mysql组 
  13.      } 
  14.      group { "mysql":   ##资源类型:组 
  15.         ensure => present, 
  16.      } 

mysql::conifg

  1. # vi ../modules/mysql/manifests/config.pp 
  2. class mysql::config { 
  3.      file { "/etc/my.cnf": 
  4.         ensure => present, 
  5.         source => "puppet:///modules/mysql/my.cnf", 
  6.         owner => 'mysql', 
  7.         group => 'mysql', 
  8.         require => Class["mysql::install"], 
  9.         notify => Class["mysql::service"], 
  10.      } 
  11.  

mysql::service

  1. # vi ../modules/mysql/manifests/service.pp 
  2. class mysql::service { 
  3.      service { "mysqld": 
  4.         ensure => running, 
  5.         hasstatus => true, 
  6.         hasrestart => true, 
  7.         enable  => true, 
  8.         require => Class["mysql::config"], 
  9.      } 

modules/mysql/manifest/init.pp

  1. # vi ../modules/mysql/manifests/init.pp 
  2. class mysql { 
  3.      include mysql::install, mysql::config, mysql::service 

../puppet/manifest/nodes.pp

  1. node 'agent.test.com' { 
  2.         include ssh 
  3.         include mysql 

注:各元参数含义请移至http://urchin.blog.51cto.com/4356076/986571