puppet部署多台服务器

puppet部署多台服务器

利用puppet实现自动化部署

配置前准备:

  图中:蓝线表示各个服务器之间通信

     红线表示puppetmaster主机向各个agent主机部署信道

A主机puppet-master主机:192.168.126.129

B主机做两种服务:keepalived高性能和nginx反代

            192.168.126.130

C主机做两种服务:keepalived高性能和nginx反代

            192.168.126.131

D主机tomcat服务:192.168.126.132

E主机tomcat服务:192.168.126.133

F主机memcached服务:192.168.126.134

G主机memcached服务:192.168.126.135

注意:各个主机必须时间同步

    此次安装puppet版本为3.8.7

一、配置puppetmaster/agent建立安全通信

  1、将各个主机的主机名写入到/etc/hosts文件中,以便于域名解析

    puppet部署多台服务器    

注意:将此文件内容分别写入各个主机的/etc/hosts文件中

  2、安装puppet服务所需要的包

   1)在master主机上安装以下包

facter-2.4.6-1.el7.x86_64.rpm

puppet-3.8.7-1.el7.noarch.rpm

puppet-server-3.8.7-1.el7.noarch.rpm

   2)在各个agent主机上安装以下包

      facter-2.4.6-1.el7.x86_64.rpm

puppet-3.8.7-1.el7.noarch.rpm

   3、修改配置文件

    1)配置master主机:/etc/puppet/puppet.conf

      [main]

       …

       environmentpath = $confdir/environments(此配置文件只加上此句就行了)

       …

      [agent]

       …

    2)配置agent主机:/etc/puppet/puppet.conf

      [main]

       …

       listen = true(开启监听端口默认为8139

       environmet = production(运行于production环境,

       …

      [agent]

       …

       server = node1.zq.com(设定以node1.zq.com主机位puppetmaster

       …

    注意: environmet指令有三个值分别为:productiontestingdevelopment

      Agent主机设置的为那个环境,那么在master主机的/etc/puppet/environment/目录下必须有与环境名相同名字的目录。并且此目录下必须包含manifestsmodules两个目录,在manitests目下有site.pp文件,里面包含向各个agent主机需要部署的服务,而modules目录下就各个服务的模块

  3)配置agent主机:/etc/puppet/auth.conf

    加入以下段落:(表示允许master主机可以部署服务)

     path /run

method save

auth any

allow node1.zq.com  

      注意:这几句指令必须在path /”指令的前面

   4、签署CA认证,建立安全通信

     1master主机

       启动服务

       Systemctl  start  puppetmaster.service  

       puppet部署多台服务器

       查看8140端口已开启

     2)在agent主机

        启动服务

        Systemctl  start  puppetagent.service

     3)签署认证

       master主机上认证

       执行:puppet cert list –all (查看agent的证书签署请求)

       执行:puppet cert sign –all ((签署所有的请求)

       puppet部署多台服务器     

二、创建模块

   注意:我的此次试验是在production环境下作的

 创建前配置:

  创建目录文件

   mkdir -pv /etc/puppet/environments/production /{manifests,modules}

1、创建模块memcached

  (1)cd  /etc/puppet/environments/production/modules

  (2)mkdir  ./memcached/memcached/{manifests,templates,files,spec.lib,tests}

  (3)Vim ./manifests/init.pp(每一个模块中都必须含此文件)添加内容如下:

    class memcached {

         package{‘memcached’:

             ensure => latest,

            } ->

         service{‘memcached’:

             ensure => running,

             enable => true,

             }

     }

2、创建tomcat模块

    注意:为测试我为两台tomcat主机分别放了不同主页面

  (1)cd  /etc/puppet/environments/production/modules/

  (2)mkdir  ./tomcat/{manifests,templates,files,spec.lib,tests}

  (3)Vim ./tomcat/manifests/init.pp添加内容如下:

      class tomcat {

          package{[‘tomcat’,’tomcat-admin-webapps’,’tomcat-docs-webapp’,’tomcat-webapps’,’java-1.8.0-openjdk’]:

               ensure => latest,

              } ->

          exec{‘mkdir’:

            command => ‘mkdir -pv /var/lib/tomcat/webapps/test/{classes,lib,WEB_INF}’,

            path    => ‘/bin:/sbin:/usr/bin:/usr/sbin’,

            creats => ‘/var/lib/tomcat/webapps/test’,

              } ->

          service{‘tomcat’:

                ensure => running,

                enable => true,

              }

       }

    4)创建子类(子类文件名必须和子类名相同)

       Vim  ./tomcat/manfests/mem.pp内容如下:

         class tomcat::mem inherits tomcat{

              file{‘server.xml’:

                path   => ‘/etc/tomcat/server.xml’,

                source => ‘puppet:///modules/tomcat/server_memcached.xml’,

                } ->

              file{‘javolution-5.4.3.1.jar’:

                path   => ‘/usr/share/tomcat/lib/javolution-5.4.3.1.jar’,

                source => ‘puppet:///modules/tomcat/javolution-5.4.3.1.jar’,

                } ->

              file{‘memcached-session-manager-tc7-2.1.1.jar’:

                path   => ‘/usr/share/tomcat/lib/memcached-session-manager-tc7-2.1.1.jar’,

                source => ‘puppet:///modules/tomcat/memcached-session-manager-tc7-2.1.1.jar’,

                } ->

              file{‘spymemcached-2.11.1.jar’:

                path   => ‘/usr/share/tomcat/lib/spymemcached-2.11.1.jar’,

                source => ‘puppet:///modules/tomcat/spymemcached-2.11.1.jar’,

               } ->

              file{‘memcached-session-manager-2.1.1.jar’:

                path   => ‘/usr/share/tomcat/lib/memcached-session-manager-2.1.1.jar’,

                source => ‘puppet:///modules/tomcat/memcached-session-manager-2.1.1.jar’,

                } ->

              file{‘msm-javolution-serializer-2.1.1.jar’:

                path   => ‘/usr/share/tomcat/lib/msm-javolution-serializer-2.1.1.jar’,

                source => ‘puppet:///modules/tomcat/msm-javolution-serializer-2.1.1.jar’,

                }

              case $ipaddress_ens32 {

                ‘192.168.126.132’: { $i = tomcata.jsp }

                ‘192.168.126.133’: { $i = tomcatb.jsp }

                 default: { $i = tomcata.jsp }

                } ->

              file{‘index.jsp’:

                 path   => ‘/var/lib/tomcat/webapps/test/index.jsp’,

                 source => “puppet:///modules/tomcat/$i”,

                }

        }

     5)放置文件cd ./tomcat/files/

        javolution-5.4.3.1.jar

   msm-javolution-serializer-2.1.1.jar

   spymemcached-2.11.1.jar

   memcached-session-manager-2.1.1.jar

   memcached-session-manager-tc7-2.1.1.jar

   上面的文件问做session-server所需要的类文件

