puppet(2)-资源介绍

puppet- 资源介绍:

  • 类型、属性与状态同实现方式分离、仅指定目标状态

      type {'title':attribute   =>  value,...}
  • 查看支持的资源类型:

      puppet describe -lpuppet describe -s TYPEpuppet describe TYPE
  • 定义资源的要点:

      1、同一种类型中,资源名称必须惟一;2、资源名称是否区分大小与取决于OS;
  • 独特属性:

      package {'nginx':ensure  => present,name    => nginx,}命名变量:namevar,可省略,默认为title
  • 常用类型:package, user, group, file, service, exec, cron, notify
  1. group的常用属性:

     ensure: present, absentname: 组名gid: GIDsystem: 是否为系统组;true, yes; false, no
  2. user的常用属性:

     ensure: present, absentname: 用户名uid: UIDsystem: 是否为系统用户;gid: 基本组;groups: 附加组;home: 家目录;password: 密码;shell: 默认shell;comment: 注释信息;expiry: 账号过期期限 不常用
  3. file的常用属性:
    管理文件从属关系、权限及其内容。

    管理的类型有:

     普通文件目录符号连接等(通过ensure属性指定)

    如果管理普通文件,文件内容可以:

     直接用content属性直接给出,或者用source属性根据远程服务器下载生成

    如果是目录:resource属性+recurse属性可以递归下载目录
    核心属性:

     resource: 可以递归下载目录同时要配合另外一个recurse属性定义是否递归下载构造目录。recurse: 属性是布尔型。因此recurse属性 只有在ensure 属性为directory时才有意义。content:直接生成的文件内容;source: 通过指定的URL下载文件至目标位置;愿文件路径,可以是本地文件路径(单机模型),也可以使用puppet:///modules/module_name/file_name modules指的是模块路径,modele_name是模块名称ensure: file, directory, link, absent, presenttarget: 符号链接文件的链接目标;一般当ensure属性为link时才需要指定此属性,表示从哪里链接,一旦定义target,那么content和source就没有用了,没有任何意义。owner: 属主group: 属组mode: 权限,支持八进制个石泉县,以及u,g,o的赋权方式path:目标路径,指定文件放哪建议使用绝对路径force: 强制删除;仅用于ensure为absent时; 不是必须属性purge: 清除指定目录中存在的,但是在puppet中未定义的文件;replace:是否替换已经存在的文件;
  4. exec的常用属性:
    运行一外部命令,命令应该具有“幂等性” (可以多次运行,不会损坏结果)

     幂等性:1. 命令本身具有 “幂等性”。 (yum  update ,apt-get update)2. 资源有onlyif,unless,creates 等属性以实现命令的条件式运行。onlyif 仅在什么时候执行unless 除非什么条件下执行creates 刚刚创建时执行比如创建目录/创建文件3. 资源有refreshonly 属性,实现只有订阅的资源发生变化时才执行。只有在刷新时运行:只有这个资源依赖的其他资源改变了,这个命令才运行.用于执行命令;但通常仅应该用于必须执行命令才能完成操作时(puppet本身无法完成此功能);

    核心属性

     command: 要执行的命令,通常应该使用绝对路径;creates:文件。 此属性跟的文件不存在时才执行命令。加入command 是创建 文件,那么执行的条件是这个文件不存在onlyif:给定测试命令。仅在此命令执行成功即执行状态码返回为0,才执行command命令unless:给定测试命令。 和onlyif相反,仅当测试命令执行状态码不为0时,才执行command命令cwd: 目录, 在哪个目录下运行命令path:为非绝对路径的命令指定搜索路径; 类似 环境变量 [path1,path2],如果不定义此属性,则必须给出命令的绝对路径。user:group:refresh: 跟命令,默认为收到依赖的资源的事件时会重新执行此命令;但此属性可以修改此默认行为;(定义命令接收到刷新通知时怎样操作,跟的也是命令,默认命令在执行一次,可以自定义,加入此命令为创建目录,当接收到刷新通知时,你可以先删除在创建。简单点就时 刷新时执行的命令。)refreshonly: 此资源不会自动被执行,除非被依赖的资源发生了改变;(仅在收到refresh通知时,才运行此资源,布尔型值)returns: 指定状态返回值;指定期望得到的返回值,当返回非此值时表示命令执行失败,默认为0, 一般不需要定义tries: 尝试执行次数 ,默认一次 根据returns 判断是否成功timeout: 超时时长
  5. notify 最简单的资源,就是显示信息

     核心属性message 要发送的消息的内容,还是name/namevalue notify {'title':message     => 'something here',}
  6. cron的常用属性: 定义任务计划/管理任务计划

     ensure: present, absentcommand: 周期性执行的命令;environment: 定义PATH环境变量;hour:minute:month:monthday:weekday:
  7. package的常用属性:
    管理程序包: 卸载,安装,升级

     ensure:installed, latest,version(2.3.1-2.el7) ,present, absentname: 程序包名称source:包文件的路径,可以是本地文件系统路径,也可以是个url;puppet:///modules/MODULE_NAME/FILENAMEprovider 指定采用哪种方式安装程序包,如在centos系统中默认采用yum进行安装。现在想通过rpm进行安装,安装的源就是source属性所指定的文件,那么就必须使用provider属性 定义成rpm了。所以说 只有当provider 设置了 ,source属性才有意义。那么又一个实际应用的问题,当你采用rpm进行安装时,需要解决依赖关系,那么怎么解决依赖关系呢。这时候我们就需要使用exec资源了。yum install指定本地安装文件,那么会使用本地的rpm包进行安装,同时又能解决依赖关系。最后你会发现使用exec资源是万能的。当编译安装的时候 还是要采用exec资源进行.其他属性用的都不多了

    范例:

     package{'mysql':ensure  => installed,provider    => msi,source      => "D:\mysql\mysql-5.5.45.msi",install_options =>  {'INSTALLDIR' => 'C:\mysql'},}
  8. service 管理服务的

     service的常用属性:binary: 指定执行文件ensure:true, running 启动false, stopped 停止enable: 是否开机自动启动name:服务名称path: 服务脚本路径 我们知道,在linux系统下有两种启动方式, 一种是直接调用二进制执行文件,另外一种就是用系统中的服务管理命令,比如centos6中的service。所以当你不指定binary文件时,这个path就是指centos系统中的service命令调用哪个执行文件。我们知道一般service管理的服务命令都在/etc/init.d/目录下。如 /etc/init.d/httpd 文件。另外还有当用service进行管理服务时会有restart,status,start ,stop等选项。但是 puppet 并不知道你有没有这些命令所以才会有 hasrestart ,hasstop,hasstart, hasstatus属性,都是布尔值型。当你把这些值设置为false时,服务又有需求接受refresh 刷新后进行restart,那你怎么办呢。所以又需要我们自己在资源中定义start,stop, restart, status等属性,属性值为命令hasrestart: 是否支持restart参数hasstatus: 是否支持status参数pattern: 指明用于搜索此服务相关进程的模式,当脚本不支持restart/status时,用于确定服务是否处于运行状态。如果你的服务不支持stop,那就需要kill掉进程,那kill 的时候我们知道有的服务启动的进程有好几个,就需要匹配需要kill 掉的每个进程的,这个应该也是用patternstart:stop:restart: reloadstatus:
  • 资源的特殊属性:
    元参数:以下四个参数都以其他定义过的的资源作为属性值,但是写法必须时Type['title'] 资源类型首字母要大写

    用于定义资源间的依赖关系

      before => Type['title']require => Type['title']

    用于定义通知通知和订阅的

      notifysubscribe

    before/require使用举例

      before代表 当前资源要在某个资源执行之前执行require 当前资源执行需要某一个资源已经执行了还有一种链式表示的方法,用 ->表示

    范例

    方法一 before:

          group{'linux':gid => 3000,ensure => present,before => User['suse'],}user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,}

    方法二 require:

          group{'linux':gid => 3000,ensure => present,}user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,require => Group['linux'],}

    方法三 -> :

          group{'linux':gid => 3000,ensure => present,} ->user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,}

