puppet實現主從部署各類軟件實戰參考模型

puppet實現主從部署各類軟件實戰參考模型 node

 

實驗要求: nginx

 

 

1.我將準備三個節點 node2 , node3 , node4 vim

2.咱們想讓節點node3部署ntp,nginx ;節點node4部署ntp,memcached memcached

 

PS:這三個節點必需要能相互解析,而且時間要同步, 還要相互之間通訊無需輸入密碼 測試

 

 

上面條件準備好之後,接下就是安裝 puppet的服務端/客戶端節點(master/agent) ui

我這裏用的是puppet-2.7版本 spa

 

 

節點node2 (master) 3d

 

[root@node2 2.7.25]# ls server

facter-1.7.5-1.el6.x86_64.rpm puppet-dashboard-1.2.23-1.el6.noarch.rpm blog

puppet-2.7.25-1.el6.noarch.rpm puppet-server-2.7.25-1.el6.noarch.rpm

 

 

[root@node2 2.7.25]# yum -y localinstall facter-1.7.5-1.el6.x86_64.rpm puppet-2.7.25-1.el6.noarch.rpm puppet-server-2.7.25-1.el6.noarch.rpm

 

ps:" facter-1.7.5-1.el6.x86_64.rpm" 是獲取系統相關信息,"puppet-2.7.25-1.el6.noarch.rpm" 是puppet 的客戶端的 ,"puppet-server-2.7.25-1.el6.noarch.rpm"是puppet的服務端

 

 

 

 

 

配置從節點配置文件,在/etc/puppet/puppet.conf 下的 [agent] 裏邊增長一行代碼

server = node2.stu21.com

這樣作的目的是是從的可以指向主的。

 

 

 

 

 

 

 

 

節點node3 (agent)

 

[root@node3 ~]# vim /etc/puppet/puppet.conf

 

節點node4 (agent)

[root@node4 ~]# vim /etc/puppet/puppet.conf

 

 

 

 

 

 

 

 

 

 

 

節點node2 (master)

 

咱們能夠安裝一下模型進行建立文件

 

 

[root@node2 ~]# cd /etc/puppet/modules/

 

[root@node2 modules]# mkdir -pv ./{ntp,nginx,memcached}/{manifests,files,templates}

 

接下來咱們要在模塊裏邊編寫三個類(ntp,nginx ,memcached)

 

[root@node2 modules]# ls

memcached nginx ntp

[root@node2 modules]# cd nginx/

[root@node2 nginx]# ls

files manifests templates

[root@node2 nginx]#

 

咱們要在nginx資源清單(manifests)目錄下,建立init.pp文件,而且配置步驟以下:

 

[root@node2 nginx]# cd manifests/

 

[root@node2 manifests]# vim init.pp

 

class nginx {

package{'nginx':

ensure => latest,

}

service{'nginx':

enable => true,

ensure => running,

require =>Package['nginx'],

}

}

 

 

接下來我再來按照一樣的思路配置memcached 模塊

 

首先切換到memcached類目錄下

[root@node2 modules]# ls

memcached nginx ntp

 

[root@node2 modules]# cd memcached/

[root@node2 memcached]# ls

files manifests templates

 

 

咱們要在memcached的資源清單(manifests)目錄下,建立init.pp文件,而且配置步驟以下:

 

[root@node2 memcached]# cd manifests/

[root@node2 manifests]# vim init.pp

 

class memcached {

package{'memcached':

ensure => latest,

}

service{'memcached':

enable => true,

ensure => running,

require =>Package['memcached'],

}

}

 

 

 

 

還有一個ntp的類須要配置,思路同上

 

[root@node2 modules]# ls

memcached nginx ntp

[root@node2 modules]# cd ntp

[root@node2 ntp]# ls

files manifests templates

 

咱們要在ntp的資源清單(manifests)目錄下,建立init.pp文件,而且配置步驟以下:

 

[root@node2 ntp]# cd manifests/

[root@node2 manifests]# ls

init.pp

[root@node2 manifests]# vim init.pp

 

class ntp {

}

class ntp::synctime inherits ntp {

cron{'synctime':

ensure => present,

minute => '*/5',

command => '/usr/sbin/ntpdate 172.16.0.1 &> /dev/null',

name => 'sync time from ntp server',

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我打算節點node3 配置ntp與nginx , 節點node4 配置ntp與memcached

這樣,咱們須要主服務與從服務鏈接起來,那麼站點清單就是咱們設置的關鍵:

 

[root@node2 manifests]# pwd

/etc/puppet/manifests

[root@node2 manifests]# vim nginx.pp

 

node 'node3.stu21.com' {

include ntp::synctime

include nginx

}

 

 

 

[root@node2 manifests]# vim memcached.pp

node 'node4.stu21.com' {

include ntp::synctime

include memcached

}

 

 

 

接下來,我將配置站點清單 /etc/puppet/manifests/site.pp

 

 

[root@node2 ~]# cd /etc/puppet/

[root@node2 puppet]# ls

auth.conf fileserver.conf manifests modules puppet.conf

[root@node2 puppet]# cd manifests/

[root@node2 manifests]# vim site.pp

import "nginx.pp"

import "memcached.pp"

 

 

 

接下來咱們就來測試階段:

主節點上,讓它運行在前臺上

[root@node2 ~]# puppet master -d -v --no-daemonize

 

 

從節點上

[root@node3 ~]# puppet agent -d -v --no-daemonize

[root@node4 ~]# puppet agent -d -v --no-daemonize

 

 

實驗心得:

 

 

一直困惑個人事若是在站點清單的 sit.pp文件裏 設置

        import "*.pp"

 

而後測試,老是出現

 

出現這樣的緣由是由於我在 /etc/puppet/manifests/ 目錄 建立啦 memcached.pp ,nginx.pp site.pp 因此出錯提示是咱們的import "*.pp"也把本身包含進去啦

 

[root@node2 manifests]# pwd

/etc/puppet/manifests

 

 

 

如若想要 import "*.pp" ,解決辦法是 在 /etc/puppet/manifests/ 建立任意一個目錄,我這裏建立 1 ,再把memcached.pp ,nginx.pp 移到 1 目錄下

 

[root@node2 manifests]# ls

1 site.pp

[root@node2 manifests]# cd 1

[root@node2 1]# ls

memcached.pp nginx.pp

 

而site.pp只須要下面設置從 1 目錄下讀取 *.pp

[root@node2 manifests]# cat site.pp

import "1/*.pp"

相關文章
相關標籤/搜索