利用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
一、配置puppet:master/agent建立安全通信
1、將各個主機的主機名寫入到/etc/hosts文件中,以便于域名解析
注意:將此文件內容分別寫入各個主機的/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/目錄下必須有與環境名相同名字的目錄。并且此目錄下必須包含manifests和modules兩個目錄,在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認證,建立安全通信
(1)master主機
啟動服務
Systemctl start puppetmaster.service
查看8140端口已開啟
(2)在agent主機
啟動服務
Systemctl start puppetagent.service
(3)簽署認證
在master主機上認證
執行:puppet cert list –all (查看agent的證書簽署請求)
執行:puppet cert sign –all ((簽署所有的請求)
二、創建模塊
注意:我的此次試驗是在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配置
tomcata.jsp(tomcat1主機上的主頁面)內容如下:
tomcatb.jsp(tomcat2主機上的主頁面)
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
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.conf(keepalived主節點配置文件)
keepalivedb.conf (keepalived次節點配置文件)
notify.sh(通知腳本)
三、在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
輸入URL:www.zq.com/test
puppet部署成功
原創文章,作者:zq,如若轉載,請注明出處:http://www.www58058.com/82554