Puppet基础篇8-编写第二个完整测试模块yum

简介:

零基础学习Puppet自动化配置管理系列文档

工欲善其事必先利其器

上一节讲解了puppet基础环境模块puppet,除此之外影响puppet基础环境的还有一个模块叫yum源,当然这个是相对于RedHat系统而言的,如果是SLES系统,就要配置zypper源了,其它Linux系统也是如此。那么配置yum源需要用到哪些资源呢?

之前写puppet模块的时候用到了file资源、service资源、package资源,那么这三个资源是否能满足yum模块的配置呢,答案是肯定的。然而官方给出了专用的yumrepo资源,管理可以精确到repo里面的每一行,使用还是非常方便的,接下来,我们使用官方给出的yumrepo资源来配置yum模块。

注:上一节教会大家如何一步步创建一个完整模块,为了避免重复,这一节就直接贴配置了。

一、配置之前需要考虑的问题:

1、yum包需要被安装;

2、yum主配置文件yum.conf需要配置正确;

3、每台主机至少有两个repo源,一个指向本地的ISO源,一个指向自定义的puppet源;

4、不同系统版本的repo源中的部分参数略有不同,比如baseurl。

二、创建yum模块

1、创建yum模块目录结构

1
2
3
4
5
6
[root@puppetmaster modules]# tree yum
yum
├── files
├── manifests
└── templates
3  directories,  0  files

2、创建package资源

1
2
3
4
5
6
[root@puppetmaster manifests]# vim install.pp
class  yum::install{
   package  'yum' :
     ensure => installed, #要求yum这个包处于安装状态
   }
}

3、创建params.pp

根据操作系统版本定义repo文件中的各项条目

1
2
3
eg.
[root@agent1 ~]# facter | grep operatingsystemrelease   系统版本fact
operatingsystemrelease =>  5.7

由于RedHat存在多个版本,不同版本yum源的指向不同,对应的pki认证文件也不同,因此应当设置一些变量,然后进行引用。以下只定义了系统版本为5.7、5.8、和6.4的变量,如果有其它版本效仿即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@puppetmaster manifests]# vim params.pp
class  yum::params {
   case  $operatingsystemrelease{
     5.7 : {
       $yum_redhat_descr =  'rhel base rpm packages'   #定义redhat光盘源的描述信息
       $yum_puppet_descr =  'puppet rpm packages for rhel'  #定义puppet源的描述信息
       $yum_redhat_pki =  'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5'  #定义redhat光盘源的pki认证文件位置
       $yum_redhat_baseurl =  'file:///media/cdrom/Server'   #定义redhat光盘源baseurl的下载位置
       $yum_puppet_baseurl =  'ftp://puppetmaster.kisspuppet.com/RHEL5U7'  #定义puppet源baseurl的下载位置
       $yum_redhat_pki_name =  '/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5'  #定义puppet源pki认证文件位置
       $yum_redhat_pki_download =  'puppet:///modules/yum/PM-GPG-KEY/RPM-GPG-KEY-redhat-release-rhel5'  #定义pki文件的服务器下载地址
     }
     5.8 : {
       $yum_redhat_descr =  'rhel base rpm packages'
       $yum_puppet_descr =  'puppet rpm packages for rhel'
       $yum_redhat_pki =  'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5'
       $yum_redhat_baseurl =  'file:///media/cdrom/Server'
       $yum_puppet_baseurl =  'ftp://puppetmaster.kisspuppet.com/RHEL5U8'
       $yum_redhat_pki_name =  '/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5'
       $yum_redhat_pki_download =  'puppet:///modules/yum/PM-GPG-KEY/RPM-GPG-KEY-redhat-release-rhel5'
     }
     6.4 : {
       $yum_redhat_descr =  'rhel base rpm packages'
       $yum_puppet_descr =  'puppet rpm packages for rhel'
       $yum_redhat_pki =  'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel6'
       $yum_redhat_baseurl =  'file:///media/cdrom'
       $yum_puppet_baseurl =  'ftp://puppetmaster.kisspuppet.com/RHEL6U4'
       $yum_redhat_pki_name =  '/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel6'
       $yum_redhat_pki_download =  'puppet:///modules/yum/PM-GPG-KEY/RPM-GPG-KEY-redhat-release-rhel6'
     }
    default : {  #定义如果没有以上版本的系统,直接报以下错误,同时也是为了方便调试
       fail( "Module yum is not supported on ${::operatingsystem}" )
     }
   }
}

