没有合适的资源?快使用搜索试试~ 我知道了~
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系
资源推荐
资源详情
资源评论
1/25
puppet3.8
puppet介绍
https://puppetlabs.com/
http://yum.puppetlabs.com/
puppet是有ruby语言开发的,ruby是一种面向对象,命令式,函数式,动态的通用编程语言,在20世纪90年代中期由日本人松本行弘设计开发的,遵守
BSD许可证和Ruby License,它的灵感与特性来自于Perl,smalltalk,Eiffel,Ada以及Lisp语言.
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、
系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的
配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来
配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.
随着云技术的技术普及,服务器或虚拟机在数据中心应用中频繁扩展和增减,传统的系统维护方法无法满足企业的需求,于是出现了中心化的
配置管理软件,利用中心化的配置管理,可以把整个数据中心的服务器或虚拟机的所有配置内容有效的组织并管理起来,以此实现大规模化的
管理以及快速部署。中心化配置管理软件有很多,Unix下最出名的是cfengine,其目的是使主机配置管理简单化和任务自动化,使困难的任务
变得较容易。由于cfengine的语法比较晦涩,于是出现了Puppet 。Puppet 的语法简单,对管理内容的抽象化好,很容易理解代码,因此其正
迅速的流行起来。Puppet是免费开源软件,可以自由使用,现在 google正使用puppet管理超过近万台的mac桌面电脑和十几万台Linux服务
器。另外很多世界知名的IT企业也在使用Puppet,开源社区的fedora也使用Puppet。国内的大公司也在准备从 cfengine转移到Puppet。
puppet对我们运维人员的意义
系统管理员都喜欢自己写点小工具来让自己的工作完成的更快或者更好, 不管是在大企业管理大量的服务器还是只管理两三台机器. 但是很少
人会把他们的工具发布出来. 也就是是说极少有工具能被重用,或者说很多工具就只能在所在的组织内部有用.拷贝给别的组织,他们也用不上. 也
就是说,每个系统管理员,在一个新的公司,都会另起炉灶开发一套基于ssh,for循环的"系统"来帮助自己完成系统管理任务.
开发puppet是为了让系统管理员可以相互交流和共享成熟的工具,避免重复的劳动.通过以下两个特性来实现这一目标:
提供一个简洁的但是强大的框架来完成系统管理任务
系统管理任务可以描述成puppet语言,因此可以相互分享代码,就像分享其他语言的代码一样,比如python, c等
因此,作为系统管理员的你可以更快的完成工作,因为你可以用puppet来处理所有的管理细节. 甚至你还可以下载其他管理员的puppet代码来让
你的工作完成的更快
工作方式与流程
puppet既可以在单机上使用,也可以以c/s结构使用.在大规模使用puppet的情况下,通常使用c/s结构.在这种结构中puppet客户端只是指运行
puppet的服务器,puppet服务器端是只运行puppetmaster的服务器.
puppet客户端首先会连接到puppet服务器端,并且通过facter工具把客户端的基本配置信息发送给服务器端. 服务器端通过分析客户端的主机名,
通过node 定义,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发回客户端,客户端执行代码完成配置.并且把代码执行情况反馈
给puppet服务器端.
puppet可以工作在多种linux系统上并且可以管理windows
puppet工作于master/agent模型
puppet基于ssl验证方式工作(需要主机名,因为即使ip地址变了,证书依然后可用,所以使用于动态ip地址环境)
puppet的工作模式:被动模式和主动模式
puppet的管理方式
puppet的对某一个服务的管理称之为模块
每一个管理对象比如 脚本 软件包 计划任务,文件等称之为资源
定义资源的文件称之为清单,每个清单中可以保存多个资源,并且清单之间可以互相调用 通过import实现,相当于shell中的source
类:把多种资源组织起来称之为类,并且可以继承.子类继承了父类的属性,并且可以修改父类定义的值,调用类使用import
模块就是类的集合
类:继承
如
需要在100节点创建用户nginx
需要在30节点安装php
需要在20节点安装mysql
20{
nginx
php
mysql
}
30{
nginx
2/25
php
}
50{
nginx
}
换种定义方式
100{
nginx
}
50 继承 200{
php
}
20 继承 50{
mysql
}
facter:这个组件可以基于插件管理方式让各个agent可以获取各个资源管理信息如:ip 网卡数量 cpu核心数等 比如根据操作信息定义安装相同功
能软件包
poppet工作原理
1. 客户端puppet-client向puppet-master发起认证请求,或使用带签名的证书。
2. puppet-master告诉puppet-client是合法的。
3. puppet-client调用facter,Facter探测出主机的一些变量,例如主机名、内存大小、IP地址等,puppet-client将这些信息通过SSL连接发送到
服务器端。
4. puppet-master服务器端检测客户端的主机名,然后找到manifest对应的node配置,并对该部分内容进行解析。facter送过来的信息可以作为
变量处理,node牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没
错,就继续解析,解析的结果生成一个中间的“伪代码”(catelog),然后把伪代码发给客户端。
5. puppet-client端接收到“伪代码”,并且执行。
6. puppet-client端在执行时判断有没有file文件,如果有,则向fileserver发起请求。
7. puppet-client端判断有没有配置report,如果已配置,则把执行结果发送给服务器。
8. puppet-server端把puppet-client端的执行结果写入日志,并发送给报告系统
3/25
puppet安装
安装puppet
Puppet的安装方式支持源码安装、yum安装以及ruby的gem安装。官网推荐使用yum来安装puppet,方面以后的升级、管理、维护。Centos可
以采用yum来安装,但是Centos的默认源中没有puppet包,因此需要先安装epel包。Epel是企业版Linux附加软件包(Extra Packages for
Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOS、Scientific
Linux)的一个高质量附加软件包项目。
安装环境准备:
1.配置主机名:(并且设置相互解析)
master.puppet.com
agent201.puppet.com
2.关闭防火墙
3.关闭selinux
4.配置ntp服务器并且保证时间同步
[root@master tmp]# vim /etc/ntp.conf
restrict default kod nomodify
server 127.127.1.0
fudge 127.127.1.0 stratum 10
[root@master tmp]# service ntpd restart
[root@master tmp]# chkconfig ntpd on
安装puppet
安装方法一 源代码安装
wget http://downloads.puppetlabs.com/puppet/puppet-3.7.3.tar.gz
wget http://downloads.puppetlabs.com/facter/facter-2.3.0.tar.gz
facter安装
tar xf facter-1.6.6.tar.gz
cd facter-1.6.6
ruby install.rb
Puppet安装
# tar xf puppet-2.7.12.tar.gz
# cd puppet-2.7.12
# ruby install.rb
安装方法二 rpm包
1. Master的安装
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
yum install puppet-server
2. Agent的安装
yum install puppet
[root@localhost tmp]# ls /etc/puppet/
auth.conf environments/ fileserver.conf manifests/ modules/ puppet.conf
// auth.conf --> client访问puppet server的ACL配置文件
// fileserver.conf --> puppet server 作为文件服务器的ACL配置文件
// manifests --> Puppet脚本主文件目录,至少需要包含site.pp文件
// puppet.conf --> Puppet服务器配置文件
//environments--> 环境配置文件
//modules--> 模块配置目录
4/25
puppet master/agent模型
服务端和客户端的配置
master端:
[root@master ~]# vim /etc/puppet/puppet.conf
[main]
[master]
certname = master.puppet.com
[root@master tmp]# service puppetmaster restart
[root@master tmp]# chkconfig puppetmaster on
agent端:
[root@agent201 puppet]# vim /etc/puppet/puppet.conf
[main]
[agent]
runinterval = 1800
server = master.puppet.com
[root@agent201 puppet]# service puppet restart
[root@agent201 puppet]# chkconfig puppet on
master端:
[root@master ~]#
puppet cert --list 列出请求证书列表
"agent201" (SHA256) 3A:96:B0:6E:4F:DB:B9:49:1D:C8:FC:85:9F:0E:E1:8D:5A:8E:55:A4:C6:19:7E:63:06:C9:0B:63:74:DF:3D:3D
[root@master ~]# puppet cert sign --all 给所有请求签名
Notice: Signed certificate request for agent201
Notice: Removing file Puppet::SSL::CertificateRequest agent201 at '/var/lib/puppet/ssl/ca/requests/agent201.pem'
[root@master ~]# puppet cert --list --all 列出所有签名证书
+ "agent201" (SHA256) 7E:52:C9:F5:CD:BE:5E:67:EE:C0:BB:BC:C7:CC:24:D5:51:E2:47:F3:4F:14:7D:9D:41:F4:5B:A7:CA:18:F0:5A
+ "server.puppet.com" (SHA256)
45:20:7B:2D:0D:31:A6:66:29:2B:A0:D9:A7:93:EC:EF:63:50:FB:17:A4:BB:74:6C:F7:15:70:8B:73:B3:CE:06 (alt names: "DNS:puppet",
"DNS:puppet.puppet.com", "DNS:master.puppet.com"
puppet重新生成证书
master端重新生成证书
[root@master ~]# puppet cert --clean agent201 只清除某个主机证书
[root@master ~]# puppet cert --list --all 删除现有所有证书
[root@master ~]# puppet cert --list --all 查询
[root@master ~]# service puppetmaster restart 重启服务,重新生成服务器证书
[root@master ~]# puppet cert --list --all 查询
+ "server.puppet.com" (SHA256)
9F:A8:C3:C9:EB:1D:15:20:79:EC:08:1E:B8:B6:9B:B2:E5:4B:88:06:DE:96:9E:BC:D4:5D:57:51:1C:F8:C7:7B (alt names:
"DNS:master.puppet.com", "DNS:puppet", "DNS:puppet.puppet.com", "DNS:server.puppet.com")
agent端重新发送请求
[root@agent201 ~]# rm -rf /var/lib/puppet/ssl/*
剩余24页未读,继续阅读
资源评论
machen_smiling
- 粉丝: 509
- 资源: 1984
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功