博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
puppet一键部署lnmt
阅读量:6844 次
发布时间:2019-06-26

本文共 6296 字,大约阅读时间需要 20 分钟。

puppet一键部署lnmt

安装包下载路径

    yum install ./*.rpm

puppet模块文件路径

1
2
mkdir 
-pv 
/etc/puppet/modules/
{openjdk,nginx,tomcat,mariadb}/{manifests,files,templates,lib,tests,spec}
cd 
/etc/puppet/modules

openjdk模块

1
2
3
4
5
6
7
8
9
10
11
vim openjdk
/manifests/init
.pp
class openjdk($version=
'1.8.0'
) {
    
package{
"java-$version-openjdk-devel"
:
        
ensure => installed,
    
}
    
file
{
'javahome'
:
        
ensure => 
file
,
        
path => 
'/etc/profile.d/javahome.sh'
,
        
source 
=> 
'puppet:///modules/openjdk/javahome.sh'
,
    
}
}

java运行路径文件

1
2
vim 
/etc/puppet/modules/openjdk/files/javahome
.sh
export 
JAVA_HOME=
/usr

puppet apply -v -e 'include openjdk'

这一步就提供完了openjdk

Tomcat服务模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vim tomcat
/manifests/init
.pp
class tomcat{
    
package{
'tomcat'
:
        
ensure => installed,
    
} ->
    
service{
'tomcat'
:
        
ensure => running,
        
enable 
=> 
true
,
        
restart => 
'/usr/bin/systemctl restart tomcat'
,
    
}
}
class tomcat::tomcatweb inherits tomcat {
    
package{
'tomcat-webapps'
:
        
ensure => installed,
    
}
    
package{
'tomcat-admin-webapps'
:
        
ensure => installed,
    
}
    
Service[
'tomcat'
]{
        
subscribe => [ Package[
'tomcat-webapps'
],Package[
'tomcat-admin-webapps'
] ],
    
}
}

puppet apply -v -e 'include tomcat::tomcatweb'

这一步这个执行完之后可以打开浏览器访问http://ip:8080,查看页面

facter查看支持全部变量

文本文件中内嵌变量替换机制:

            <%= @VARIABLE_NAME %>

获取安装包和配置文件

1
2
3
cd 
/etc/puppet/modules/nginx/files
wget http:
//nginx
.org
/packages/centos/7/x86_64/RPMS/nginx-1
.10.2-1.el7.ngx.x86_64.rpm
yum 
install 
.
/nginx-1
.10.2-1.el7.ngx.x86_64.rpm

获取default.conf配置文件,并修改代理配置

1
2
cp 
/etc/nginx/conf
.d
/default
.conf ./
sed 
-i 
's@.*/usr/share/nginx/html;@proxy_pass http://127.0.0.1:8080;@' 
nginx
/files/default
.conf

获取nginx.conf.erb模板,并配置worker进程数量等于cpu的数量

1
2
3
cd 
..
/templates/
cp 
/etc/nginx/nginx
.conf ./
sed 
-i 
's@worker_processes.*@worker_processes  <%= processorcount %>;@' 
nginx.conf.erb

Nginx服务器模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
vim nginx
/manifests/init
.pp
class nginx{
    
file
{
'nginxpkg'
:
        
path => 
'/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm'
,
        
ensure => 
file
,
    
} ->
    
exec
{
'nginx'
:
        
unless => 
'/usr/bin/rpm -q nginx'
,
        
user => 
'root'
,
    
} ->
    
file
{
'nginx.conf'
:
        
path => 
'/etc/nginx/nginx.conf'
,
        
ensure => 
file
,
        
content => template(
'nginx/nginx.conf.erb'
),
        
require => Exec[
'nginx'
],
    
}
    
service{
'nginx'
:
        
ensure => running,
        
enable 
=> 
true
,
        
restart => 
'/usr/sbin/nginx -s reload'
,
    
}
}
class nginx::proxy inherits nginx{
    
file
{
'default.conf'
:
        
path => 
'/etc/nginx/conf.d/default.conf'
,
        
ensure => 
file
,
        
source 
=> 
'puppet:///modules/nginx/default.conf'
,
        
require => Exec[
'nginx'
],
    
}
    
Service[
'nginx'
]{
        
subscribe => [ File[
'nginx.conf'
],File[
'default.conf'
] ],
    
}
}

puppet apply -v -e 'include nginx::proxy'

这一步就提供好了Nginx的反向代理,可以打开浏览器访问http://ip,查看页面

数据库节点模块

1
2
3
4
5
6
7
8
9
10
11
vim mariadb
/manifests/init
.pp
class mariadb{
    
package{
'mariadb-server'
:
        
ensure => installed,
    
} ->
    
service{
'mariadb'
:
        
ensure => running,
        
enable 
=> 
true
,
        
restart => 
'/usr/bin/yum restart mariadb.service'
,
    
}
}

puppet apply -v -e 'include mariadb'

部署大量节点配置

puppet是强依赖于域名解析的,我的hosts文件内容如下

1
2
3
4
5
6
7
8
9
vim 
/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.29.1 centos6.org c6
172.16.29.2 centos7.org c7
172.16.29.10 node1.org n1
172.16.29.20 node2.org n2
172.16.29.30 node3.org n3
172.16.29.40 node4.org n4

主节点

开启服务器

1
systemctl start puppetmaster.service

添加配置文件