server_memcached.xml(主配置文件)在此文件中加入session配置

 puppet部署多台服务器

tomcata.jsp(tomcat1主机上的主页面)内容如下:

 puppet部署多台服务器

tomcatb.jsptomcat2主机上的主页面)

   puppet部署多台服务器

3、创建nginx模块

   (1)cd  /etc/puppet/environments/production/modules/

   (2)mkdir  ./nginx/{manifests,templates,files,spec.lib,tests}

   (3)Vim ./nginx/manifests/init.pp添加内容如下:

      class nginx {

           package{‘nginx’:

              ensure => latest,

             } ->

          service{‘nginx’:

              ensure => running,

              enable => true,

             }

       }

   (4)创建子类Vim ./nginx/manifests/proxy.pp添加内容如下:

        class nginx::proxy inherits nginx{

            file{‘nginx.conf’:

              path   => ‘/etc/nginx/nginx.conf’,

              source => ‘puppet:///modules/nginx/proxy.conf’,

             }

           Package[‘nginx’] -> File[‘nginx.conf’] ~> Service[‘nginx’]

     }

      (5)放置文件

       cd ./nginx/files/

  proxy.conf

       puppet部署多台服务器

 4、创建keepalived模块(设置其虚拟IP:192.168.126.110)

   (1)cd  /etc/puppet/environments/production/modules/

   (2)mkdir  ./keepalived/{manifests,templates,files,spec.lib,tests}

   (3)Vim ./keepalived/manifests/init.pp添加内容如下:

       class keepalived {

            package{‘keepalived’:

                ensure => latest,

              } ->

           service{‘keepalived’:

                ensure => running,

                enable => true,

              }

       }

     (4)子类 vim ./keepalived/manifests/vip.pp内容如下:

        class keepalived::vip inherits keepalived{

              if $ipaddress_ens32 == ‘192.168.126.130’ {

             file{‘keepalived.conf’:

                  path   => ‘/etc/keepalived/keepalived.conf’,

                source => “puppet:///modules/keepalived/keepaliveda.conf”,

               }

            } else {

             file{‘keepalived.conf’:

                path   => ‘/etc/keepalived/keepalived.conf’,

                source => “puppet:///modules/keepalived/keepalivedb.conf”,

               }

            }

            file{‘notify.sh’:

               path   => ‘/etc/keepalived/notify.sh’,

              source => ‘puppet:///modules/keepalived/notify.sh’,

             }

       }

