4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Puppet模块(二):YUM模块及Yumrepo资源和Mount资源-月晴星飞-51CTO...
来自 : 51CTO技术博客 发布时间:2021-03-25

作用:自动为客户端配置YUM源,为使用yum安装软件包提供便捷。


1、服务端配置yum模块

(1)模块清单

[root@puppet~]#tree/etc/puppet/modules/yum//etc/puppet/modules/yum/├──files│├──yum.conf│└──RPM-GPG-KEY-CentOS-6├──manifests│├──config.pp│├──init.pp│├──install.pp│└──params.pp└──templates

说明:这里只针对centos 6.5版本测试,其他的可以此类推,需要注意的就是本地源的光盘加载问题(见测试环节)

(2)定义参数类

[root@puppet~]#vi/etc/puppet/modules/yum/manifests/params.ppclassyum::params{case$operatingsystemrelease{6.5:{$yum_centos_descr=\'centosbaserpmpackages\'#本地仓库描述信息$yum_centos_baseurl=\'file:///media/cdrom/\'#IOS文件或光盘mount到本地的路径$yum_centos_pki=\'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6\'#YUMREPO文件中指定PKI文件路径$yum_centos_pki_name=\'/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6\'#PKI文件路径,复制一份到puppet的modules中$yum_centos_pki_download=\'puppet:///modules/yum/RPM-GPG-KEY-CentOS-6\'$yum_puppet_descr=\'puppetrpmpackagesforcentos\'#puppet仓库描述信息$yum_puppet_baseurl=\'http://yum.puppetlabs.com/el/6/products/$basearch\'#puppet仓库路径$yum_163_descr=\'163rpmpackagesforcentos\'#163仓库描述信息$yum_163_baseurl=\'http://mirrors.163.com/centos/$releasever/contrib/$basearch/\'#163仓库路径}default:{fail(\"Moduleyumisnotsupportedon${::operatingsystem}\")#6.5版本以外的会提示不支持,如有5.5、5.4这样的版本可按参考6.5进行参数定义}}}

注意:PKI文件RPM-GPG-KEY-CentOS-6是光盘中的存在的,系统不一样,名称也不一样,需要确认。

说明:变量$operatingsystemrelease是通过facter获取计算机的信息的,运行下面的命令可查看计算机相关信息:

[root@puppet~]#facter|grepoperatingsystemreleaseoperatingsystemrelease= 6.5

(3)定义安装类

[root@puppet~]#vi/etc/puppet/modules/yum/manifests/install.ppclassyum::install{#1、确保yum被安装package{\'yum\':ensure= installed,}#2、创建光盘挂载目录file{\'/media/cdrom\':ensure= directory,owner= root,group= root,}#3、确保光盘被挂载#方法一:EXEC#exec{\"mount_cdrom\":#path= \"/usr/bin:/usr/sbin:/bin\",#command= \'/bin/mount/dev/cdrom/media/cdrom/\',#creates= \'/media/cdrom/RPM-GPG-KEY-CentOS-6\',#require= File[\'/media/cdrom\'],#}#方法二:MOUNTmount{\'mount_cdrom\':name= \"/media/cdrom\",#挂载到的目标目录ensure= mounted,#要求被挂载状态fstype= \"iso9660\",#光盘的文件类型,使用mount命令或cat/etc/fstab查看device= \"/dev/cdrom\",#光盘的设备,是个链接,实际指向/dev/sr0options= \"ro\",#以只读方式挂载光盘atboot= true,#允许开机启动时挂载上remounts= true,#允许重新挂载require= File[\'/media/cdrom\'],#要求挂载目标目录存在}#4、安装源前先备份file{\'/etc/yum.repos.d/bak\':ensure= directory,owner= root,group= root,}exec{\"repos_bak\":path= \"/usr/bin:/usr/sbin:/bin\",command= \'mv-f/etc/yum.repos.d/[^c]*.repo/etc/yum.repos.d/bak/\',#将不是小写c开头的repo文件强制移动到备份目录creates= \'/etc/yum.repos.d/bak/CentOS-Base.repo\',#当备份目录存在这个文件时不再执行此资源require= File[\'/etc/yum.repos.d/bak\'],#要求备份目录存在}}

