puppet一些常用的参数

通过@,realize来定义使用虚拟资源

虚拟资源主要来解决在安装包的时候,互相冲突的问题

具体参考这里

简单说下,在定义资源的时候加上@

例如:

@package { "apache2-mpm-worker": ensure => installed }
它会告诉 Puppet 这个资源存在,但不希望用它做任何事情。不回去应用, Puppet 将会读取并记住虚拟资源定义,但实际上不会创建这个资源,直到你明确指出要创建此资源。

如何使用呢,这时realize排上用场

realize( Package["apache2-mpm-worker"] )  #realize括号内资源必须大写
要创建这个资源,使用如下的 realize 函数:它就会调用虚拟资源,这时系统会去安装它

虚拟资源管理用户

使用虚拟资源来管理用户的权限,只有在应用的时候我们才realize,我们可以先把用户全部创建成虚拟资源,这样的话不会再节点上应用,当我们需要哪些节点应用的时候,我们就使用realize来调用。

定义:

 class user::virtual
{
@user { "john": }
@user { "graham": }
@user { "steven": }
}

在某些类中调用它

 class user::developers
{
realize( User["graham"],
User["steven"] )
}

参见这里

当文件更新时运行命令

前面我们提到过,一旦配置文件改变服务就会重启的notify,现在我们在多介绍点参数

这里我们还是借助exec参数来通过shell命令来完成,每次运行 Puppet,exec 资源都会被运行,除非指定了如下参数中的一个:

  • creates

  • onlyif

  • unless  #这个我们用过。除非

  • refreshonly => true

refreshonly 参数的意思是:仅当从其他资源(例如一个文件资源)获得一个 notify 才执行 exec 资源。

实例重新加载nginx配置文件

 mkdir /etc/puppet/modules/nginx
mkdir /etc/puppet/modules/nginx/files
mkdir /etc/puppet/modules/nginx/manifests
mkdir /etc/puppet/modules/nginx/templates
接着在manifests里面创建pp文件
[root@pup manifests]# cat nginx.pp
class nginx {
package { "nginx":
ensure => installed } #安装 service { "nginx":
enable => true,
ensure => running, #启动可以加上restart => "/etc/init.d/nginx reload"
} exec { "reload nginx":
command => "/usr/sbin/service nginx reload",
require => Package["nginx"],
refreshonly => true, #仅当它获得通知才会运行
} file { "/etc/nginx/nginx.conf":
source => "puppet:///modules/nginx/nginx.conf",
notify => Exec["reload nginx"], #如果配置文件发生改变,就提供所需的通知(notify)
require => Package["nginx"],
}
}

更多的使用地方

每当遇到资源更新就要采取某些行动的情况,你就可以使用这个类似的模式。可能的用途包括:

  • 触发服务重新加载配置文件

  • 运行语法检查,然后再重新启动服务

  • 连接 config 片段

  • 运行测试

  • 链接 exec 资源

文件递归分发到客户端-- recurse 参数

当你需要使用 Puppet 分发一批位于同一目录下的多个文件时, 就应该考虑使用文件资源的递归特性来替代逐个文件的分发。 如果你在一个目录上设置了 recurse 参数, Puppet 会复制此目录及其子目录中的所有文件到节点目录

purge 参数可以确保在分发目录中没有被 Puppet 管理的文件,清楚干净分发的目录

如果有一个子目录,其中包含了你不想 purge 的文件, 可以将此子目录作为 Puppet 的一个 file 资源单独进行定义, 这样这个子目录中的内容就会保留

如下

 [root@pup manifests]# cat tree.pp
class admin::tree{
file { "/tmp/tree":
#ensure => present,
ensure => directory,
source => "puppet:///modules/admin/tree",
recurse => true,
purge => true,
}
#如果有一个子目录或者文件,其中子目录包含了你不想 purge(删除) 的文件, 可以将此子目录作为 Puppet 的一个 file 资源单独进行定义, 这样这个子目录中的内容就会保留:,文件的话也是类似,如下,这样就不会删除客户端/tmp/tree/ceshi.txt文件,不加这段的话,话删除
file {"/tmp/tree/ceshi.txt":
ensure => file,
#ensure => directory,
}
}

