Puppet 通过基础模块、类、节点正则表达式批量管理Apache服务器

=> 创建httpd基础模块
# mkdir /etc/puppet/modules/httpd/{files,manifests,templates} -pv 
# tree /etc/puppet/modules/httpd/
/etc/puppet/modules/httpd/
├── files  //基础模块所调用的配置文件,agent可以通过puppet协议将files目录所定义的文件下载到本地。
├── manifests   //主要存放基础模块所使用的类文件及相关资源,如init.pp文件。
└── templates//主要存放定义的模板文件,例如虚拟主机的定义等等。

3 directories, 0 files

=> 存放测试页面或者存放http的配置文件,这里一测试页面为例进行演示。
# ls /etc/puppet/modules/httpd/files/
index.html

=> 定义各资源清单,如package、services、file、init等资源。
     manifests主要存放管理代码以及site.pp入口,并根据init.pp定义进行调用资源清单。
# cd /etc/puppet/modules/httpd/manifests

=> 定义package资源
# cat install.pp
class httpd::install {
package {‘httpd‘:
ensure => installed,
allow_virtual => false,
require => Class[httpd::file],
}
}

=> 定义file资源,主要用于定义agent获取资源的方式以及属性信息
# cat file.pp
class httpd::file {
file {"/var/www/html/index.html":
ensure => file,
owner => root,
group => root,
source => "puppet:///modules/httpd/index.html"
}
}

=> 定义service资源
# cat service.pp
class httpd::service {
service {"httpd":
ensure => running,
enable => true,
}
}

=> 定义init.pp资源主要用于调用manifests所定义的类资源
# cat manifests/init.pp 
class httpd {
include httpd::install    调用install资源清单
include httpd::service    调用service资源清单
include httpd::file    调用文件资源清单
}

=> 通过正则表达式管理节点
   主要用于判断agent所匹配的信息,满足执行相关资源定义,不满足则匹配默认(default)所定义的资源。
# cat /etc/puppet/manifests/site.pp
node /^(agent|zabbix)\.gdy\.com$/ {  //只有满足主机名为agent.gdy.com和zabbix.gdy.com两台主机,才会加载httpd基础模块,其他则加载default所定义的资源。
include httpd
}
node default {   ==>  当agent不满足需求时,则执行通知机制。
notify {"Notice error,Not match your node,this is default node":}
}

=> 通过基础模块的形式部署Apache基本完成,下面我们一起看下测试结果,是否正常安装Apache呢?
注意:
其他相关组件的安装和定义类似,例如(LNMP/LAMP/tomcat...),大家只需定义相关资源即可。
================

=> agent端测试:
[[email protected] ~]# hostname 
zabbix.gdy.com    
[[email protected] ~]# rpm -qa | grep httpd
httpd-tools-2.2.15-29.el6_4.x86_64
[[email protected] ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for zabbix.gdy.com
Info: Applying configuration version ‘1435386756‘
Notice: /Stage[main]/Httpd::Install/Package[httpd]/ensure: created
Notice: /Stage[main]/Httpd::Service/Service[httpd]/ensure: ensure changed ‘stopped‘ to ‘running‘
Info: /Stage[main]/Httpd::Service/Service[httpd]: Unscheduling refresh on Service[httpd]
Notice: /Stage[main]/Httpd::File/File[/var/www/html/index.html]/ensure: defined content as ‘{md5}d72717e69f29438790d728bdcad27913‘
Notice: Finished catalog run in 9.86 seconds
[[email protected] ~]# rpm -qa | grep httpd
httpd-tools-2.2.15-29.el6_4.x86_64
httpd-2.2.15-29.el6_4.x86_64
[[email protected] ~]# service httpd status
httpd (pid  1298) is running...
[[email protected] ~]# chkconfig --list httpd
httpd          0:off1:off2:on3:on4:on5:on6:off
[[email protected] ~]# 
//当前系统主机名为zabbix.gdy.com,满足我们所定义的主机,所以会加载httpd基础模块下的资源。

===============================================
[[email protected] ~]# hostname 
test01.gdy.com           => 当前主机名为test01.gdy.com,是不满足我们的需求,则会执行default所定义的通知机制。
[[email protected] ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for test01.gdy.com
Info: Applying configuration version ‘1436147237‘
Notice: Notice error,Not match your node,this is default node
Notice: /Stage[main]/Main/Node[default]/Notify[Notice error,Not match your node,this is default node]/message: defined ‘message‘ as ‘Notice error,Not match your node,this is default node‘
Notice: Finished catalog run in 0.05 seconds
//当前系统主机名为test01.gdy.com,不满足所定义的主机资源,故执行默认所定义的default资源。

=> ok,今天就先到这,谢谢大家
时间: 2024-10-09 11:33:33

Puppet 通过基础模块、类、节点正则表达式批量管理Apache服务器的相关文章

ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器:  2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问:  比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求:  下面介绍下对于我这种场景需要使用的ansible的主要模块:  关于ansible是什么以及安装配置请自行

使用ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问: 比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求: 下面介绍下对于我这种场景需要使用的ansible的主要模块: 关于ansible是什么以及安装配置请自行百度:

通过ansible批量管理Linux服务器:配置Inventory和批量执行命令

ansible是一款比较新的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配

Python自动化运维开发之paramiko(远程批量管理服务器)

一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助. 二:安装方法 安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块.唯一麻烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko无法安装

python 全栈 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据流中接收) 1.函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error mes

Puppet之基础篇

一.基本概念 资源:是Puppet最基础的元素.资源可以是文件.服务.软件包.自定义脚本等.Puppet主要的特色就是处理资源与资源之间的依赖与关系 属性:资源需要定义的相关属性值,通过属性的定义才知道资源在做什么 类:将多个资源组织起来进行重新定义. 模块:多个类的集合. 变量:与其他语言类似,同样支持变量. 参数:通常把传递给变量的值称为参数 节点:Puppet的每一个客户端,即主机.Puppet在管理主机时要求与计算机配置的主机名保持一致,并建议采用DNS来管理主机名.   二.语法与命令

[翻译]用 Puppet 搭建易管理的服务器基础架构(3)

我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第三部分. 本文由 伯乐在线 - Wing 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Manuel Kiessling.欢迎加入翻译组. <用 Puppet 搭建易管理的服务器基础架构(1)> <用 Puppet 搭建易管理的服务器基础架构(2)> 关于 在<用 Puppet 搭建易管理的服务器基础架构(2)>中,我们在 Puppet master上编写了第一个非常简单的清单,来对puppetcl

常用的基础模块介绍

模块,是用一堆代码来实现某个功能的代码集合类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码来调用该功能,提供了代码的重用性和代码间的耦合性而对于一个复杂的功能,可能需要多个函数才能完成,这些文件组成的代码集合称为模块模块分为三种:自定义模块:内置标准模块:开源模块模块一:datetime和time 1 import time 2 print("返回标准时间(含年月日等信息):",time.asctime()) 3 print("返回本地时间的struct t

Puppet自编模块(一):nginx

说明:前面已经有六编文章分别介绍了几个模块以及一些资源的应用,"Puppet自编模块"系列是进阶实战编,有不明之处或好的优化建议或有错误的地方欢迎回复. 一.模块说明     Nginx反向代理服务.缓存服务.负载均衡服务. 二.目录结构 三.代码展示 1.files目录 conf.d    #其下存放nginx的配置文件,根据环境不同使用不同代码,也可以使用puppet的environments技术,本人暂未研究. DeployPub     #生产环境的配置文件 DeployTes