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指令有三個值分別為:production,testing,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
下一篇 2017-07-23

相關推薦

  • Centos 6 –grub legacy及grub修復

    一、CentOS 6 grub legacy:     1.啟動流程:             POST –> Boot Sequence(BIOS) –> Boo…

    Linux干貨 2016-09-21
  • linux基礎學習-(磁盤管理、分區掛載、SWAP)

    1、磁盤結構 2、分區類型 3、管理分區、文件系統以及掛載設備 4、管理虛擬內存SWAP 一、磁盤結構(機械硬盤) CHS尋址模式將硬盤劃分為磁頭(Heads)、柱面(Cylinder)、扇區(Sector)。 ?heads:磁頭 ?tracks:磁道 ?cylinder: 柱面 ?sector: 扇區,512bytes(最小的存儲單位) 1、其中:每個盤面…

    Linux干貨 2016-09-01
  • 馬哥網絡教育班第21期+第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]# fdisk /dev/sd…

    Linux干貨 2016-08-12
  • N25第三周視頻博客 find命令詳解

    視頻作業:find命令詳解 大綱:         1、什么是find 2、find能實現什么功能 3、為什么要使用find 4、如何使用find 5、find各參數詳解   1、什么是find      find是linux 命令,它將檔案系統內符合 expression(表達…

    Linux干貨 2016-12-15
  • Centos7下安裝httpd源碼包

    今天小編來跟大家做個練習,就是如何在Centos7下安裝httpd源碼包. 一:下載httpd最新版本的源碼包 [root@localhost ~]# rpm -qa |grep httpd //查詢系統上是否已安裝httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • Linux文件系統的最基本數據結構:inode和block

    Linux文件系統的最基本數據結構:inode和block 為什么有inode和block inode block 創建目錄或文件 使用場景 查看本機的文件系統信息 Linux文件系統的最基本數據結構:inode和block 為什么有inode和block 由于Linux系統是多用戶多的,所以文件系統類型多樣化是在所難免的。從ext2開始,是將文件屬性和文件…

    Linux干貨 2016-09-06
欧美性久久久久