puppet一些常用的参数的更多相关文章

  1. 【转载】gcc 使用中常用的参数及命令

    本文转载自:http://www.cnblogs.com/yaozhongxiao/archive/2012/03/16/2400473.html 如需转载,请注明原始出处.谢谢. --------- ...

  2. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  3. Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数

    1.首先下载deb包,比如:将其放在 /home/tools/ 根目录下: 2.进入到tools根目录下的终端,输入下面命令创建文件夹extract,并在extract文件夹下创建DEBIAN文件夹 ...

  4. 009_npm常用命令参数总结

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. 一.np ...

  5. Linux常用内核参数

    Linux常用内核参数 TCP状态描述 CLOSED:无连接是活动的或正在进行的 LISTEN:服务器在等待进入呼叫 SYN-RECV:一个连接请求已经到达,等待确认 SYN-SENT:应用已经开始, ...

  6. JVM调优系列:(五)JVM常用调试参数和工具

    转自:http://blog.csdn.net/opensure/article/details/46715769 JVM常用调试参数: –verbose:gc在虚拟机发生内存回收时在输出设备显示信息 ...

  7. JVM常用启动参数+常用内存调试工具

    一.JVM常用启动参数 -Xms:设置堆的最小值. -Xmx:设置堆的最大值. -Xmn:设置新生代的大小. -Xss:设置每个线程的栈大小. -XX:NewSize:设置新生代的初始值. -XX:M ...

  8. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  9. S7-1500 读取V90/S120/S210/G120的常用驱动参数

    S7-1500 读取V90/S120的常用驱动参数 此程序已更新,可以下载例子程序 https://files.cnblogs.com/files/lion-zheng/PLC_async_drive ...

随机推荐

  1. Python通过pip方式安装第三方模块的两种方式

    一:环境 python3.6 windows 10 二:常用命令 如果直接执行pip命令报错,说明pip不在path环境变量中 解决方法: python -m pip list 以下默认可直接使用pi ...

  2. 容器技术|Docker三剑客之docker-machine

    docker-machine是什么? ocker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实 ...

  3. git学习之时光穿梭机

    "x"修改readme.txt文件,改成如下内容: Git is a distributed version control system. Git is free softwar ...

  4. 教你使用HTML5原生对话框元素,轻松创建模态框组件

    HTML 5.2草案加入了新的dialog元素.但是是一种实验技术. 以前,如果我们想要构建任何形式的模式对话框或对话框,我们需要有一个背景,一个关闭按钮,将事件绑定在对话框中的方式安排我们的标记,找 ...

  5. C#泛型创建实例

    class Test<T> where T : new() { public static T Instance() { return new T(); } } 就上面这方法, 居然比ne ...

  6. H5 22-通配符选择器

    22-通配符选择器 我是标题 我是段落 我是超链接 --> 我是标题 我是段落 我是超链接 <!DOCTYPE html> <html lang="en"& ...

  7. 移动web、webApp、混合APP、原生APP、androd H5混合开发 当无网络下,android怎么加载H5界面

    PhoneGap是一个采用HTML,CSS和JavaScript的技术,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够在网页中调用IOS,Android,Palm,Symbian,WP7,W ...

  8. Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档

    1. 索引(_index)索引:说的就是数据库的名字.我这个说法是对应到咱经常使用的数据库. 结合es的插件 head 来看. 可以看到,我这个地方,就有这么几个索引,索引就是数据库,后面是这个数据库 ...

  9. 快速为git添加一个用户

    环境:用gitosis-admin管理git的权限. 前期git环境的搭建略去,主要给出快速添加一个用户的步骤: 在git bash中用“ssh-keygen -t rsa”生成公钥私钥,默认放到 “ ...

  10. linux如何查看所有的用户(user)、用户组(group)、密码(password/passwd)

    linux如何查看所有的用户和组信息_百度经验https://jingyan.baidu.com/article/a681b0de159b093b184346a7.html linux添加用户.用户组 ...