puppet配置

来源:互联网 发布:网络教育在哪里报名 编辑:程序博客网 时间:2024/04/29 18:05
  作为重量级批量自动化运维利器,puppet可以方便大批量停止或启动服务,比如我们经常需在一下停止几十台
mysql服务器,使用puppet配置分分钟搞定,而不需要一台台去手动停止,非常方便

       确认服务器端和客户端正常工作,开始编写module文件


[root@localhost etc]# cd /etc/puppet/modules/

新建puppet module目录结构

[root@localhost modules]# mkdir -p mysqld/{manifests,files,templates}

[root@localhost modules]# touch mysqld/manifests/init.pp

 

编写init.pp文件,启动mysqld服务,这里的linux服务需要支持以标准的service stop/start等格式
[root@localhost modules]# vi  mysqld/manifests/init.pp


class mysqld::service
   {
      service { "mysqld":
        ensure=>running,
              }

    }

class mysqld
    {

        include mysqld::service
   }

编辑站点文件

[root@localhost manifests]# vi /etc/puppet/manifests/site.pp   --表示c12,c13,c14节点都应用mysqld class

node 'c12', 'c13','c14'
   {
      include mysqld
   }

保存退出,不需要重新启动puppet master


在客户端查看服务启动情况
[root@c12 modules]# ps -eaf | grep mysqld
root     12613  7125  0 12:36 pts/1    00:00:00 grep mysqld

稍过一段时间,具体取决于配置,发现mysqld服务已经启动了

[root@c12 modules]# ps -eaf | grep mysqld
root     14786     1  0 12:43 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/c12.pid
mysql    15009 14786  4 12:43 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/mysql/plugin --user=mysql --log-error=/usr/local/mysql/data/localhost.localdomain.err --pid-file=/usr/local/mysql/data/c12.pid
root     15046  7125  0 12:43 pts/1    00:00:00 grep mysqld
[root@c12 modules]#


如果我们需要关闭大量服务器上的mysql服务, 只要把ensure改为stopped就可以了

[root@localhost manifests]# vi init.pp

class mysqld::service
   {
      service { "mysqld":
        ensure=>stopped,
              }

    }

class mysqld
    {

        include mysqld::service
   }

整个过程十分方便,只需要在puppet服务器上配置即可.

同步文件 :

1.site.pip

node 'datacross3.l.loc', 'datacross4.l.loc'{
        include httpd
        file {
                "/home/winson/test.txt":
                source => "puppet://datacross2.l.loc/files/test.txt",
                backup => ".bak_$uptime_seconds",
        }
}

2. fileserver.conf
[files]
path /etc/puppet/files
allow *

同步文件:

1. cat site.pp
node 'datacross3.l.loc', 'datacross4.l.loc'{
        include httpd
        file {
                "/home/winson/":
                source => "puppet://datacross2.l.loc/files/",
                #backup => ".bak_$uptime_seconds",
                recurse => true,
                purge   => true,
                force   => true,
        }
}

httpd模块 :
1.目录结构
[root@datacross2 puppet]# tree
.
├── auth.conf
├── environments
│   └── example_env
│       ├── manifests
│       ├── modules
│       └── README.environment
├── files
│   ├── test.log
│   └── test.txt
├── fileserver.conf
├── manifests
│   └── site.pp
├── modules
│   └── httpd
│       ├── files
│       │   ├── httpd.conf
│       │   └── index.html
│       ├── manifests
│       │   ├── config.pp
│       │   ├── init.pp
│       │   └── service.pp
│       └── templates
└── puppet.conf

2.config.pp

class httpd::config {

            file { "/etc/httpd/conf/httpd.conf":

            ensure => present,

            source => "puppet:///modules/httpd/httpd.conf",

            #实际路径在/etc/puppet/modules/httpd/files/httpd.conf


            notify => Class["httpd::service"]

            }

}

3.service.pp
class httpd::service {

            service { "httpd":

            ensure => running,

            require => Class["httpd::config"]

            }

            file { "/var/www/html/index.html":  #添加web主页

            source => "puppet:///modules/httpd/index.html"

            }

}

4. init.pp

 class httpd {

            include httpd::config,httpd::service

    }
0 0
原创粉丝点击