notify/subscribe 通知/订阅举例

    这个用服务举例,我们知道nginx服务,当配置文件发生变化时,服务经常需要重新加载配置文件或者重启。puppet agent每隔一段时间去获取下catelog有无变化,有变化就会将file资源更新,这时service资源就需要执行restart 操作,那么我们首先要知道 puppet 里service资源什么时间会调用restart ,当资源接收到refresh时就会调用restart,那么什么时候会触发refresh呢?就是当前资源接收到通知 或者 当前资源订阅的主题有新信息了。

转载于:https://www.cnblogs.com/zhming26/p/8629946.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无盘服务器磁盘缓存,云更新无盘服务器磁盘缓存器

云更新无盘服务器磁盘缓存器 内容精选换一换Linux操作系统下,用户由于误操作卸载弹性云服务器上的Tools,会对非PVOPS系统的磁盘和网卡产生影响,导致系统无法发现数据盘。此时,用户可通过新建一个弹性云服务器,将原数据…

【Selenium】之谷歌、IE、火狐浏览器各个版本的浏览器驱动下载地址

地址:chromedriver官网下载地址: http://chromedriver.storage.googleapis.com/index.html(失效了) http://npm.taobao.org/mirrors/chromedriver/ IE浏览器驱动下载地址为:http://selenium-release.storage.googleapi…

