puppet应用原理及安装部署
一、简介及系统架构
二、环境介绍
三、安装Puppet
四、配置Puppet-dashboard
五、配置Puppet Kick
puppet简介
puppet官方网站:http://www.puppetlabs.com/
puppet中文wiki:http://puppet.chinaec2.com/
puppet中文论坛:http://www.puppetfans.com/
http://lansgg.blog.51cto.com
参考:http://www.itmin.cn/archives/category/yunweijichu/zidonghua
http://my.oschina.net/fufangchun/blog?catalog=478855
Puppet是一个基于Ruby语言所研发的一款开源软件,Puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的Puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。Puppet把这些系统实体称之为资源,Puppet的设计目标是简化对这些资源管理以及妥善处理资源间的依赖关系.puppetmaster可以看作一个web服务器,实际上也是由ruby提供 的web服务器模块来做的。因此可以利用web代理软件来配合puppetmaster做集群设置.
puppet 系统架构
Puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。Puppet通常可以用来管理一台主机的整个生命周期:从初始化到安装、升级、维护以及后续将服务迁移并下架。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个Puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,Puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.
下图展示了一个典型的puppet配置的数据流动情况:
1)客户端通过facter收集客户端信息并发送至服务端
2)连接服务端并请求catalog日志
3)请求节点(node)的信息
4)从服务器端接收节点(node)的实例
5)编译代码(包括语法检查等工作)
6)查询是否有exported 虚拟资源
7)如有,则从数据库接收虚拟资源
8)接收完整的catalog日志
9)存储catalog日志到数据库
10)客户端接收完整的catalog日志
实验效果图:
二、环境介绍
系统版本:Centos-6.4-x86_64
Puppet版本:puppet-2.7.23 下载地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
主机规划
------------------------------------------------------------------------
######Master主机
[root@master ~] # hostname
master.allen.com
[root@master ~] # cat /etc/hosts
172.16.14.1 master.allen.com
172.16.14.2 client.allen.com
[root@master ~] # ifconfig eth0 | awk '/inet addr:/{print $1,$2}'
inet addr:172.16.14.1
------------------------------------------------------------------------
######Client主机
[root@client ~] # hostname
client.allen.com
[root@client ~] # cat /etc/hosts
172.16.14.1 master.allen.com
172.16.14.2 client.allen.com
[root@client ~] # ifconfig eth0 | awk '/inet addr:/{print $1,$2}'
inet addr:172.16.14.2
|
三、安装Puppet
安装前请确认SELinux与Iptables已经处于关闭状态
1、配置好YUM源;并做时间同步
1
2
|
# wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
|
2、安装Puppet软件
由于puppet是由ruby语言编写,所以要安装ruby环境及库文件,命令帮助文件
[root@puppet soft]# yum install ruby ruby-libs ruby-rdoc
facter是一个系统盘点工具,收集主机的一些资料,比如CPU,主机IP等,它收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件
安装puppet之前必须先安装facter,这里采用yum安装。
注释:以下软件压缩成一个软件包,下载解压出来即可获得所有软件
------------------------------------------------------------------------
######在Master主机上安装
[root@master ~]
# yum -y --nogpgcheck localinstall puppet-server-2.7.23-1.el6.noarch.rpm facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm
------------------------------------------------------------------------
######在Client主机上安装
[root@client ~]
# yum -y --nogpgcheck localinstall facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm
3、修改Master主机上的主配置文件
1
2
3
4
|
[root@master ~] # puppet master --genconfig > /etc/puppet/puppet.conf #重新生成配置文件
[root@master ~] # vim /etc/puppet/puppet.conf #修改如下两项配置
rundir = /var/run/puppet
pidfile = $rundir /master .pid
|
4、启动Puppet服务端进程
注释:按
"Ctrl+C"
组合键结束上面启动的进程,以守护进程方式启动并设置为开机自启动
[root@master ~]
# service puppetmaster start
[root@master ~]
# chkconfig puppetmaster on
5、修改Client主机上的主配置文件
1
2
|
注释:在[main]段添加如下配置
server = master.allen.com #指定puppet服务器主机名,要能正常解析
|
6、启动Puppet客户端服务
7、在第6个步骤中客户端创建过证书申请后,此时可以在Puppet服务器端查看并签署证书。
如果服务器相当多的话,这样签署证书效率相当的低,而且还会签证书签到手抽筋;有什么方法可以让服务器自动签署证书呢?答案是当然有了...
1
2
|
注释:在服务器端Puppet配置文件目录下添加如下文件并写入如下信息;表示服务器将会自会签署来自 "allen.com" 这个域中主机的所有证书申请
# echo "*.allen.com" > /etc/puppet/autosign.conf
|
8、此时,客户端会显示证书成功签署并成功启动服务
9、再次测试Puppet客户端连接服务器;然后启动Puppet客户端服务。
10、测试客户端是否能成功从服务端获取到文件
Master主机:
1
2
3
4
|
[root@master ~] # vim /etc/puppet/manifests/site.pp
file { "/tmp/puppet.txt" :
content => "puppet test\n" ,
}
|
Client主机:
1
2
3
|
[root@client ~] # puppet agent --server=master.allen.com --no-daemonize --verbose --test
[root@client ~] # service puppet restart
注释:执行以上两条命令任务一条即可;这里使用第一条便于查看是否同步成功
|
到此Puppet的基本安装与测试已完成。
四、配置Puppet-dashboard
1、安装数据库;这里为了方便就安装在Master主机上了
1
2
3
4
5
6
7
8
9
|
cat /etc/my .cnf
[mysqld]
datadir= /var/lib/mysql
socket= /var/lib/mysql/mysql .sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet = 32M
[mysqld_safe]
log-error= /var/log/mysqld .log
启动mysql服务 [root@master ~] # service mysqld start
[root@master ~] # mysql
mysql> create database dashboard character set utf8;
mysql> grant all privileges on dashboard.* to 'dashboard' @ '172.16.%.%' identified by 'password' ;
mysql> flush privileges;
------------------------------------------------------------------------
注释:执行授权用户命令上面或下面其中一条即可
mysql> grant all privileges on dashboard.* to 'dashboard' @ 'master.allen.com' identified by 'password' ;
|
2、安装其它的工具
1
|
[root@master ~] # gem install rake
|
3、在Master主机上安装puppet-dashboard
1
|
[root@master ~] # yum -y --nogpgcheck localinstall puppet-dashboard-1.2.23-1.el6.noarch.rpm
|
4、导入Dashboard所依赖的数据库
1
2
3
4
5
6
7
8
|
[root@master ~] # cd /usr/share/puppet-dashboard #切换到dashboard安装目录
[root@master ~] # rake RAILS_ENV=production db:migrate #导入数据库
rake aborted!
No Rakefile found (looking for : rakefile, Rakefile, rakefile.rb, Rakefile.rb)
(See full trace by running task with --trace)
[root@master puppet-dashboard] # rake gems:refresh_specs #如果出现如上错误;执行此命令然后重新导入数据库即可
[root@master puppet-dashboard] # rake RAILS_ENV=production db:migrate
------------------------------------------------------------------------
|
5、修改"database.yml"文件中的"production"段如下:
1
2
3
4
5
6
7
8
|
[root@master ~] # vim /usr/share/puppet-dashboard/config/database.yml
production:
host : 172.16.14.1
database: dashboard
username: dashboard
password: password
encoding: utf8
adapter: mysql
|
5.5 修改时区
vi
/usr/share/puppet-dashboard/config/environment
.rb
#config.time_zone = 'UTC'
config.time_zone =
'shanghai'
6、测试"Dashboard"服务是否工作正常
1
2
3
4
|
######测试dashboard服务是否能正常启动;出现如下信息说明已经成功,然后按"Crtl+C"组合键结束进程
[root@master ~] # /usr/share/puppet-dashboard/script/server -e production
=> Booting WEBrick
=> Rails 2.3.17 application starting on http: //0 .0.0.0:3000
|
7、修改Master主机的"puppet.conf"文件如下:
1
2
3
4
|
[root@master ~] # vim /etc/puppet/puppet.conf
[master] #在"master"段修改或添加如下内容
reports = store, http
reporturl = http: //172 .16.14.1:3000 /reports/upload
|
8、修改Client主机的"puppet.conf"文件如下:
1
2
3
|
[root@client ~] # vim /etc/puppet/puppet.conf
[agent] #在"agent"段添加如下内容
report = true
|
9、启动服务器端"puppet-dashboard"服务并重启"puppetmaster"服务;然后重启客户端"puppet"服务使配置生效
1
2
3
4
5
6
7
8
|
######在服务端执行
[root@master ~] # /usr/share/puppet-dashboard/script/server -e production -d
[root@master ~] # ss -tanlp | grep 3000
LISTEN 0 5 *:3000 *:* users :(( "ruby" ,30611,5))
[root@master ~] # service puppetmaster restart
------------------------------------------------------------------------
######在客户端执行
[root@client ~] # service puppet restart
|
10、访问dashboard服务,验证是否正常
11.导入报告
?
1
2
|
cd /usr/share/puppet-dashboard
rake RAILS_ENV=production reports: import
|
执行导入的reports
?
1
2
|
cd /usr/share/puppet-dashboard
rake jobs:work RAILS_ENV= "production"
|
五、配置Puppet Kick
简介:
Puppet客户端默认每30分钟跟服务器通讯一次,但是有时,我们希望服务端能给客户端紧急推送一些任务,于是就有了Puppet kick(Puppet 2.6以前叫 puppetrun)
1、编辑客户端主配置文件
1
2
3
|
[root@client ~] # vim /etc/puppet/puppet.conf
listen = true
注释:在 "[agent]" 段添加如上内容
|
2、编辑或新建文件"/etc/puppet/namespaceauth.conf"
1
2
3
4
|
[root@client ~] # vim /etc/puppet/namespaceauth.conf
[puppetrunner]
allow *.allen.com
注释:添加如上内容
|
3、编辑文件"/etc/puppet/auth.conf"
1
2
3
4
5
6
7
8
9
|
[root@client ~] # vim /etc/puppet/auth.conf
path /run
method save
auth any
allow master.allen.com
# this one is not stricly necessary, but it has the merit
# to show the default policy which is deny everything else
注释:如上在这段注释上面添加如上内容
[root@client ~] # service puppet restart #重启服务使配置生效
|
4、在服务端修改前面创建的"site.pp"文件
1
2
3
4
|
[root@master ~] # vim /etc/puppet/manifests/site.pp
file { "/tmp/allen.txt" :
content => "ALLEN TEST\n" ,
}
|
5、在服务端执行推送命令测试是否能成功推送
1
2
3
|
# puppet kick -p 10 --host client.allen.com
# puppetrun -p 10 --host client.allen.com
6、在客户端验证 到此;Puppet的安装部署已全部完成,后期会学习Puppet的其他相关内容;如:file,service,exec等管理模块。 可以参考:http://www.cnblogs.com/songmingming/p/3506918.html |
转载于:https://blog.51cto.com/hao360/1338138
puppet应用原理及安装部署相关推荐
- puppet完全攻略(一)puppet应用原理及安装部署
puppet完全攻略(一)puppet应用原理及安装部署 puppet简介 puppet官方网站:http://www.puppetlabs.com/ puppet中文wiki:http://pu ...
- Apache ranger 简介、原理、安装部署
一.Ranger简介 Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计.它可以对Hadoop生态的组件如HDFS.Yarn.Hive.Hbase等进行细粒度的数据访问控制.通过 ...
- Puppet安装部署篇(一)
Puppet的安装部署,后续使用下面三台机器演示,为了演示效果主机名也采用idc+用途来表示. 192.168.30.134 puppet Puppet Server端 192.168.30.13 ...
- Presto架构及原理、安装及部署
2019独角兽企业重金招聘Python工程师标准>>> Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数 ...
- Puppet的安装部署
Puppet的安装部署 环境:CoentOS 5.8 x86_64 ,selinux,iptables 已经关闭 主机规划: server.laoguang.me 192.168.12.117 cl ...
- Openstack 安装部署指南翻译系列 之 概况
上面左边是我的个人微信,如需进一步沟通,请加微信. 右边是我的公众号"Openstack私有云",如有兴趣,请关注. 概况 Openstack项目是支持所有类型的云环境的一个 ...
- linux 下安装部署mq,RocketMQ在linux下安装部署
本博客以当前RocketMQ最新版介绍:v4.4.0 环境要求 64位JDK 1.8+; Maven 3.2.x; // 源码编译时需要用到 二进制文件安装 > unzip rocketmq-a ...
- 自动化运维saltstack 安装部署以及一键部署实现负载均衡
saltstack介绍 SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块 ...
- 2021年大数据Flink(三):Flink安装部署 Local本地模式
目录 Flink安装部署 Local本地模式 原理 操作 测试 Flink安装部署 Flink支持多种安装模式 - Local-本地单机模式,学习测试时使用 - Standalone-独立集群模式,F ...
最新文章
- 什么样的文献有html阅读,有关html的参考文献
- 简单解决AJAX在IE中的缓存问题
- C语言中为什么要使用enum
- OAuth 2.0协议在SAP产品中的应用
- 哪些信用卡取现0手续费?
- java调用lingo_使用Lingo增强JMS
- 不属于python循环结构的是( )_Python语句print(type(['a','1',2,3]))的输出结果是哪一项?_学小易找答案...
- 搭建卷积神经网络怎么确定参数_汽车冲压模具中拉延件各参数要怎么确定?本文教你确定方法!...
- 不要迷失在技术的海洋中(转)
- remoting的Client如果访问IIS宿主server端要通过Firewall怎么办?
- 大学生创新项目——机房监控系统设计概述
- bscroll制作轮播图,jq和vue两种方式,带下边的点点
- android反编译apk命令,APK反编译关键命令及步骤
- 使用stack栈集合完成ABC全排列
- 智能开关如何实现双控
- 数据控制—完整性约束
- c# webbrowser html5,C#设置WebBrowser IE浏览器版本
- 微信小程序前四周内容总结
- 【技巧】vs2019调试
- 关于InnoDB存储引擎 text blob 大字段的存储和优化--转载
热门文章
- jmeter 做ip欺骗遇到的坑
- 15.django之Django-Rest-Framework
- 【暑假训练 7.10】 codevs 2492 上帝造题的七分钟2
- mysql命令行执行外部文件
- linux系统中各个文件描述——陆续添加
- 《C++应用程序性能优化::第二章C++语言特性的性能分析》学习和理解
- 一个关于winform多线程的教程(pdf)
- Linux安装QTCreator问题解决汇总
- 显示数量_SOLIDWORKS 标注螺纹不显示数量?Why
- mysql怎么把字符变成数字_mysql将字符转换成数字