版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Puppet安装文档1 什么是puppet?puppet是一个开源的新一代集中化配置管理工具,它由自己所声明的语言表达系统配置,通过客户端与服务端之间的连接,维护着关系库。可管理配置文件、用户、Cron、软件包、系统服务等,puppet把这些统称为“资源”。Puppet的设计目标就是简化对这些资源的管理以及妥善处理资源之间的依赖关系。2 Puppet组织结构|-Auth.conf#ACL权限控制文件|-Fileserver.conf#文件服务配置文件|-Manifests#节点存储目录(puppet会首先加载site.pp)|-Site.pp#定义puppet变量及默认配置|-Modules#
2、模块目录|-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文件#11 puppet- puppet-se
3、rver2. puppet需Ruby支持yum -y install ruby ruby-libs ruby-shadow3. 安装facter puppet puppet-server#Centos 5.XWget rpm -ivh puppetlabs-release-el-5.noarch.rpm#Centos 6.Xwget rpm -ivh puppetlabs-release-el-6.noarch.rpmyum clean all#服务端安装yum -y install facter puppet-server#客户端安装yum -y install puppet facter(
4、客户端安装)4. 启动puppet/etc/init.dpuppetmaster start或/etc/init.d/puppet start(客户端启动)5. 检查安装版本:Ruby -vPuppet -VFacter -v6. 配置puppet #服务端a) Vi /etc/puppet/puppet.conf #添加一行服务端主机名master server = puppet-certname = puppet- #客户端b)客户端向服务端请求证书 Vi /etc/puppet/puppet.conf #添加一行服务端主机名 #server = puppet-c)#客户端Puppet a
5、gent -test #客户端执行,请求证书签名认证#服务端对客户端证书签名:Puppet cert -list #查看所有客户端请求证书签名Puppet cert sign agent.pip.co #同意单个客户端证书签名请求puppet cert sign -all #同意所有客户端证书签名请求4 各类资源常用属性参数:1. 文件资源a) Ensure:默认为目录或文件,需声明,值可以为absent(删除),文件file,目录directory,文件present(检查文件是否存在,不存在则创建)b) Content:文件内容,与source和target属性互斥c) Force:强制删
6、除文件、软链接及目录d) Owner:用户名及用户IDe) Group:指定该文件的用户组,可以是组名或Gidf) Link:软链接g) Mode:文件权限配置h) Path:文件路径,必须用双引号i) Targe:当文件类型为link时,需使用target指定目标文件j) Type:只读状态检查文件类型2. 用户资源a) Ensure:默认属性,指定用户是否存在,创建用户使用present,删除用户使用absentb) Allowupe:是否允许使用同一uid,值为true or falsec) Comment:对用户的描述d) Expiry:过期时间e) Gid:该用户的用户组gid,可以
7、是数字及组名f) Groups:指定该用户属于哪些组,有多个组建议使用数组,如 g1,g2 g) Home:用户家目录h) Shell:登陆时指定登陆Shell,不支持windowsi) Uid:指定用户uid,不指定则自动选择j) Password:指定用户密码,填写已使用sha1加密过的字符串,一般复制/etc/shadow文件中用户对应的密码k) Managehome:是否创建用户家目录,值为true or false3. 用户组资源a) Ensure:默认属性,创建present,删除absentb) Name:组名c) Allowupe:是否允许使用同一gidd) Gid:用户组gi
8、d,不指定则自动选择e) Members:用户组成员4. 服务管理a) Ensure:服务状态,运行为true,停止为falseb) Enable:是否设置为开机启动,值为true或falsec) Hasrestart:指出管理脚本是否支持restart参数,如不支持则使用stop/start实现restart效果,值为true或falsed) Hasstatus:指出管理脚本是否支持status参数,值为true或falsee) Name:服务名称f) Path:指定查找init脚本的路径g) Restart:重启命令,可指定h) Start:启动命令,可指定i) Status:状态命令,可
9、指定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:设置软件包安装状态。安装i
10、nstalled/present,卸载absent,干净移出软件pureged,安装软件包最新版本latest,安装某个版本直接填写版本号b) Allowcdrom:允许使用cdrom做为软件源c) Provider:指定安装包提供方式,yum/rpm/apt/gem等d) Source:指定软件源e) Name:软件包名f) Install_options:以数组形式附加到安装选项,通常使用INSTALLDIR来指定安装路径7. Crona) Ensure:基本属性,添加为present,删除absentb) Command:需要执行的命令,通常用双引号引起来c) Hour:小时,可选,0-
11、23d) Minute:分钟 0-59e) Month:月 1-12f) Monthday:日 1-31g) Weekday:周中的天,0-7h) User:执行的用户i) Target:指定用户cron项,默认为shellj) Path:环境变量5 Puppet配置实例:方便管理,puppet配置文件采用下列目录结构:/etc/puppet/manifests/nodes下存放节点信息/etc/puppet/modules 下存放模块信息1.mkdir -p /etc/puppet/modules/test/manifests,templates,files2.mkdir -p /etc/p
12、uppet/manifests/nodesManifests #存放模块的主配置文件init.ppTemplates#如果init.pp使用templates函数,会读取此目录下的ERB模板Files#存放文件资源例1:在各客户端主机/tmp/目录下创建文件$hostname,内容为:Hello,WorldCd /etc/puppet/modules/test/manifests Vi init.ppclass test file "/tmp/$hostname.txt": content => "Hello,World" #$hostname变量
13、通过facter命令获#取 Vi ./templates/test.erbhostname <%= fqdn %> #获取$hostname变量值创建节点需要的模块信息Cd /etc/puppet/manifests/nodes/Vi agent.pip.co.ppnode 'puppet1.pip.co' #每个客户端节点只执行node “xxxx”相对应的代码 include test #加载test类node 'puppet2.pip.co' file "/tmp/$hostname.txt": content =>
14、"I'm the second node" node 'puppet3.pip.co' file "/tmp/$hostname.txt": content => "I'm the third node" 创建主配置文件site.ppVi /etc/puppet/manifests/init.ppImport “nodes/*.pp”检查配置文件语法Puppet parser validate /etc/puppet/modules/test/manifests/init.ppPuppet par
15、ser validate /etc/puppet/manifests/site.pp客户端执行同步,如不手动执行,客户端会每30分钟执行一次同步(加上-noop参数,只验证配置不执行代码)Puppet agent -test -noop 分别在3个节点检查生成的内容Node1: /tmp/puppet1.txt#结果为:Hello,WorldNode1: /tmp/puppet1.txt#结果为:Im the second nodeNode1: /tmp/puppet1.txt#结果为:Im the third node例2:同步文件:Cp /etc/ssh/sshd_config /etc/
16、puppet/modules/test/files/Vi /etc/puppet/modules/test/manifests/init.ppclass test file "/tmp/sshd_conf": ensure => present, #此处可选项为:present|absent|directory|file|link#present 检查文件是否存在,不存在则创建#absent检查文件是否存在,存在则删除#directory 指定这是一个目录,不存在则创建source => 'puppet:/puppet-master.pip.co/mod
17、ules/test/sshd_conf'#模块目录下的files目录不用写在路径中 vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include test #加载test类node 'puppet2.pip.co' include test node 'puppet3.pip.co' include test vi /etc/puppet/fileserver.conf添加以下内容:filespath /etc/puppet/modules/test
18、/filesallow *重启puppetmaster/etc/init.d/puppetmaster restart客户端同步文件Puppet agent -test例三:当某个文件更新后触发服务重启以httpd为例:Mkdir -p /etc/puppet/modules/httpd/files,manifests,templatescp /etc/httpd/conf/httpd.conf /etc/puppet/modules/httpd/files/并修改相关参数Vi /etc/puppet/modules/httpd/manifests/init.ppclass httpd #类名
19、必须与模块名一致 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
20、,#管理脚本是否支持restart参数 hasstatus => true,#管理脚本是否支持status参数 Subscribe => File“/etc/httpd/conf/httpd.conf” vi /etc/puppet/fileserver.conf添加以下内容:httpdpath /etc/puppet/modules/httpd/filesallow *Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include httpd #加载test类node '
21、;puppet2.pip.co' include httpdnode 'puppet3.pip.co' include httpd重启puppetmaster/etc/init.d/puppetmaster restart客户端同步Puppet agent -test例四:用户管理新建模块userMkdir -p /etc/puppet/modules/user/manifests修改sshd_config文件,添加ssh登陆用户限制创建模块主配置文件init.ppVi /etc/puppet/modules/user/manifests/init.ppclass us
22、er user 'yhzhao': ensure => present,#检查用户,不存则创建 uid => 501,#指定用户UID为501 managehome => true,#是否创建家目录 home => '/home/yhzhao',#指定用户家目录 shell =>'/bin/bash',#指定用户shell password => '$6$8em9vhd9Rl5H17sB$tyDZz2kHd8kW2Kk7VxxTtKfqQXglQ/29W74RC2Q6asUvLT/.lcRccrAbTV
23、9qmKaniMkaGMYRpiy2ZUJTZrvr9/' #用户登陆密码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 => runni
24、ng, enable => true,hasrestart => true,hasstatus => true,subscribe => File"/etc/ssh/sshd_config" #sshd_config文件更新后重启sshd服务 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include user #加载user类node 'puppet2.pip.co' include usernode '
25、puppet3.pip.co' include user测试语法并预执行Puppet agent -test -noop客户端执行Puppet agent -test验证登陆例五 软件管理(更新openssh到最新版本并重启服务)新建模块packageMkdir -p /etc/puppet/modules/package/manifests创建模块主配置文件init.ppVi /etc/puppet/modules/package/manifests/init.ppclass package case $:operatingsystem #根据操作系统不同选用不同的软件包 cento
26、s: $package_list = 'openssh-server' solaris: $package_list = SUNWsshr, SUNWsshu default: fail("Modules does not support $:operatingsystem") package $package_list: ensure => latest, #latest表示更新到最新版本,installed:表示安装该软件,absent:表示 #卸载该软件pureged:表示干净移除该软件 #此处也可填写版本号,填写版本号则安装此版本的软件包not
27、ify => 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.ppnode 'puppet1.pip.co' include package #加
28、载package类node 'puppet2.pip.co' include packagenode 'puppet3.pip.co' include package测试语法并预执行Puppet agent -test -noop客户端执行Puppet agent -test验证Rpm -qa|grep openssh例六 服务管理(一般依赖于其它资源变动时触发)新建模块servicesMkdir -p /etc/puppet/modules/services/manifests创建模块主配置文件init.ppVi /etc/puppet/modules/ser
29、vices/manifests/init.ppclass services service "mysqld": ensure => "running", enable => true, path => "/etc/init.d", 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include services #加载services类node 'puppet2.pip.co' inc
30、lude servicesnode 'puppet3.pip.co' include services测试语法并预执行Puppet agent -test -noop客户端执行Puppet agent -test验证/etc/init.d/mysqld status例七 计划任务管理(每周二7点执行时间同步)新建模块servicesMkdir -p /etc/puppet/modules/cron/manifests创建模块主配置文件init.ppVi /etc/puppet/modules/cron/manifests/init.ppclass cron cron "
31、;ntpdate": command => "/usr/sbin/ntpdate ", user => root, hour => 7, minute => 0, weekday => 2, 修改主配置文件Vi /etc/puppet/manifests/nodes/agent.pip.co.ppnode 'puppet1.pip.co' include cron #加载cron类node 'puppet2.pip.co' include cronnode 'puppet3.pip.co' include cron测试语法并预执行Puppet agent -test -noop客户端执行Pu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金属材料学备课笔记
- 中学食堂厨师招聘合同
- 机场物业管理招投标文件样本
- 政府办公楼环境卫生合同
- 冷链物流运输质量控制
- 物流中心车位租赁协议
- 儿童游乐场场地租赁合同范本
- 大型舞台设备维修吊车租赁合同
- 文化传媒公司董事长招聘协议
- 房地产销售技巧培训
- 2023年新苏教版六年级上册科学全册知识点(超全)
- 赢利-未来10年的经营能力-读后感
- 工会劳动竞赛培训课件
- 新生儿红臀pdca模板
- 2024年邮政系统招聘考试-邮政投递员笔试历年真题荟萃含答案
- 领导力培养培训
- 班主任的烦恼如何应对学生问题与家长关注的挑战
- 篮球二攻一战术
- 半导体ECP工艺特点
- 2024-2025学年趣味数学社团活动记录
- 2024年黑龙江哈尔滨市文化广电和旅游局“丁香人才周”事业单位招聘笔试冲刺题
评论
0/150
提交评论