1
2
3
4
5
6
7
8
9
vim 
/etc/puppet/manifests/site
.pp
#这个配置可以匹配一个主机centos7.oeg
node 
'centos7.org' 
{
    
include nginx::proxy
}
#这个配置可以配置多个node主机
node 
/node
[12]\.org/' {
    
include tomcat::tomcatweb
}

从节点启动从节点服务

1
puppet agent --server node3.org -
v

主节点查看证书

1
puppet cert list

主节点签署证书

1
2
3
puppet cert sign centos7.org
puppet cert sign node1.org
puppet cert sign node2.org

从节点重启从节点服务

1
puppet agent --server node3.org -
v

从节点永久自动连接master的方法,在agent配置段中添加一行

1
2
vim 
/etc/puppet/puppet
.conf
master = node3.org

多环境配置

    多环境的意思是,打个比方一个公司有三个环境,一个开发人员测试自己程序的环境,一个测试人员测试程序的环境,还有一个是提供业务的环境。每个环境的配置可能不一样,这里我们使用puppet提供三种不同的环境。

master节点node3提供多环境需要的文件及目录

1
2
3
4
5
6
cd 
/etc/puppet
mkdir 
-pv environment/{production,development,testing}/{manifests,moudules}
cp 
-a modules/* environments
/production/moudules/
cp 
-a modules/* environments
/development/moudules/
cp 
-a modules/* environments
/testing/moudules/
#每个环境使用模块时,使用的是/etc/puppet/modules/目录下的模块,所以我们定义模块时要定义的灵活一些

master节点node3 在main配置段中添加如下内容,重启puppetmaster

1
2
3
vim 
/etc/puppet/puppet
.conf
environmentpath = $confdir
/environments
systemctl restart puppetmaster.service

master节点提供安装哪些模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim environments
/production/manifests/site
.pp
node 
'node2.org' 
{
    
include nginx::proxy
}
vim environments
/development/manifests/site
.pp
node 
'node2.org' 
{
    
include openjdk
    
include tomcat::tomcatweb
}
vim environments
/development/manifests/site
.pp
node 
'node1.org' 
{
    
include openjdk
    
include tomcat::tomcatweb
}
vim environments
/testing/manifests/site
.pp
node 
'centos7.org' 
{
    
include mariadb
}

node2的agent配置段中添加如下内容,并启动

1
2
3
4
5
vim 
/etc/puppet/puppet
.conf
#指向主节点
    
server = node3.org
    
listen = 
true    
systemctl start puppetagent.service

安装后的截图如下,只监听了80端口说明,使用了production配置环境,若使用development环境会监听80,8080

spacer.gif

node1的agent配置段中添加如下内容,并启动

1
2
3
4
5
6
vim 
/etc/puppet/puppet
.conf
#指向主节点
    
server = node3.org
    
listen = 
true
    
environment = development    
systemctl start puppetagent.service

centos7的agent配置段中添加如下内容,并启动

1
2
3
4
5
6
vim 
/etc/puppet/puppet
.conf
#指向主节点
    
server = node3.org
    
listen = 
true
    
environment = testing    
systemctl start puppetagent.service

puppet的kick的使用

    之前puppet工作时都是agent向master请求数据,并且是每30min请求一次,当我们遇到紧急情况,需要立即变更线上业务的时候,我们就需要使用kick,由master主动通知agent,获取配置信息。

从节点node2在path /之前添加一个认证配置段

1
2
3
4
5
vim 
/etc/puppet/auth
.conf
path 
/run
method save
auth any
allow node3.org

从节点node2 在agent配置段中添加监听

1
2
3
4
vim 
/etc/puppet/ 
puppet.conf
[agent]
listen = 
true
server = node3.org

主节点编辑

1
2
3
4
5
vim environments
/production/manifests/site
.pp
node 
'node2.org' 
{
    
include nginx::proxy
    
include mariadb
}

主节点推服务

1
puppet kick node2.org

node2又监听3306

总结

    puppetmater首先提供多个主机需要的模块,各个模块,每个模块中有多个类,类中定义多个服务;然后同时还提供每个主机使用不同的模块提供不同的服务,并且可以把主机分类体提供配置。同时还可以使用master使用kick主动通知agent安装特定的模块。

      本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1903395,如需转载请自行联系原作者

你可能感兴趣的文章
第一章面向对象涉及原则
查看>>
SQL Server索引调优系列
查看>>
SQL 2000中的触发器使用
查看>>
CKEditor与CKFinder的配置(ASP.NET环境)
查看>>
linux运行级别
查看>>
High Availability PostgreSQL HOWTO
查看>>
C#继承机制
查看>>
Silverlight开发工具汇总
查看>>
简单设计实现基于Forms认证的注册登录等用户基础服务
查看>>
MySQL Query Cache 小结
查看>>
MusicXML 3.0 (6) - 符杠分组
查看>>
分享一个比lightbox配置更方便的jQuery web2.0图片显示插件:Topup
查看>>
Linux IPTables: Incoming and Outgoing Rule Examples (SSH and HTTP)
查看>>
C以二进制读、写、文本
查看>>
SYS_Oracle Erp打印机设定(案例)
查看>>
VBS基础篇 - 循环语句(3) - For...Next
查看>>
为你的程序换个皮肤(转载)
查看>>
SQL 学习笔记
查看>>
XML Publisher 并发程序由于"输出提交处理程序提交失败
查看>>
C#温故而知新学习系列之.NET框架高级特性—.NET框架中自身提供的属性(二)
查看>>