4、创建config.pp文件

config.pp文件用于管理yum主配置文件yum.conf,repo文件的属性,pki文件的属性及下载地址和yumrepo源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@puppetmaster manifests]# vim config.pp
class  yum::config{
   include  yum::params  #引用 class  yum::params
   include  yum::config_file,yum::config_key,yum::config_repo
}
class  yum::config_file{
   file {  '/etc/yum.conf' :  #创建file资源管理yum主配置文件yum.conf
     ensure  => present, #要求文件处于存在状态
     owner   =>  'root' ,  #属主为root
     group   =>  'root' ,  #属组为root
     mode    =>  '0644' ,  #文件权限为 644
     source  =>  'puppet:///modules/yum/etc/yum.conf' , #要求从puppetmaster服务器指定目录去下载
     require => Class[ 'yum::install' ], #要求在配置之前先安装yum软件包
   }
   file {  '/etc/yum.repos.d/rhel-base.repo' :  #设置光盘repo的一些属性
     ensure  => present,
     owner   =>  'root' ,
     group   =>  'root' ,
     mode    =>  '0644' ,
     require => Class[ 'yum::config_repo' ], #要求设置之前yumrepo资源rhel-base必须存在
   }
   file {  '/etc/yum.repos.d/rhel-puppet.repo' :  #设置puppet repo的一些属性
     ensure  => present,
     owner   =>  'root' ,
     group   =>  'root' ,
     mode    =>  '0644' ,
     require => Class[ 'yum::config_repo' ],  #要求设置之前yumrepo资源puppet必须存在
   }
}
class  yum::config_key{  #设置pki证书的一些属性及下载位置
   file { $yum::params::yum_redhat_pki_name:
     ensure => present,
     owner  =>  'root' ,
     group  =>  'root' ,
     mode   =>  '0644' ,
     source => $yum::params::yum_redhat_pki_download,
   }
}
class  yum::config_repo{
   yumrepo { rhel-base: #创建yumrepo资源rhel-base
     descr    => $yum::params::yum_redhat_descr, #设置描述信息
     baseurl  => $yum::params::yum_redhat_baseurl, #设置yum源下载地址
     enabled  =>  1 , #激活yum源
     gpgcheck =>  1 , #设置要求通过pki校验
     gpgkey   => $yum::params::yum_redhat_pki, #设置pki文件的下载位置
     require  => Class[ 'yum::config_key' ], #要求这个文件必须存在
     priority =>  1 , #设置repo的优先级为 1 (数字越小优先级越高)
   }
   yumrepo { rhel-puppet:
     descr    => $yum::params::yum_puppet_descr,
     baseurl  => $yum::params::yum_puppet_baseurl,
     enabled  =>  1 ,
     gpgcheck =>  0 ,
     priority =>  2 ,
   }
}

5、创建init.pp文件

由于params.pp文件中设置的变量名称引用太长,这里可以在init.pp中将变量名简化,方便引用。

1
2
3
4
5
6
7
8
9
10
11
class  yum(
   $yum_redhat_descr        = $yum::params::yum_redhat_descr, #
   $yum_puppet_descr        = $yum::params::yum_puppet_descr,
   $yum_redhat_pki          = $yum::params::yum_redhat_pki,
   $yum_redhat_baseurl      = $yum::params::yum_redhat_baseurl,
   $yum_puppet_baseurl      = $yum::params::yum_puppet_baseurl,
   $yum_redhat_pki_name     = $yum::params::yum_redhat_pki_name,
   $yum_redhat_pki_download = $yum::params::yum_redhat_pki_download
   ) inherits yum::params {   #设置这些变量依赖于yum::params类
   include  yum::config,yum::install  #包含所有子 class
}