说明:新生成的repo文件都是小写c开头的,因此将不是c开头([^c]*)的repo文件移至bak,

原文件都是CentOS开头的,外加一个puppetlabs.repo,可以将[^c]*.repo改成CentOS*.repo,只将原文件备份。

(4)定义配置类

[root@puppet~]#vi/etc/puppet/modules/yum/manifests/config.ppclassyum::config{includeyum::paramsincludeyum::config_file,yum::config_key,yum::config_repo#1、定义配置文件classyum::config_file{file{\'/etc/yum.conf\':#yum主配置文件yum.conf路径ensure= present,#要求文件处于存在状态owner= \'root\',#属主为rootgroup= \'root\',#属组为rootmode= \'0644\',#文件权限为644source= \'puppet:///modules/yum/yum.conf\',#自动搜索yum模块下的files目录,因此省略/filesrequire= Class[\'yum::install\'],#要求在配置之前先安装yum软件包}file{\'/etc/yum.repos.d/centos-base.repo\':#设置光盘repo的一些属性,文件名是yumrepo中的标题名定义的,必须一致ensure= present,owner= \'root\',group= \'root\',mode= \'0644\',require= Class[\'yum::config_repo\'],#要求设置之前yumrepo资源centos-base必须存在}file{\'/etc/yum.repos.d/centos-puppet.repo\':ensure= present,owner= \'root\',group= \'root\',mode= \'0644\',require= Class[\'yum::config_repo\'],}file{\'/etc/yum.repos.d/centos-163.repo\':ensure= present,owner= \'root\',group= \'root\',mode= \'0644\',require= Class[\'yum::config_repo\'],}#2、定义pki证书文件classyum::config_key{#设置pki证书的一些属性及下载位置file{$yum::params::yum_centos_pki_name:#证书名称在参数类中定义ensure= present,owner= \'root\',group= \'root\',mode= \'0644\',source= $yum::params::yum_centos_pki_download,#证书下载地址在参数类中定义}#3、定义基本yum仓库、puppet仓库和163仓库classyum::config_repo{yumrepo{centos-base:#创建yumrepo资源cenos-basedescr= $yum::params::yum_centos_descr,#设置描述信息baseurl= $yum::params::yum_centos_baseurl,#设置yum源下载地址enabled= 1,#激活yum源gpgcheck= 1,#设置要求通过pki校验gpgkey= $yum::params::yum_centos_pki,#设置pki文件的位置require= Class[\'yum::config_key\'],#要求pki文件必须存在priority= 1,#设置repo的优先级为1(越小越高)}yumrepo{centos-puppet:descr= $yum::params::yum_puppet_descr,baseurl= $yum::params::yum_puppet_baseurl,enabled= 1,gpgcheck= 0,#不要求通过pki校验priority= 2,}yumrepo{centos-163:descr= $yum::params::yum_163_descr,baseurl= $yum::params::yum_163_baseurl,enabled= 1,gpgcheck= 0,priority= 3,}}

说明:创建了三个YUM源,都以centos(小写)开头的,客户端安装puppet时生成了puppetlabs.repo源,因此这里的centos-puppet源也可以省略。

(7)定义yum主类

[root@puppet~]#vi/etc/puppet/modules/yum/manifests/init.ppclassyum{includeyum::params,yum::install,yum::config}

(8)定义节点文件,调用模块

[root@puppet~]#vi/etc/puppet/manifests/centostest.ppnode\"centostest.ewin.com\"{includentp,yum}

(9)应用节点文件

[root@puppet~]#vi/etc/puppet/manifests/site.ppimport\"centostest.pp\"

(10)复制文件

将以下两个文件从客户端复制一份到服务端/etc/puppet/modules/yum/files下

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

/etc/yum.conf

注意在文件头部加上以***释,测试的时候方便分辨

###configbypuppet###


2、测试

(1)客户端执行测试

[root@centostest~]#puppetagent--serverpuppet.ewin.com-test--noopInfo:Cachingcatalogforcentostest.ewin.comInfo:Applyingconfigurationversion\'1415332221\'Notice:Finishedcatalogrunin1.09seconds