(5)放置文件

 keepaliveda.confkeepalived主节点配置文件)

            puppet部署多台服务器

keepalivedb.conf keepalived次节点配置文件)

       puppet部署多台服务器

notify.sh(通知脚本)

      puppet部署多台服务器

三、puppet-master主机部署

1、创建部署文件

  vim /etc/puppet/environment/production/manifets/site.pp内容如下:

   node ‘node2.zq.com’ {

       include nginx::proxy

       include keepalived::vip

       }

    node ‘node3.zq.com’ {

       include nginx::proxy

       include keepalived::vip

       }

    node ‘node4.zq.com’ {

       include tomcat::mem

        }

    node ‘node5.zq.com’ {

      include  tomcat::mem

       }

    node ‘node6.zq.com’ {

      include memcached

      }

    node ‘node7.zq.com’ {

      include memcached

      }

 2、执行部署

    puppet kick node2.zq.com

      puppet kick node3.zq.com

      puppet kick node4.zq.com

      puppet kick node5.zq.com

      puppet kick node6.zq.com

      puppet kick node7.zq.com

 四、测试:

           在测试主机的hosts文件中加入一条解析:

                 192.168.126.110  www.zq.com

输入URLwww.zq.com/test

 puppet部署多台服务器

  puppet部署多台服务器

puppet部署成功
 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创文章,作者:zq,如若转载,请注明出处:http://www.178linux.com/82554

(1)
zqzq
上一篇 2017-07-23
下一篇 2017-07-23

相关推荐

  • linux权限详解

    写在前面: 本博客详解命令chmod,  chowm,  chgrp,  umask,  install,  mktemp  权限管理: 进程文件访问权限应用模型: 进程的属主与文件属主是否相同,如果相同,则应用属主权限 否则,检查文件的属主是否属于文件的属组,如果是,则应用属主权限 否则,应用ot…

    Linux干货 2015-12-19
  • Linux磁盘和文件系统管理

    Linux磁盘和文件系统管理 linux磁盘管理 一、Linux设备类型     硬盘有机械硬盘(HDD)和固态硬盘(SSD)之分。机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等     几个部分组成。  &nbs…

    Linux干货 2016-04-11
  • 文件管理

    一、文件系统     单根架构,根文件系统rootfs     不是linux大小写敏感,而是文件系统支不支持大小写。     路径分割 /     FHS:目录结构,文件分层标准  &nb…

    Linux干货 2016-08-02
  • 初学Linux之文本处理sed

    Sed介绍;Sed用法;Sed高级用法

    2018-01-21
  • Linux磁盘管理高级

    Linux磁盘管理高级 LVM Btrsh LVM 逻辑卷管理(LVM)指系统将物理卷管理抽象成一个逻辑卷,包括重新设定文件系统的大小,LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量。 LVM还有快照的功能,快照区与原本的LV共用很多PE的区块,因…

    Linux干货 2016-09-09
  • Linux正则表达式及文件查找

    1、显示当前系统上root、fedora或者user1用户的默认shell. #   grep  -E   “^(root|fedora|user1)”   /etc/passwd | cut -d: -f1,7     2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,…

    2017-10-22