因此、上面定义的class yum::config_key和yum::config_repo可以写成以下格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class  yum::config_key{  #设置pki证书的一些属性及下载位置
   file { $yum_redhat_pki_name:
     ensure => present,
     owner  =>  'root' ,
     group  =>  'root' ,
     mode   =>  '0644' ,
     source => $yum_redhat_pki_download,
   }
}
class  yum::config_repo{
   yumrepo { rhel-base: #创建yumrepo资源rhel-base
     descr    => $yum_redhat_descr, #设置描述信息
     baseurl  => $yum_redhat_baseurl, #设置yum源下载地址
     enabled  =>  1 , #激活yum源
     gpgcheck =>  1 , #设置要求通过pki校验
     gpgkey   => $yum_redhat_pki, #设置pki文件的下载位置
     require  => Class[ 'yum::config_key' ], #要求这个文件必须存在
     priority =>  1 , #设置repo的优先级为 1 (数字越小优先级越高)
   }
   yumrepo { rhel-puppet:
     descr    => $yum_puppet_descr,
     baseurl  => $yum_puppet_baseurl,
     enabled  =>  1 ,
     gpgcheck =>  0 ,
     priority =>  2 ,
   }
}

6、创建puppet.conf和pki文件

1
2
3
4
5
6
7
8
9
[root@puppetmaster yum]# tree files
files
├── etc
│   └── yum.conf  #可以从节点/etc/目录下copy一个yum.conf文件进行配置管理
└── PM-GPG-KEY
     ├── RPM-GPG-KEY-puppet-release  #自己做一个pki文件,如何做,请google
     ├── RPM-GPG-KEY-redhat-release-rhel5  #在RHEL5系统/etc/pki/rpm-gpg/目录下面有对应的pki文件,将其命个别名即可
     └── RPM-GPG-KEY-redhat-release-rhel6  #在RHEL6系统/etc/pki/rpm-gpg/目录下面有对应的pki文件,将其命个别名即可
2  directories,  4  files

7、应用到节点上

1
2
3
4
5
6
7
8
[root@puppetmaster modules]# vim /etc/puppet/manifests/site.pp
$puppetmaster =  'puppetmaster.kisspuppet.com'
class  environments{
   include  motd,puppet,yum
}
node  default {
    include  environments
}

8、在agent1上进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@agent1 yum.repos.d]# mv * /tmp/  #将所有的repo文件移动到/tmp目录下
[root@agent1 yum.repos.d]# puppet agent -t #运行一次puppet更新动作,可以通过以下日志看出更新
info: Caching catalog  for  agent1_cert.kisspuppet.com
info: Applying configuration version  '1395696487'
info: create  new  repo rhel-puppet  in  file /etc/yum.repos.d/rhel-puppet.repo
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-puppet]/descr: descr changed  ''  to  'puppet rpm packages for rhel'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-puppet]/baseurl: baseurl changed  ''  to  'ftp://puppetmaster.kisspuppet.com/RHEL5U7'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-puppet]/enabled: enabled changed  ''  to  '1'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-puppet]/gpgcheck: gpgcheck changed  ''  to  '0'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-puppet]/priority: priority changed  ''  to  '2'
info: changing mode of /etc/yum.repos.d/rhel-puppet.repo from  600  to  644
info: create  new  repo rhel-base  in  file /etc/yum.repos.d/rhel-base.repo
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/descr: descr changed  ''  to  'rhel base rpm packages'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/baseurl: baseurl changed  ''  to  'file:///media/cdrom/Server'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/enabled: enabled changed  ''  to  '1'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/gpgcheck: gpgcheck changed  ''  to  '1'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/gpgkey: gpgkey changed  ''  to  'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5'
notice: /Stage[main]/Yum::Config_repo/Yumrepo[rhel-base]/priority: priority changed  ''  to  '1'
info: changing mode of /etc/yum.repos.d/rhel-base.repo from  600  to  644
notice: Finished catalog run  in  0.51  seconds
[root@agent1 yum.repos.d]# ls
rhel-base.repo  rhel-puppet.repo
[root@agent1 yum.repos.d]# cat rhel-base.repo  #查看更新的光盘源文件
[rhel-base]
name=rhel base rpm packages
baseurl=file: ///media/cdrom/Server
enabled= 1
gpgcheck= 1
gpgkey=file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release-rhel5
priority= 1
[root@agent1 yum.repos.d]# cat rhel-puppet.repo #插件更新的puppet源文件
[rhel-puppet]
name=puppet rpm packages  for  rhel
baseurl=ftp: //puppetmaster.kisspuppet.com/RHEL5U7
enabled= 1
gpgcheck= 0
priority= 2

