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指令有三個值分別為:productiontesting,development

      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.www58058.com/82554

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

相關推薦

  • Linux系統中的Inode節點表

    索引節點是指在許多類Unix文件系統中的一種數據結構。每個索引節點保存了文件系統中的一個文件系統對象的元信息數據,但不包括數據內容或者文件名。

    2017-11-16
  • AWK小記

    gawk – pattern scanning and processing language 基本用法:gawk [options] ‘program’ FILE … program: PATTERN{ACTION STATEMENTS} 語句之間用分號分隔 print, printf 選項: -F:指明輸入…

    2018-01-16
  • 程序包管理之制作yum本地源

    Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 使用本地yum源有兩種方式:第一直接使用光盤鏡像,不過此方…

    Linux干貨 2016-08-24
  • 淺談編譯kernel+busybox構建擁有遠程ssh登錄和web功能最小linux系統(二)

    忘了介紹本文的源碼的版本了 dropbear-2013.58.tar.bz2    busybox-1.21.1.tar.bz2 linux-3.13.6.tar.xz  nginx-1.4.7 基于上文,我們還差group文件沒有寫 root@mysql etc]# vi group  …

    Linux干貨 2015-09-22
  • linux運維

    linux運維大綱,學習路線圖

    Linux干貨 2017-10-21
  • 在Linux中使用計算器遇到的問題

    進制轉換的時候出現了與理解不同的結果

    Linux干貨 2017-11-14
欧美性久久久久