(2)查看客户端日志

[root@centostest~]#tailf/var/log/messagesNov711:50:20centostestpuppet-agent[8809]:(/Stage[main]/Yum::Install/File[/media/cdrom]/ensure)createdNov711:50:20centostestpuppet-agent[8809]:(/Stage[main]/Yum::Install/Exec[mount_cdrom]/returns)executedsuccessfullyNov711:50:22centostestpuppet-agent[8809]:(/Stage[main]/Yum::Install/File[/etc/yum.repos.d/bak]/ensure)createdNov711:50:22centostestpuppet-agent[8809]:(/Stage[main]/Yum::Install/Exec[repos_bak]/returns)executedsuccessfullyNov711:50:23centostestpuppet-agent[8809]:(/Stage[main]/Yum::Config_key/File[/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6]/content)contentchanged\'{md5}e8e57fd1a55dc5c6d82e60a444781b96\'to\'{md5}a27c559bf7660f101317ac3b41a7600b\'Nov711:50:23centostestpuppet-agent[8809]:(/Stage[main]/Yum::Config_repo/Yumrepo[centos-base]/ensure)createdNov711:50:24centostestpuppet-agent[8809]:(/Stage[main]/Yum::Config_repo/Yumrepo[centos-puppet]/ensure)createdNov711:50:24centostestpuppet-agent[8809]:(/Stage[main]/Yum::Config_repo/Yumrepo[centos-163]/ensure)createdNov711:50:24centostestpuppet-agent[8809]:(/Stage[main]/Yum::Config_file/File[/etc/yum.conf]/content)contentchanged\'{md5}5d8b0bf30a8ee9d66a9cb2642186ac37\'to\'{md5}8c1fab4142147877a3f77f89eb8ccb7c\'Nov711:50:24centostestpuppet-agent[8809]:Finishedcatalogrunin4.27seconds

结论:可看到cdrom目录创建、挂载命令执行成功、备份命令成功、同步了PKI文件和CON文件、创建了三个YUMREPO

(3)查看客户端挂载的光盘目录

[root@centostest~]#ls/media/cdrom/CentOS_BuildTagisolinuxRPM-GPG-KEY-CentOS-Debug-6EFIPackagesRPM-GPG-KEY-CentOS-Security-6EULARELEASE-NOTES-en-US.htmlRPM-GPG-KEY-CentOS-Testing-6GPLrepodataTRANS.TBLp_w_picpathsRPM-GPG-KEY-CentOS-6

结论:挂载成功,如果用的EXEC方法将会判断RPM-GPG-KEY-CentOS-6存在时不会再执行Exec,而且此文件是原文件,不是新建的空文件。

经测试umount /media/cdrom卸载光盘后会自动重启挂载上,甚至卸载再删除/media/cdrom目录,也会恢复,有兴趣的可以试试。

(4)查看YUM源备份

[root@centostest~]#ls/etc/yum.repos.d/bak/CentOS-Base.repoCentOS-Media.repoCentOS-Vault.repoCentOS-Debuginfo.repopuppetlabs.repo

(5)查看客户端同步的文件

[root@centostest~]#cat/etc/yum.conf###configbypuppet###[main][root@centostest~]#cat/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6###configbypuppet###-----BEGINPGPPUBLICKEYBLOCK-----Version:GnuPGv1.4.5(GNU/Linux)...

结论:从文件头部注释信息可以确认文件同步成功

(6)查看YUM list

[root@centostest~]#yumcleanallLoadedplugins:fastestmirror,refresh-packagekit,securityCleaningrepos:basepuppetlabs-depspuppetlabs-productsCleaningupEverythingCleaninguplistoffastestmirrors[root@centostest~]#yumlistLoadedplugins:fastestmirror,refresh-packagekit,securityDeterminingfastestmirrorscentos-163|2.9kB00:00centos-163/primary_db|1.2kB00:00centos-base|4.0kB00:00...centos-base/primary_db|4.4MB00:00...centos-puppet|2.5kB00:00centos-puppet/primary_db13%[=-]5.9B/s|17kB--:--ETA

