puppet安装文档.docx
- 文档编号:30037310
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:19
- 大小:20.80KB
puppet安装文档.docx
《puppet安装文档.docx》由会员分享,可在线阅读,更多相关《puppet安装文档.docx(19页珍藏版)》请在冰豆网上搜索。
puppet安装文档
Puppet安装文档
1.什么是puppet?
puppet是一个开源的新一代集中化配置管理工具,它由自己所声明的语言表达系统配置,通过客户端与服务端之间的连接,维护着关系库。
可管理配置文件、用户、Cron、软件包、系统服务等,puppet把这些统称为“资源”。
Puppet的设计目标就是简化对这些资源的管理以及妥善处理资源之间的依赖关系。
2.Puppet组织结构
|--Auth.conf#ACL权限控制文件
|--Fileserver.conf#文件服务配置文件
|--Manifests#节点存储目录(puppet会首先加载site.pp)
|--Site.pp#定义puppet变量及默认配置
|--Modules#模块目录
|--Nginx#以Nginx为例
||--Manifests
|--Init.pp#模块主配置文件,定义class相关信息。
读取模块后先读取它
||--Templates
|--Nginx.conf.erb#模板配置文件(erb为主)
|--Namespaceauth.conf#命名空间配置文件(配置权限)
|--Puppet.conf#puppet主配置文件
|--tagmail.conf#邮件报告配置文件
3.Puppet安装与配置
1.设置主机名,域名解析或指定hosts文件
将服务端、客户端的域名--IP地址写入hosts文件
#服务器端hosts文件
#192.168.30.211puppet-puppet-server
2.puppet需Ruby支持
yum-yinstallrubyruby-libsruby-shadow
3.安装facterpuppetpuppet-server
#Centos5.X
Wget
rpm-ivhpuppetlabs-release-el-5.noarch.rpm
#Centos6.X
wget
rpm-ivhpuppetlabs-release-el-6.noarch.rpm
yumcleanall
#服务端安装
yum-yinstallfacterpuppet-server
#客户端安装
yum-yinstallpuppetfacter(客户端安装)
4.启动puppet
/etc/init.dpuppetmasterstart或/etc/init.d/puppetstart(客户端启动)
5.检查安装版本:
Ruby-v
Puppet-V
Facter-v
6.配置puppet
#服务端
a)Vi/etc/puppet/puppet.conf#添加一行服务端主机名
[master]
server=puppet-
certname=puppet-
#客户端
b)客户端向服务端请求证书
Vi/etc/puppet/puppet.conf#添加一行服务端主机名
#server=puppet-
c)#客户端
Puppetagent--test#客户端执行,请求证书签名认证
#服务端对客户端证书签名:
Puppetcert--list#查看所有客户端请求证书签名
Puppetcertsignagent.pip.co#同意单个客户端证书签名请求
puppetcertsign--all#同意所有客户端证书签名请求
4.各类资源常用属性参数:
1.文件资源
a)Ensure:
默认为目录或文件,需声明,值可以为absent(删除),文件file,目录directory,文件present(检查文件是否存在,不存在则创建)
b)Content:
文件内容,与source和target属性互斥
c)Force:
强制删除文件、软链接及目录
d)Owner:
用户名及用户ID
e)Group:
指定该文件的用户组,可以是组名或Gid
f)Link:
软链接
g)Mode:
文件权限配置
h)Path:
文件路径,必须用双引号
i)Targe:
当文件类型为link时,需使用target指定目标文件
j)Type:
只读状态检查文件类型
2.用户资源
a)Ensure:
默认属性,指定用户是否存在,创建用户使用present,删除用户使用absent
b)Allowupe:
是否允许使用同一uid,值为trueorfalse
c)Comment:
对用户的描述
d)Expiry:
过期时间
e)Gid:
该用户的用户组gid,可以是数字及组名
f)Groups:
指定该用户属于哪些组,有多个组建议使用数组,如[‘g1’,’g2’]
g)Home:
用户家目录
h)Shell:
登陆时指定登陆Shell,不支持windows
i)Uid:
指定用户uid,不指定则自动选择
j)Password:
指定用户密码,填写已使用sha1加密过的字符串,一般复制/etc/shadow文件中用户对应的密码
k)Managehome:
是否创建用户家目录,值为trueorfalse
3.用户组资源
a)Ensure:
默认属性,创建present,删除absent
b)Name:
组名
c)Allowupe:
是否允许使用同一gid
d)Gid:
用户组gid,不指定则自动选择
e)Members:
用户组成员
4.服务管理
a)Ensure:
服务状态,运行为true,停止为false
b)Enable:
是否设置为开机启动,值为true或false
c)Hasrestart:
指出管理脚本是否支持restart参数,如不支持则使用stop/start实现restart效果,值为true或false
d)Hasstatus:
指出管理脚本是否支持status参数,值为true或false
e)Name:
服务名称
f)Path:
指定查找init脚本的路径
g)Restart:
重启命令,可指定
h)Start:
启动命令,可指定
i)Status:
状态命令,可指定
j)Stop:
停止命令,可指定
5.执行命令
a)Command:
执行的命令,必须是完整合法的命令
b)Creates:
指定命令生成文件,只会在所指定的文件不存在的情况下才执行
c)Cwd:
指定命令执行的当前目录,如不存在则执行失败
d)Path:
执行命令的搜索路径
e)Group:
运行命令的组
f)Onlyif:
参数中设置的命令返回0才执行
g)Refreshonly:
该参数可以使命令变成仅刷新触发
h)Tires:
命令尝试执行次数
i)Timeout:
命令执行超时时间
j)Unless:
结束代码
k)User:
执行命令的用户
6.软件资源
a)Ensure:
设置软件包安装状态。
安装installed/present,卸载absent,干净移出软件pureged,安装软件包最新版本latest,安装某个版本直接填写版本号
b)Allowcdrom:
允许使用cdrom做为软件源
c)Provider:
指定安装包提供方式,yum/rpm/apt/gem等
d)Source:
指定软件源
e)Name:
软件包名
f)Install_options:
以数组形式附加到安装选项,通常使用INSTALLDIR来指定安装路径
7.Cron
a)Ensure:
基本属性,添加为present,删除absent
b)Command:
需要执行的命令,通常用双引号引起来
c)Hour:
小时,可选,0-23
d)Minute:
分钟0-59
e)Month:
月1-12
f)Monthday:
日1-31
g)Weekday:
周中的天,0-7
h)User:
执行的用户
i)Target:
指定用户cron项,默认为shell
j)Path:
环境变量
5.Puppet配置实例:
方便管理,puppet配置文件采用下列目录结构:
/etc/puppet/manifests/nodes下存放节点信息
/etc/puppet/modules下存放模块信息
1.mkdir-p/etc/puppet/modules/test/{manifests,templates,files}
2.mkdir-p/etc/puppet/manifests/nodes
Manifests#存放模块的主配置文件init.pp
Templates#如果init.pp使用templates函数,会读取此目录下的ERB模板
Files#存放文件资源
例1:
在各客户端主机/tmp/目录下创建文件$hostname,内容为:
Hello,World
Cd/etc/puppet/modules/test/manifests
①Viinit.pp
classtest{
file{
"/tmp/$hostname.txt":
content=>"Hello,World";#$hostname变量通过facter命令获#取
}
}
②Vi../templates/test.erb
hostname<%=fqdn%>#获取$hostname变量值
③创建节点需要的模块信息
Cd/etc/puppet/manifests/nodes/
Viagent.pip.co.pp
node'puppet1.pip.co'{#每个客户端节点只执行node“xxxx”相对应的代码
includetest#加载test类
}
node'puppet2.pip.co'{
file{
"/tmp/$hostname.txt":
content=>"I'mthesecondnode";
}
}
node'puppet3.pip.co'{
file{
"/tmp/$hostname.txt":
content=>"I'mthethirdnode";
}
}
④创建主配置文件site.pp
Vi/etc/puppet/manifests/init.pp
Import“nodes/*.pp”
⑤检查配置文件语法
Puppetparservalidate/etc/puppet/modules/test/manifests/init.pp
Puppetparservalidate/etc/puppet/manifests/site.pp
⑥客户端执行同步,如不手动执行,客户端会每30分钟执行一次同步(加上--noop参数,只验证配置不执行代码)
Puppetagent--test--noop
⑦分别在3个节点检查生成的内容
Node1:
/tmp/puppet1.txt#结果为:
Hello,World
Node1:
/tmp/puppet1.txt#结果为:
I’mthesecondnode
Node1:
/tmp/puppet1.txt#结果为:
I’mthethirdnode
例2:
同步文件:
Cp/etc/ssh/sshd_config/etc/puppet/modules/test/files/
①Vi/etc/puppet/modules/test/manifests/init.pp
classtest{
file{"/tmp/sshd_conf":
ensure=>present,#此处可选项为:
present|absent|directory|file|link
#present检查文件是否存在,不存在则创建
#absent检查文件是否存在,存在则删除
#directory指定这是一个目录,不存在则创建
source=>'puppet:
//puppet-master.pip.co/modules/test/sshd_conf'
#模块目录下的files目录不用写在路径中
}
}
②vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{
includetest#加载test类
}
node'puppet2.pip.co'{
includetest
}
node'puppet3.pip.co'{
includetest
}
③vi/etc/puppet/fileserver.conf
添加以下内容:
[files]
path/etc/puppet/modules/test/files
allow*
④重启puppetmaster
/etc/init.d/puppetmasterrestart
⑤客户端同步文件
Puppetagent--test
例三:
当某个文件更新后触发服务重启
以httpd为例:
①Mkdir-p/etc/puppet/modules/httpd/{files,manifests,templates}
②cp/etc/httpd/conf/httpd.conf/etc/puppet/modules/httpd/files/
并修改相关参数
③Vi/etc/puppet/modules/httpd/manifests/init.pp
classhttpd{#类名必须与模块名一致
file{"/etc/httpd/conf/httpd.conf":
ensure=>present,
source=>'puppet:
//puppet-master.pip.co/modules/httpd/httpd.conf',
notify=>Service["httpd"]
}
service{'httpd':
ensure=>running,#确保服务运行状态
enable=>true,#指定服务是否开机启动
hasrestart=>true,#管理脚本是否支持restart参数
hasstatus=>true,#管理脚本是否支持status参数
Subscribe=>File[“/etc/httpd/conf/httpd.conf”]
}
}
④vi/etc/puppet/fileserver.conf
添加以下内容:
[httpd]
path/etc/puppet/modules/httpd/files
allow*
⑤Vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{
includehttpd#加载test类
}
node'puppet2.pip.co'{
includehttpd
}
node'puppet3.pip.co'{
includehttpd
}
⑥重启puppetmaster
/etc/init.d/puppetmasterrestart
⑦客户端同步
Puppetagent--test
例四:
用户管理
①新建模块user
Mkdir-p/etc/puppet/modules/user/manifests
②修改sshd_config文件,添加ssh登陆用户限制
③创建模块主配置文件init.pp
Vi/etc/puppet/modules/user/manifests/init.pp
classuser{
user{'yhzhao':
ensure=>present,#检查用户,不存则创建
uid=>501,#指定用户UID为501
managehome=>true,#是否创建家目录
home=>'/home/yhzhao',#指定用户家目录
shell=>'/bin/bash',#指定用户shell
password=>'$6$8em9vhd9Rl5H17sB$tyDZz2kHd8kW2Kk7VxxTtKfqQXglQ/29W74RC2Q6asUvLT/.lcRccrAbTV9qmKaniMkaGMYRpiy2ZUJTZrvr9/'#用户登陆密码SHA1加密,一般使用SHADOW#文件中的密码
}
file{"/etc/ssh/sshd_config":
ensure=>present,
source=>‘puppet:
//puppet-master.pip.co/modules/test/sshd_config’,
subscribe=>User["yhzhao"]#用户创建完成后更新sshd_config文件
}
service{'sshd':
ensure=>running,
enable=>true,
hasrestart=>true,
hasstatus=>true,
subscribe=>File["/etc/ssh/sshd_config"]#sshd_config文件更新后重启sshd服务
}
}
④修改主配置文件
Vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{
includeuser#加载user类
}
node'puppet2.pip.co'{
includeuser
}
node'puppet3.pip.co'{
includeuser
}
⑤测试语法并预执行
Puppetagent--test--noop
⑥客户端执行
Puppetagent--test
⑦验证登陆
例五软件管理(更新openssh到最新版本并重启服务)
①新建模块package
Mkdir-p/etc/puppet/modules/package/manifests
②创建模块主配置文件init.pp
Vi/etc/puppet/modules/package/manifests/init.pp
classpackage{
case$:
:
operatingsystem{#根据操作系统不同选用不同的软件包
centos:
{
$package_list='openssh-server'
}
solaris:
{
$package_list=[SUNWsshr,SUNWsshu]
}
default:
{
fail("Modulesdoesnotsupport${:
:
operatingsystem}")
}
}
package{$package_list:
ensure=>latest,#latest表示更新到最新版本,installed:
表示安装该软件,absent:
表示#卸载该软件pureged:
表示干净移除该软件
#此处也可填写版本号,填写版本号则安装此版本的软件包
notify=>Service[“sshd”]#更新后通知sshd服务
}
service{sshd:
ensure=>running,
enable=>true,
hasrestart=>true,
hasstatus=>true,
subscribe=>Package["${package_list}"]#更新后重启sshd服务
}
}
③修改主配置文件
Vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{
includepackage#加载package类
}
node'puppet2.pip.co'{
includepackage
}
node'puppet3.pip.co'{
includepackage
}
④测试语法并预执行
Puppetagent--test--noop
⑤客户端执行
Puppetagent--test
⑥验证
Rpm-qa|grepopenssh
例六服务管理(一般依赖于其它资源变动时触发)
①新建模块services
Mkdir-p/etc/puppet/modules/services/manifests
②创建模块主配置文件init.pp
Vi/etc/puppet/modules/services/manifests/init.pp
classservices{
service{"mysqld":
ensure=>"running",
enable=>true,
path=>"/etc/init.d",
}
}
③修改主配置文件
Vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{
includeservices#加载services类
}
node'puppet2.pip.co'{
includeservices
}
node'puppet3.pip.co'{
includeservices
}
④测试语法并预执行
Puppetagent--test--noop
⑤客户端执行
Puppetagent--test
⑥验证
/etc/init.d/mysqldstatus
例七计划任务管理(每周二7点执行时间同步)
①新建模块services
Mkdir-p/etc/puppet/modules/cron/manifests
②创建模块主配置文件init.pp
Vi/etc/puppet/modules/cron/manifests/init.pp
classcron{
cron{"ntpdate":
command=>"/usr/sbin/ntpdate192.168.0.5",
user=>root,
hour=>7,
minute=>0,
weekday=>2,
}
}
③修改主配置文件
Vi/etc/puppet/manifests/nodes/agent.pip.co.pp
node'puppet1.pip.co'{includecron#加载cron类
}
nod
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- puppet 安装 文档