云财经服务器维护,云财经服务器维护

云财经服务器维护 内容精选换一换云耀云服务器适用于对CPU、内存、硬盘空间和带宽无特殊要求,服务一般只需要部署在一台或少量的服务器上,一次投入成本少,后期维护成本低的场景。例如网站开发,Web应用。推荐使用云耀云服务器&…

字符编码和文件处理

字符编码 1、知识储备 cpu 内存 硬盘2 文本编辑器存原理 结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果 跟编写一个普通的文本文件是没有任何区别, 只有把py程序交给python解释并且在运行的第三个阶段才有了 语言意义…

服务器lsass系统错误,Win7系统提示Lsass.exe系统错误的原因及解决

最近很多使用Win7系统用户反馈说开机提示lsass.exe系统错误,也不知道怎么回事?lsass.exe是什么进程,可能是病毒吗?带着这些疑问,下面小编告诉大家Win7系统提示Lsass.exe系统错误的原因及解决方法,希望本教程内容可以帮助到大家。…

鼠标移动或者鼠标点击div消失不见排查

点击事件,导致某div或者容器样式隐藏,如果不能直接发现click事件绑定,那么首先排查哪些方法在控制div的样式, 然后看一看哪些方法在调用修改样式的方法。 然后再排查什么在调用修改样式的方法的方法。顺藤摸瓜就知道问题所在了。 …

服务器proc文件,特殊文件系统proc

1. 对kern_mout()进行解析:(1) 调用函数get_unnamed_dev()为文件系统/proc文件系统分配一个设备号。(2) 调用函数read_super对应的函数proc_read_super()分配super_block,inode,dentry;(a)其中super_block是在函数read_super中新生成的;(b)in…

相对路径 web

http://www.jb51.net/web/21806.html 相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。   绝对路径-以Web站点根目录为参考…

java基础英语---第一天

Path [ pɑ:θ ] 路径 class [klɑ:s] 类 classpath [klɑ:spɑ:θ ] 类路径 public [p ʌblik] 公共的,公用的 private [praivit] 私有的,私人的 static [st tik] 静的;静态的;静止的 void [vɔid] 空的,没有返回值的 main [mein] 主要的,重要的 System [sis…

洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)

题目链接 //利用先前的根节点建树 想一下不难写。 #include <cstdio> #include <cctype> //#define gc() getchar() #define gc() (SSTT&&(TT(SSIN)fread(IN,1,MAXIN,stdin),SSTT)?EOF:*SS) const int N1e65,MAXIN2e6;int n,q,root[N],A[N]; char IN[MAXI…

