2014年3月15日星期六

Puppet基础篇7-编写第一个完整测试模块puppet

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Puppet基础篇7-编写第一个完整测试模块puppet  阅读原文»

Puppet基础篇7-编写第一个完整测试模块puppet

Puppet基础篇7-编写第一个完整测试模块puppet

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

将Puppet部署到生产中第一个要编写的模块就是puppet本身,虽然puppet可以运行其它所有模块完成各自的部署,但是puppet一旦出问题,那么一切都会停止工作。当然除了puppet自身模块外,还需要保证网络的通畅以及其它你附加的环境等等。

之前编写过简单的motd模块,大致了解了一些模块的结构以及简单的pp语法,接下来我们进行详细的讲解。 那么编写一个完整的puppet模块应该考虑哪些因素呢?

  • puppet及附属依赖包是否已经安装OK?

  • puppet配置文件是否正确?

  • puppet服务是否正常运行?

  • 在更新puppet配置文件的情况下,是否能够主动让puppet服务重启或者reload?

  • puppet安装包是否能够自动升级到指定版本?

接下来以agent1和agent3为例进行讲解

1、创建puppet模块目录结构

  [root@puppetmaster ~]# cd /etc/puppet/modules/  [root@puppetmaster modules]# mkdir puppet  [root@puppetmaster modules]# cd puppet/  [root@puppetmaster puppet]# mkdir files manifests templates #创建模块目录结构  [root@puppetmaster puppet]# tree ../puppet  ../puppet  ├── files  #存放下载的文件  ├── manifests  #存放puppet配置  └── templates  #存放配置模板,方便pp文件引用  3 directories, 0 files  [root@puppetmaster puppet]#  

2、创建puppet配置文件

  [root@puppetmaster puppet]# cd manifests/  [root@puppetmaster manifests]# touch init.pp config.pp install.pp service.pp params.pp  [root@puppetmaster manifests]# tree ../  ../  ├── files  ├── manifests  │   ├── config.pp  #管理puppet配置  │   ├── init.pp    #管理模块所有pp文件配置  │   ├── install.pp #管理puppet安装  │   ├── params.pp  #管理模块中变量以及一些判断  │   └── service.pp #管理puppet服务  └── templates  3 directories, 5 files  

3、编写puppet模块配置文件

整个过程应该是这样,首先应该安装puppet(install.pp),然后配置puppet(config.pp),最后启动puppet服务(service.pp)

注意: 接下来的过程不是一步到位的,是一个循序渐进的过程,一步步指导直到完成一个比较完整的模块。

3.1、编写安装配置文件install.pp

通过package资源实现 更多有关package的语法及案例请访问http://kisspuppet.com/2013/11/11/package/

需要注意的是:class名称要和创建的模块名保持一致,名称为puppet,由于在整个配置文件中init.pp为起始配置文件,包含的都应该是子配置文件,所有应该写成"class主类名称::class子类名称",而class子类名称需要和创建的pp文件名保持一致,比如puppet::install,那么创建的子类名称就应该是install.pp

3.1.1、编写不具备判断条件的配置文件

节点安装puppet主要还依赖于facter

  [root@puppetmaster manifests]# vim install.pp  class puppet::install{  #一个类包含两个子类    include puppet::puppet_install,puppet::facter_install  }  class puppet::puppet_install{    package { 'puppet':      ensure => installed,  #要求处于被安装状态    }  }  class puppet::facter_install{    package { 'facter':      ensure => installed,    }  }  

也可以用以下两种写法

  [root@puppetmaster manifests]# vim install.pp  class puppet::install{  #一个类包含两个资源    package { 'puppet':      ensure => installed,    }    package { 'facter':      ensure => installed,    }  }  [root@puppetmaster manifests]# vim install.pp  class puppet::install{    package { ['puppet','facter']:  #采用数组的形式      ensure => installed,    }  }  

3.1.2、编写具备判断系统版本条件的模块

存在这样一种情况,在我的yum源中有很多puppet版本,而我只希望所有节点只安装我指定的版本,比如2.7.25,那么如何设置呢?其次,还应该考虑一种情况,节点的系统版本可能会不一样,比如有RHEL5、RHEL6等,那么如何让puppet模块自己去判断呢?

通过以下facter进行判断

  [root@agent1 ~]# facter | grep operatingsystemmajrelease  operatingsystemmajrelease => 5  [root@agent3 ~]# facter | grep operatingsystemmajrelease  operatingsystemmajrelease => 6  

应该是以下写法比较合理

阅读更多内容

没有评论:

发表评论