说明:关于puppet的资源目前大概有48种,这里就不一一介绍了


本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1382868,如需转载请自行联系原作者

相关文章
|
1月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
60 7
|
20天前
|
数据采集 移动开发 算法
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现QPSK调制与软解调系统,包含Testbench、高斯信道、误码率统计模块,并支持不同SNR设置。硬件版本新增ILA在线数据采集和VIO在线SNR设置功能,提供无水印完整代码及测试结果。通过VIO分别设置SNR为6dB和12dB,验证系统性能。配套操作视频便于用户快速上手。 理论部分详细解析QPSK调制原理及其软解调实现过程,涵盖信号采样、相位估计、判决与解调等关键步骤。软解调通过概率估计(如最大似然法)提高抗噪能力,核心公式为*d = d_hat / P(d_hat|r[n])*,需考虑噪声对信号点分布的影响。 附Verilog核心程序代码及注释,助力理解与开发。
57 5
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现MSK调制解调系统,采用Verilog开发,包含同步模块、高斯信道模拟、误码率统计等功能。相比仿真版本,新增ILA数据采集与VIO在线SNR设置模块。通过硬件测试验证,展示不同SNR(如10dB和16dB)下的性能表现。研究聚焦软件无线电领域,优化算法复杂度以适应硬件限制,利用MSK恒定包络、相位连续等特性提升频谱效率。核心代码实现信号生成、调制解调、滤波及误码统计,提供完整的硬件设计与分析方案。
92 19
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
81 17
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前开发的16QAM调制与软解调系统,增加了硬件测试功能。该系统包含FPGA实现的16QAM调制、软解调、高斯信道、误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置模块。通过硬件测试,验证了不同SNR条件下的系统性能。16QAM软解调通过比较接收信号采样值与16个调制点的距离,选择最近的调制点来恢复原始数据。核心Verilog代码实现了整个系统的功能,包括SNR设置、信号处理及误码率统计。硬件测试结果表明系统在不同SNR下表现良好,详细操作步骤可参考配套视频。
67 13
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
57 7
|
1月前
|
数据采集 算法 数据处理
【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的256QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同信噪比(如30dB和40dB)的仿真测试,并提供配套操作视频。256QAM调制方案每个符号携带8比特信息,通过复数值星座图映射实现高效传输。Verilog代码展示了核心模块设计,包括SNR设置、数据处理和ILA测试分析,确保系统在实际硬件环境中的稳定性和性能。
35 2
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的16QAM基带通信系统硬件测试版本。该系统在仿真基础上增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同信噪比(如15dB、25dB)的测试。16QAM是一种正交幅度调制方式,通过两路4ASK信号叠加实现,每个符号包含4比特信息。系统采用正交调幅法生成16QAM信号,并通过DAC转换为模拟信号。解调时使用正交相干解调,经低通滤波器恢复电平信号。开发板内完成发射与接收,无需定时同步模块。代码可移植至其他开发板,具体步骤见配套文档。
47 2
|
2月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的2ASK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍基于FPGA的2ASK调制解调系统,涵盖仿真效果、理论知识、Verilog核心程序及开发板使用说明。系统包含testbench、高斯信道模块和误码率统计模块,支持不同SNR设置。硬件测试版本增加了ILA在线数据采集和VIO在线SNR设置功能。2ASK调制通过改变载波振幅传输二进制信号,FPGA实现包括系统设计、Verilog编码、仿真测试和硬件部署。详细操作步骤见配套视频,代码适用于多种开发板,提供移植方法。
54 1
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的64QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的64QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集模块和vio在线SNR设置模块,支持不同SNR条件下的仿真与测试。通过设置SNR为25dB和30dB进行测试,验证了系统的可行性和性能。此外,本文详细阐述了64QAM调制解调的工作原理,包括信号生成、调制、解调及误码率测试等环节,并提供了Verilog核心程序代码。
33 0

热门文章

最新文章

推荐镜像

更多
下一篇
oss创建bucket