已经有2年多的时间没有写博客来。有点不好意思,但在奇虎360真的是太忙了,没有那么多精力来写博客。

今天是周末抽出一点时间来更新一下自己的博客,希望自己的博文能够给大家有些许帮助。也希望通过博客

认识更多的运维朋友,大家一起学习,一起进步。

原来写过一篇puppet搭建的文章,今天跟大家分享的是puppet“资源”。什么是资源?所有由puppet的统一的管理的不管是文件、目录、安装包、cron、脚本等都称之为资源。大家在用puppet的时候最经常做的事情也就是来定义资源,然后用定义好的资源来统一管理和配置服务器资源,以达到节约维护成本和尽量避免人为故障的目的。

下面来用我工作当中的实际场景跟大家分享常用的资源定义。

这个pp文件是我/etc/puppet/modules下的一个业务的pp文件内容。

说明一下,我的这个puppet管理公司几个不同的业务。不同的业务在puppet里面都是以模块的方式存在,所有的模块都在/etc/puppet/modules目录下存放。然后每个模块下都有三个目录,分别是files  manifests  templates。files目录主要是存放模板文件和目录的;manifests是声明目录,也就是存放以pp结尾的声明文件;templates是用来存放模板文件的,下面有实例来说明它的作用。

下面这个文件的名字叫init.pp也就是初始化pp,它也可以include其他文件进来。该文件内容如下:

class syewu::conf {

#class是来定义一个类,syewu是我的业务名称,两个冒号后面的conf就是该类的名称。

file { "hosts":

#file是来定义文件的,后面的hosts只是一个文件的标识,并不是文件的名称,能看到这个标识想到是你想定义的哪个文件就ok了。

source => "puppet:///modules/syewu/hosts",

#source是来定义该文件的来源的,这里是说文件来源于syewu模块下的files/hosts。也就是我上面说的每个模块下都有一个files目录的作用。注意冒号后面有三个斜线。

path => "/etc/hosts",

#path是puppet客户端要同步的文件在实际操作系统中的位置。注意是绝对路径。

mode => "644", owner => "root", group => "root",

#这一行大家应该能看的懂。文件的权限和属主/属组。

}

$arr_package = ["qihoo-ops-nginx", "Qihoo-lockf"]

#定义一个数组,我这里是定义的这个业务下需要安装的rpm包。

package { $arr_package:

#调用我前面定义的数组

provider => "yum",

#provider是指谁来提供刚才定义的rpm包,

ensure => installed,

#ensure后面指的是动作,也就是安装这些包。如果已经安装则忽略。

file { "/usr/local/nginx/conf/include":

source => "puppet:///modules/syewu/nginx/conf/include",

mode => "644", owner => "nginx", group => "nginx",

ignore => '*statdata*',

#前面三行前面已经介绍;ignore是忽略的意思,这里是指忽略include目录下包含statdata的所有文件和目录。

recurse => true,

#这个选项一定要注意,recurse是递归的意思。也就是说include目录下所有的文件和目录,以及该目录下的所有子文件和子目录。

purge => true,

#这个选项也要注意,它是强制一致的意思。比如客户端的include目录下有一个文件a,但puppet server端定义的include目录下没有该文件,则客户端会强制删除该文件,如果不加这个选项,客户端会保留这个文件。

notify => Service["nginx"],

#notif是通知的意思,也就是说如果include目录下内容有变动,则通知服务nginx做重启操作。

}

file { "/home/shells":

#file也可以这样来定义,直接在第一行来定义客户端实际存放文件的位置。注意在linux下,文件和目录都可以统称为文件。

source => "puppet:///modules/syewu/shells",

mode => "755", owner => "root", group => "root",

recurse => true,

#同步该目录下的所有文件,保证这些文件都有可执行权限。我喜欢把自己经常用的脚本都放到一个目录下,这样比较容易找到,也方便批量操作。

file { "nginx-processor":

path => "/usr/local/nginx/conf/processor.conf",

mode => "644", owner => "nginx", group => "nginx",

content => template("syewu/processor.erb"),

#我维护的这个业务有几百台机器,而且服务器的配置都是不一样的,有的是8核,有的16核等。而我nginx启动的时候我想让nginx进程数跟服务器cpu的核数是一样的。这样一来必然导致nginx的配置不一致。后来我想了一个办法,让nginx的主配置文件是一样的,在主配置文件include进来一个processor.conf。这个文件来控制nginx的启动数。content是内容的意思,template是指模板。也就是在模块syewu的templates目录下有一个模板文件,名字是 processor.erb。这个模板的内容如下:

worker_processes <%= scope.lookupvar("processorcount") %>;  注意processorcount是linux下facter工具里面的一个变量,在linux下执行facter可以看到这个变量,这个变量的意思是查看linux下cpu的核心数。

}

exec { "/create-qihu-yum":

#exec是执行的意思,后面也是对要执行内容的一个标识,不是实际要执行的脚步。

command => "sh /home/gehailong/yum-qihu.sh",

#command后面才是要执行的内容。

path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/", "/usr/local/bin", "/usr/local/sbin" ],

#注意我这里定义path的作用。它跟系统里的path含义类似,也就是说从你定义的路径中来搜索你要执行的命令。

creates => "/etc/yum.repos.d/CentOS-QH.repo",

#creates是指前面执行脚本的结果是来创建这个repo文件的内容。

}

service { "nginx":

#service是来定义一个服务

enable => true,

#enable是指该服务的状态为存在。

ensure => running,

#ensure是指这个服务要处于running状态,如果不是则启动该服务。

hasstatus => "false",

hasrestart => "false",

restart => "/etc/init.d/nginx reload",

start => "/etc/init.d/nginx start",

stop => "/etc/init.d/nginx stop",

status => "/etc/init.d/nginx status",

}

cron {'xitongbu-jiankong':

#cron是来定义linux的计划任务。后面是对该计划任务的描述。

command => "/usr/local/monitor/generic_monitor/control.py",

#command是实际计划任务的内容。

user => root,

#user指用哪个用户来定义该计划。

minute => '0-59/5',

#这里是定义时间,minute是分钟,还可以定义hour等内容。注意这里也支持通配符,比如*

ensure => absent ,

#ensure后面的absent的意思是取消客户端的这跟cron。比如批量解除客户端原来定义的一个cron就可以这样来做。都删除之后就可以把这段注掉来。

}

}

先跟大家分享这些吧。写的比较仓促,有些的不妥的地方,欢迎大家来吐槽!!!

转载于:https://blog.51cto.com/gehailong/1544184

linux下puppet的“资源”管理相关推荐

  1. linux通用自启动管理,linux下通过xinetd服务管理 rsync 实现开机自启动

    1.1 xinetd服务配置 1.1.1 检查xinetd服务是否安装 [root@backup ~]# rpm -qa xinetd [root@backup ~]# rpm -ql xinetd ...

  2. Linux运维之linux下文件与目录管理

    一.实验环境(rhel7.0版本) 主机环境:rhel7.0 各主机信息 主机名 IP server 172.25.254.1 二.Linux的系统结构 1.Linux系统是一个根文件系统,是一个倒树 ...

  3. linux下设备或资源忙,linux删除文件目录 目录设备或资源忙怎么办

    linux删除文件目录 目录设备或资源忙怎么办 来源:未知 作者:老黑 时间:09-09-21 [打印] [root@rs swms]# rmdir zpgg rmdir: 'zpgg': 设备或资源 ...

  4. linux下清理脚本,脚本--Linux下清理IPC资源

    Linux 下使用用Tuxedo经常会遇到,can't attach to BB,但相关的Tuxedo Server还在运行,使用tmshutdown -y 和tmipcrm -y  无法停止Tuxe ...

  5. linux下添加mq队列管理配置,linux下 MQ第二弹:队列管理器的配置,实现双机MQI通道异步双向通信,亲测!!...

    本人前面文章一提到MQ 在linux下的安装,在此只描述队列管理器的配置,实现MQI通道的双向通讯. 一下方法我已亲测!! 贴出A,B两机的MQ配置记录: A机: #**--------------- ...

  6. linux 命令gpasswd -a,gpasswd命令_Linux gpasswd命令用法详解:Linux下工作组文件的管理工具...

    gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow管理工具. 语法gpasswd(选项)(参数) 选项-a:添加用户到组: -d:从组删除用户: -A:指定管理员 ...

  7. linux下的CPU频率管理器

    今日,查看资料,方知在linux下有一个用于移动设备省电用的:CPU频率调整器. 在百度里,没有找到详细的说明资料,可把此事当做课题,留待以后研究. 转载于:https://blog.51cto.co ...

  8. Linux下通过C语言管理网络--基于ioctl

    Linux下通过ioctl接口获取和设置IP地址,获取和设置mac地址,获取和设置网卡当前状态,获取和配置网关 /** Copyright (C) 2021, 2021 huohongpeng* Au ...

  9. linux下的软硬资源限制,关于ulimit命令修改软硬资源大小说明及正确修改软硬资源限制数配置...

    近来,同事做了一些CentOS的优化,用于部署线上服务,问我修改了软硬资源进程数限制,为什么重启后没生效.我说配置写到配置文件里,是可以生效的啊.于是,检查了下他系统的优化配置,发现他修改进程数限制配 ...

最新文章

  1. component-scan和annotation-driven
  2. 云游戏、VR、AI,云计算给元宇宙提供了哪些想象力?
  3. 具有缺失值的多元时间序列的递归神经网络
  4. 这些面试题你会吗?Java-类与对象再不了解你就out啦
  5. 假如我是陈一舟--我的大社交生态系统战略
  6. Python脚本-批量修改文件名
  7. arm ida 伪代码 安卓 符号表_IDA 制作 sig文件 gdb 导入符号表
  8. 欧拉好猫车主公开信:宣传部对员工学历没有要求么?
  9. 【白皮书分享】2020-2021年运营从业者薪资及职业现状调查白皮书.pdf(附下载链接)...
  10. 接口测试及服务器性能压测,接口测试及服务器性能压测
  11. 检索 COM 类工厂中 CLSID 为 {xxx} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。...
  12. 对服务器上出现大量的SYN_RCVD状态的TCP连接的问题分析
  13. SpringDataJPA之Specification复杂查询
  14. Eloquent: 修改器
  15. PPT加密了如何打开文件
  16. 微信小程序跳转公众号h5页面
  17. 巧妙使用css美化网页
  18. java similarity_Java WordNet Similarity
  19. 北漂程序员一天的生活
  20. Vim快速移动光标至行首和行尾 、第一行和最后一行

热门文章

  1. python xlwt写入excel_python xlwt模块写入excel超过65536行报错问题解决方法
  2. 概率机器人总结——占用栅格地图先实践再推导
  3. 【GAN优化】如何选好正则项让你的GAN收敛
  4. 全球及中国不锈钢商用厨刀行业营销战略及未来发展趋势分析报告2022年版
  5. 欲了解Android Studio,必先知道Gradle
  6. SAE取消每日免费云豆赠送机制
  7. python excel读取出错_python读取excel数据出错
  8. openresty开发系列21--lua的模块
  9. 自用懒加载(其实效果并不是很好),自带的懒加载还好(2)(优化)
  10. P1131 [ZJOI2007]时态同步