结论:YUM三个仓库都能成功加载,通过yum clean all再yum list可观察。

[root@centostest~]#yumlistpuppetLoadedplugins:fastestmirror,refresh-packagekit,securityLoadingmirrorspeedsfromcachedhostfilehttp://mirrors.163.com/centos/6/contrib/x86_64/repodata/repomd.xml:[Errno12]Timeoutonhttp://mirrors.163.com/centos/6/contrib/x86_64/repodata/repomd.xml:(28,\'Operationtooslow.Lessthan1bytes/sectransferedthelast30seconds\')Tryingothermirror.InstalledPackagespuppet.noarch3.7.1-1.el6@puppetlabs-productsAvailablePackagespuppet.noarch3.7.3-1.el6centos-puppet

结论:可以看到从163的源查找puppet超时,已安装的包是从@puppetlabs安装的,有效的包是在centos-puppet源中。


3、yum仓库资源

yumrepo{\"repo163\":#YUM源文件.repo的文件名descr= \"163repo\",#仓库的描述baseurl= \"http://mirrors.163.com/centos/$releasever/contrib/$basearch/\",#仓库的urlgpgcheck= \"0\",#是否检查仓库中的软件包GPG签名,可设置的值为0或者1.enabled= \"1\",#是否开启或者禁用仓库,可设置的值为1或者0.1为开启,0为禁用}
{enablegroups= ,#是否可以使用yumgroup参数,如yumgrouplist,yumgroupinstall等exclude= ,#排除那些软件的安装与更新,支持shell通配符。failovermethod= ,#可设置的值为priority,roundrobin.gpgkey= ,#仓库的软件包签名,GPG密钥的URL。include= ,#包含配置url.includepkgs= ,#只有匹配的软件包才能安装或者更新。keepalive= ,#设置http/1.1选项,可设置的为0或者1.metadata_expire= ,#元组数据的过期时间,单位时间为秒。miirorlist= ,#仓库的镜像列表。name= ,#仓库名字。priority= ,#优先级,可设置的是从1-99.protect= ,#启用或者禁用对这个仓库的保护。可设置的值为0或者1.proxy= ,#设置代理}


4、mount挂载资源

挂载共享文件夹

mount{\"/mount\":#挂载的目标目录,等同于name参数device= \"192.168.0.1:/share/nfs\",#挂载的来源设备fstype= \"nfs\",#文件系统类型options= \"_netdev,vers=3,tcp,rsize=8192,wsize=8192,noauto\",#其他选项}

挂载samba

mount{\"/media\":ensure= mounted,device= \"//172.22.2.89/public\",fstype= cifs,options= \"username=perofu,password=123456\";}

参数说明

mount{\'mount_cdrom\':name= \"/media/cdrom\",#挂载到的目标目录ensure= mounted,#要求被挂载状态fstype= \"iso9660\",#光盘的文件类型device= \"/dev/cdrom\",#光盘的设备,是个链接,指向/dev/sr0options= \"ro\",#以只读方式挂载光盘atboot= true,#允许开机启动时挂载上remounts= true,#允许重新挂载require= File[\'/media/cdrom\'],#要求挂载目标目录存在}

查看文件系统类型:

[root@centostest~]#mount/dev/mapper/vg_centostest-lv_rooton/typeext4(rw)/dev/sda1on/boottypeext4(rw)/dev/mapper/vg_centostest-lv_homeon/hometypeext4(rw)/dev/sr0on/media/cdromtypeiso9660(ro)

发现以下报错,是因为没有加上options = \"ro\",因为光盘是只读的。

[mount_cdrom])Couldnotevaluate:Executionof\'/bin/mount/media/cdrom\'returned32:mount:blockdevice/dev/sr0iswrite-protected,mountingread-only


©著作权归作者所有:来自51CTO博客作者月晴星飞的原创作品,如需转载,请注明出处,否则将追究法律责任 Puppet

本文链接: http://centimport.immuno-online.com/view-744328.html

发布于 : 2021-03-25 阅读(0)