zoukankan      html  css  js  c++  java
  • puppet一些常用的参数

    puppet一些常用的参数

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

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

    具体参考这里

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

    例如:

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

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

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

    虚拟资源管理用户

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

    定义:

    1 class user::virtual
    2 {
    3     @user { "john": }
    4     @user { "graham": }
    5     @user { "steven": }
    6 }

    在某些类中调用它

    1 class user::developers
    2 {
    3     realize( User["graham"],
    4              User["steven"] )
    5 }

    参见这里

     当文件更新时运行命令

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

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

    • creates

    • onlyif

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

    • refreshonly => true

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

    实例重新加载nginx配置文件

     1 mkdir /etc/puppet/modules/nginx
     2 mkdir /etc/puppet/modules/nginx/files
     3 mkdir /etc/puppet/modules/nginx/manifests
     4 mkdir /etc/puppet/modules/nginx/templates
     5 接着在manifests里面创建pp文件
     6 [root@pup manifests]# cat nginx.pp 
     7 class nginx {
     8     package { "nginx": 
     9         ensure => installed }   #安装
    10 
    11     service { "nginx":
    12         enable => true,
    13         ensure => running,   #启动可以加上restart => "/etc/init.d/nginx reload"
    14     }
    15 
    16     exec { "reload nginx":
    17         command     => "/usr/sbin/service nginx reload",
    18         require     => Package["nginx"],
    19         refreshonly => true,   #仅当它获得通知才会运行
    20     }
    21 
    22     file { "/etc/nginx/nginx.conf":
    23         source  => "puppet:///modules/nginx/nginx.conf",
    24         notify  => Exec["reload nginx"],   #如果配置文件发生改变,就提供所需的通知(notify)
    25         require => Package["nginx"],
    26     }
    27 }

    更多的使用地方

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

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

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

    • 连接 config 片段

    • 运行测试

    • 链接 exec 资源

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

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

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

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

    如下

     1 [root@pup manifests]# cat tree.pp 
     2 class admin::tree{
     3 file { "/tmp/tree":
     4     #ensure => present,
     5     ensure  => directory,
     6     source  => "puppet:///modules/admin/tree",
     7     recurse => true,
     8     purge => true,
     9 }
    10 #如果有一个子目录或者文件,其中子目录包含了你不想 purge(删除) 的文件, 可以将此子目录作为 Puppet 的一个 file 资源单独进行定义, 这样这个子目录中的内容就会保留:,文件的话也是类似,如下,这样就不会删除客户端/tmp/tree/ceshi.txt文件,不加这段的话,话删除
    11 file {"/tmp/tree/ceshi.txt":
    12     ensure => file,
    13     #ensure => directory,
    14     }
    15 }
  • 相关阅读:
    DDoS deflate
    stm32串口
    王立平--GUI与GUILayout的差别
    DOM模型
    Android设计模式(十二)--抽象工厂模式
    Dynamics CRM 开启EmailRouter日志记录
    python in操作引发 TypeError
    为OLED屏添加GUI支持2:2D图形库
    Bloxorz I (poj 3322 水bfs)
    URAL 1823. Ideal Gas(数学啊 )
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/6337087.html
Copyright © 2011-2022 走看看