anaconda下安装新包一直报错(‘parse() got an unexpected keyword argument 'transport_encoding'’)...

pip没有更新 解决方案&#xff1a;在prompt上输入 “ conda install pip ”转载于:https://www.cnblogs.com/Li---Chao/p/8641299.html

NFS服务端安装与配置

一、NFS介绍 NFS数据传输基于PRC协议&#xff0c;用于在网络上共享存储。 二、服务端配置NFS 1、服务端安装包 nfs-utils和rpcbind,使用yum安装nfs-utils时会一起安装rpcbind. yum install -y nfs-utils 2、创建配置文件 vim /etc/exports&#xff0c;写入以下内容&#xff1a…

HashMap的结构及源码分析

最近朋友说研究并发可以先从HashMap源码分析开始&#xff0c;所以就研究了下HashMap的结构和源码。 先从HashMap的结构开始。 我们都知道HashMap的用来存储key,value键值对数据的。既然是存储数据的&#xff0c;我们就得想一下数据存储的数据结构信息有哪些&#xff0c;我们所知…

【前端统计图】echarts实现单条折线图

五分钟上手&#xff1a;图片.png<!DOCTYPE html> <html><head><meta charset"utf-8"><title>五分钟上手之折线图</title><!-- 引入 echarts.js --><script src"js/echarts.min.js"></script><sc…

JAVA高并发的三种实现

提到锁&#xff0c;大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题&#xff0c;但是&#xff0c;对于系统吞吐量要求更高的话&#xff0c;我们这提供几个小技巧。帮助大家减小锁颗粒度&#xff0c;提高并发能力。 初级技巧-乐观锁 乐观锁使用的场景是&#…

信数金服:决策模型的迭代

在《业务规则的生命周期管理》中&#xff0c;Carole-Ann指出了版本管理中的可追溯和回退功能是十分有效的。她还提到了发布版本的强大功能&#xff0c;基本上&#xff0c;它包括了给定时间点上的各条规则&#xff08;或任何类型的项目&#xff09;的版本&#xff0c;有效地提供…

关于MyBatis的缓存

我们大概都有所了解MyBatis的缓存级别分为两种&#xff0c;一级缓存和二级缓存。 MyBatis的一级缓存是SqlSession级别的缓存&#xff0c;二级缓存是Mapper级别的缓存。当我们查询数据时&#xff0c;使用的是同一个sqlSession时&#xff0c;那我们使用的是一级缓存&#xff0c;…

使用 js 设置组合快捷键,支持多个组合键定义,还支持 React

╭┈┈╮ ╭┈┈╮ ╭┈┈╮ ┆ ├┈┈..┈┈┈┈┈.┆ └┈╮┆ ├┈┈..┈┈┈┈┈..┈┈.┈┈..┈┈┈┈┈. ┆ ┆┆ □ ┆┆ ┈┤┆ < ┆ -__┘┆ ┆ ┆┆__ ┈┈┤ ╰┈┈┴┈┈╯╰┈┈┈┈┈╯╰┈┈┈┈╯╰┈┈┴┈┈╯╰┈┈┈┈┈╯╰…

进程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) day38

进程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) 锁 —— multiprocess.Lock 通过刚刚的学习&#xff0c;我们千方百计实现了程序的异步&#xff0c;让多个任务可以同时在几个进程中并发处理&#xff0c;他们之间的运行没有顺序&#xff0c;一旦开启…

关于磁盘爆满异常(Linux下已经删除文件继续占用空间问题)

今天一个同事跟我说磁盘爆了&#xff0c;df -h 查看磁盘使用率显示确实是100%&#xff0c;但是我du -sh *查看磁盘使用情况时&#xff0c;又发现磁盘情况根本不可能占满。磁盘是40G&#xff0c;使用顶多在10G&#xff0c;那还有的30多G去哪了呢。 因为之前出现过磁盘占满的情况…