Rhel6-puppet集中配置管理系统配置文档
puppet 是一个配置管理工具, 典型的, puppet 是一个 C/S 结构, 当然,这里的 C 可以有很多,因 此,也可以说是一个星型结构. 所有的 puppet 客户端同一个服务器端的 puppet 通讯. 每个 puppet 客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配 置文件来配置服务器. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息. 如果出错, 也会给服务器端反馈一个消息. 下图展示了一个典型的 puppet 配置的数据流动情况.
稳定性
puppet 与其他手工操作工具有一个最大的区别就是 puppet 的配置具有稳定性,因此你可以多次 执行 puppet, 一旦你更新了你的配置件,puppet 就会根据配置文件来更改你的机器配置,通常 每 30 分钟检查一次.puppet 会让你的系统状态同配置文件所要求的状态保持一致. 比如你配 置文件里面要求 ssh 服务必须开启. 假如不小心 ssh 服务被关闭了,那么下一次执行 puppet 的 时候,puppet 会发现这个异常,然后会开启 ssh 服务.以使系统状态和配置文件保持一 致.puppet 就象一个魔术师,会让你的混乱的系统收敛到 puppet 配置文件所想要的状态. 可以使用 puppet 管理服务器的整个生命周期,从初始化到退役.不同于传统的例如 sun 的 Jumpstart 或者 redhat 的 Kickstart, puppet 可以长年让服务器保持最新状态.只要一开始就正 确的配置他们,然后再也不用去管他们.通常 puppet 用户只需要给机器安装好 puppet 并让他们 运行,然后剩余的工作都由 puppet 来完成.
puppet
的细节和原理
puppet
的目的是让你只集中于你要管理的目标,而忽略实现的细节,例如命令名,参数或者文件
格式.puppet
把系统里面的用户,软件包,服务看作是"资源",
puppet 的作用就是管理这些资源
以及资源之间的相互联系.
Puppet
采用了非常简单的
C/S
架构,所有数据的交互都通过
SSL
进行,以保证安全。它的工作
流程如图所示
1. 客户端 Puppetd 向 Master 发起认证请求,或使用带签名的证书。
2. Master 告诉 Client 你是合法的。
3. 客户端 Puppetd 调用 Facter,Facter 探测出主机的一些变量,例如主机名、内存大小、IP 地址 等。Puppetd 将这些信息通过 SSL 连接发送到服务器端。
4. 服务器端的 Puppet Master 检测客户端的主机名,然后找到 manifest 对应的 node 配置,并对该 部分内容进行解析。Facter 送过来的信息可以作为变量处理,node 牵涉到的代码才解析,其他 没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法 没错,就继续解析,解析的结 果生成一个中间的“伪代码”(catelog),然后把伪代码发给客户端。
5. 客户端接收到“伪代码”,并且执行。
6. 客户端在执行时判断有没有 File 文件,如果有,则向 fileserver 发起请求。
7. 客户端判断有没有配置 Report,如果已配置,则把执行结果发送给服务器。
8. 服务器端把客户端的执行结果写入日志,并发送给报告系统。
系统环境: rhel6 x86_64 iptables and selinux disabled
主机: 192.168.122.112 server12.example.com
192.168.122.234 server34.example.com
192.168.122.20 server20.example.com
server 与所有 client 之间需要解析,以及时间同步,不然会验证失败.
所需的包: rubygems-1.3.7-1.el6.noarch.rpm
相关网址:http://puppet.wikidot.com/
yum仓库配置:
[puppet]
name=puppet
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
[ruby]
name=ruby
baseurl=http://yum.puppetlabs.com/el/6Server/dependencies/x86_64/
gpgcheck=0
#配置server端
以下步骤在server12上实施:
[root@server12
~]# yum localinstall rubygems-1.3.7-1.el6.noarch.rpm -y
[root@server12
~]# yum install puppet-server -y
/etc/puppet
配置目录:
组织结构如下:
|--
puppet.conf #主配置配置文件,详细内容可执行
puppet
--genconfig
|--
fileserver.conf #文件服务器配置文件
|--
auth.conf #认证配置文件
|--
autosign.conf #自动验证配置文件
|--
tagmail.conf #邮件配置文件(将错误信息发送)
#文件存储目录(puppet
会先读取该目录的.PP
文件<site.pp>)
|--
manifests
|--nodes
|
puppetclient.pp
|--
site.pp #定义
puppet
相关的变量和默认配置。
|--
modules.pp #加载
class
类模块文件(include
syslog)
|--
modules
#定义模块
|--
syslog
#以
syslog 为例
|--
file
|--
manifests
|--
init.pp
|--
templates
#class
类配置
#模块配置目录
|--
syslog.erb #erb 模板
puppet
的第一个执行的代码是在/etc/puppet/manifest/site.pp,因此这个文件必须存在,而
且其他的代码也要通过该文件来调用。
[root@server12
~]# touch /etc/puppet/manifests/site.pp #没有此文件
puppet
master 无法启动,配置后面再定义
[root@server12
~]# /etc/init.d/puppetmaster start
[root@server12
~]# netstat -antple
tcp
0 0 0.0.0.0:8140 0.0.0.0:*
LISTEN 52 8849 1302/ruby
端口说明启动成功.
#配置client端
以下步骤在server34上实施:
[root@server34
~]# yum localinstall rubygems-1.3.7-1.el6.noarch.rpm -y
[root@server34
~]# yum install puppet -y
puppet
客户端连接到
puppet
master:
[root@server34
~]# puppet agent --server server12.example.com --no-daemonize
--verbose
Info:
Creating a new SSL key for server34.example.com
Info:
Caching certificate for ca
Info:
Creating a new SSL certificate request for server34.example.com
Info:
Certificate Request fingerprint (SHA256):
48:04:66:60:FF:A7:1E:34:04:2E:6E:8A:AE:A5:47:96:06:1E:CB:D0:0B:77:EA:E8:C1:A8:5D:01:85:AE:A0:DB
client
向
master
发出证书验证请求,然后等待
master
签名并返回证书。
参数--server
指定了需要连接的
puppet master
的名字或是地址,默认连接名为“puppet”的主机
,如要修改默认连接主机可以修改/etc/sysconfig/puppet
文件中的
PUPPET_SERVER=puppet
选项
参数--no-daemonize
是 puppet
客户端运行在前台
参数--verbose
使客户端输出详细的日志
以下步骤在server12上实施:
[root@server12
~]# puppet cert list #显示所有等待签名的证书
"server34.example.com"
(SHA256)
48:04:66:60:FF:A7:1E:34:04:2E:6E:8A:AE:A5:47:96:06:1E:CB:D0:0B:77:EA:E8:C1:A8:5D:01:85:AE:A0:DB
[root@server12
~]# puppet cert sign server34.example.com
Notice:
Signed certificate request for server34.example.com
Notice:
Removing file Puppet::SSL::CertificateRequest server34.example.com at
'/var/lib/puppet/ssl/ca/requests/server34.example.com.pem'
在对证书签名后的两分钟内,在
agent
端(server34)上可以看到如下输出:
Info:
Caching certificate for server34.example.com
Starting
Puppet client version 3.3.2
Info:
Caching certificate_revocation_list for ca
Info:
Retrieving plugin
Info:
Caching catalog for server34.example.com
Info:
Applying configuration version '1385280311'
Info:
Creating state file /var/lib/puppet/state/state.yaml
Finished
catalog run in 0.06 seconds
如要同时签名所有证书,执行以下命令:
puppet
cert sign --all
puppet
cert clean server34.example.com
#删除签名证书
#配置自动签证
以下步骤在server12上实施:
[root@server12
~]# vim /etc/puppet/puppet.conf
[main]
autosign=true
#允许所有客户端的认证
…
…
[root@server12
~]# vim /etc/puppet/autosign.conf
*.example.com
#表示允许所有
example.com
域的主机
[root@server12
~]# /etc/init.d/puppetmaster reload
测试:再配置一台client端进行签证.
在实际中有时会修改
client
端的主机名,这样就需要重新生成证书:
(1)在
server
端执行:puppet
cert --clean server34.example.com #你要删除的原
client
端主机名
(2)在
client
端执行:rm
-fr /var/lib/puppet/ssl/*
puppet
agent --server server12.example.com --daemonize --verbose
#puppet
资源定义
以下资源均定义在server端/etc/puppet/manifest/site.pp
文件中,在没有指定节点的情况下,对所有
已经经过验证的 client
都生效。
1.创建文件
[root@server12
~]# vim /etc/puppet/manifests/site.pp
node "server34.example.com"{
file {"/var/www/html/index.html": content =>
"server34.example.com",
mode => 600, #mode用于设置文件的权限
owner => puppet #owner用于设置文件的属主
}
}
node
"server20.example.com"{
file {"/var/www/html/index.html": content =>
"server20.example.com",
mode => 644, #mode用于设置文件的权限
owner => puppet #owner用于设置文件的属主
}
}
测试:在各client端执行puppet
agent --server server12.example.com --daemonize --verbose
未完待续.....
Rhel6-puppet集中配置管理系统配置文档的更多相关文章
- Rhel6-torque作业调度系统配置文档
系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.121 server21.example.com 计算节点 192.1 ...
- saltstack 基础入门文档
saltstack 和 Puppet Chef 一样可以让你同时在多台服务器上执行命令也包括安装和配置软件.Salt 有两个主要的功能:配置管理和远程执行.这里讲述了saltstack的基本使用方法. ...
- 用DOS命令打开IE浏览器、我的文档等等
用DOS命令打开IE浏览器 在“start”-运行中直接输入网址就可以了.如输入百度: http://www.baidu.com Command:[ start http://www.baidu.c ...
- Rhel6-mysql_cluster配置文档
MySQL Cluster 是一种技术,其主要功能是在无共享的相关系统中部署内存中数据库 的 Cluster .在通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求. 此外,由于每个组 ...
- 转://诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1) .
文档内容 用途 适用范围 详细信息 启动顺序: 集群状态 问题 1: OHASD 无法启动 问题 2: OHASD Agents 未启动 问题 3: OCSSD.BI ...
- OpenStack keystone节点搭建(官方2018年4月份文档)
参考文档:https://docs.openstack.org/install-guide/common/conventions.html https://docs.openstack.org/mit ...
- SpingMVC 核心技术帮助文档
声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...
- ABP文档 :Overall - Introduction
介绍 我们基于不同的需求创建不同的应用,但却在一次又一次地实现相同或相似的结构.至少在某种程度上,授权.验证.异常处理.日志.本地化.数据库连接管理.配置管理.审计日志属于通用的结构. 另外我们总是在 ...
- 树莓派配置文档 config.txt 说明(转)
原文连接:http://elinux.org/RPi_config.txt 由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在"config.txt"这个文 ...
随机推荐
- Thinking in UML-1-为什么需要UML
1 从面向过程到面向对象 面向过程认为我们的世界是由一个个相互关联的小系统组成.逻辑严密.环环相扣.井然有序.但是我们这个世界从来不是一成不变的.世界的复杂性和频繁变革不是面向过程可以轻易应付应付的. ...
- 重新安装了mysql,以前的数据库如何导入到新的数据库
重新安装了mysql,以前的数据库如何导入到新的数据库,导入到新的数据库不能用真么办? 将之前的mysql中的data目录中的数据库文件夹,(需要哪个数据库复制哪个,不要都复制) D:/wamp/bi ...
- javascript的类、委托、事件
javascript中的类: javascript中的类 ); p2.show(); //注:Javascript中没有真正的方法重载 看起来很简单吧 ...
- 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框
在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...
- redis入侵
一.前言 前段时间,在做内网影响程度评估的时候写了扫描利用小脚本,扫描后统计发现,内网中60%开放了redis6379端口的主机处于可以被利用的危险状态,因为都是一些默认配置造成的考虑到本社区大部分开 ...
- js中的什么时候需要用new来实例化?
有人说js中函数和类就是一个概念,请问:1 为什么我们在大多数情况下没有用new来实例化一个类(函数),如下 JavaScript code 1 2 3 4 5 6 7 <script> ...
- Linux 2.6内核Makefile浅析
1 概述 Makefile由五个部分组成: Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件). .config:内核 ...
- Android中插件开发篇之----类加载器
关于插件,已经在各大平台上出现过很多,eclipse插件.chrome插件.3dmax插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主 ...
- simplexml_load_file 抑制警告的直接输出
$xml = simlexml_load_file($file, null, LIBXML_NOERROR); if (!is_object($this->xml)){ throw new Ex ...
- chrome的timeline中stalled问题解析
原文地址 :http://foio.github.io/chrome-stalled/ 在公司国做一个运营活动,上线后PM总是抱怨访问速度过慢,影响运营效果.然而从前端的角度来说我已经做了如下优化: ...