zoukankan      html  css  js  c++  java
  • (4)puppet常用的资源及其常用属性

    1.user资源就是用来管理目标服务器上的用户的,比如创建用户、修改用户、删除用户,user资源的常用属性如下

    user{'test':
        ensure => present,
        uid => 777.
        #gid => 777,
        groups =>[
        testgroup,
        test2group,
        ],
        managehome => ture,
        shell => '/bin/bash',
        password => '$b$jBfaojvOsi$vjs.Hfkfoq0W/igl',
        comment => 'guojiazhuxi',
        expiry => '2017-5-26',
        system => true,
    }
    属性 说明
    name 用户名称,可省略
    ensure 可用值为present或absent,为absent时,就没有必要在指定其他属性了,为present时,但是当前用户已经存在,此时,puppet会判断已经存在的用户与我们定义的用户资源的其他属性是否一致,如果不一致,puppet则会使其保持一致
    uid 指定用户的uid
    gid 指定用户的gid,也就是说,指明用户的主组,如果指定此属性,gid对应的组必须实现存在,否则会报错
    groups 指定用户的附属组,可以同时指定多个附属组,同理,对应附属组必须事先存在,而且需要注意,此属性中不能包含用户的基本组,也就是说不能包含gid对应的组名,指定附属组时,必须使用组名指定,不能使用对应组的gid
    home 指定用户的家目录,使用此属性时需要注意,虽然puppet在创建用户或者修改用户时会按照home属性的值指定用户的家目录,但是对应的家目录puppet不会为我们自动创建,即使没有使用home属性,puppet为我们创建用户时,也不会创建对应的家目录,如果想要puppet能在创建用户时为我们自动创建用户的家目录,并且将对应的配置文件填充到用户家目录中,需要使用managehome属性
    managehome 表示puppet是否管理用户的家目录,在创建用户时,如果不添加此属性,用户对应的家目录不会被创建,可能会造成用户登录后没有家目录或者shell不可用的情况。
    shell 指定用户的默认登录shell类型。
    password 指定用户的密码,注意,这个密码是使用单向加密算法加密过的密码,不是明文密码,如果你的密码使用md5的方式加密,可以使用”grub-md5-crypt”命令生成加密后的密码,如果你的密码使用sha256的方式加密,可以使用类似如下命令生成:perl -e ‘print crypt(“password”, q(6salt$)), “ ”;’
    comment 描述信息
    expiry 过期时间,当为absent时永不过期
    system 是否指定用户为系统用户,当显示指定system属性并且设置为true时,则为系统用户。

    2.group资源的作用就是用来管理目标服务器上的组的,group资源的常用属性如下

    group{'test':
         ensure => present,
         gid => 666,
         system => false,
    }

    3.cron资源的作用就是管理目标服务器上的定时任务的,作用相当于crontab命令,cron资源的常用属性如下

    cron{'zsycron':
        name => zsycron,
        ensure => absent, #省略ensure时,默认值为present
        command => '/bin/cat /testdir/test.sh >> /testdir/zsythink.net',
        user => root,
        minute => '*/1', #默认为*
        hour   =>  '0',
        monthday => '*',
        month => '11,12',
        weeklyday => '6,0',
    }
    

    4.package资源的作用就是管理目标服务器上的程序包,package资源的常用属性如下:

    package{'tree':
           ensure => installed
           #provider => rpm,
           #source => '/testdir/tree-1.5.3-3.el6.x86_64.rpm',
    }       
    属性 说明
    name 表示对应安装包的名称,可省,省略后与资源title值相同,但是需要注意:不同系统平台或者不同的系统发行版中,同一个软件的名称可能不同,比如,centos中,apache的http server被称为Httpd,而在ubuntu中,apache的http server被称为Apache2 ,所以,如果不同的被管理服务器中需要的安装包的名称不同,我们往往需要判断操作系统版本,然后给出不同的package名称,这与我们之前说的”中间层、资源抽象层、provider提供者”等概念并不冲突,不要把它们搞混了。
    ensure ensure的值对于package资源来说,相对丰富一点,可以使用absent、present、installed、latest, 其中,absent表示卸载,present和installed都表示安装,没有什么区别,latest表示安装能够获取到的最新的版本。
    source 指定安装包文件,如果被管理服务器上存在类似yum源这样的provider(提供者),则可以省略此属性,省略此属性后,yum源会按照name属性或title的名称自动安装对应的package,如果对应被管理服务器上没有类似yum源这样的提供者,或者说,当被管理服务器上没有能够支持自动下载安装软件的提供者时,那么source属性则是必须的,比如使用rpm包安装对应软件,那么我们则必须通过source属性指明rpm包的路径,同时需要注意,对于package资源来说,puppet默认使用yum作为redhat/centos系统的提供者,所以,在使用source属性指定rpm包的同时,还需要使用provider属性,指定使用rpm作为本次操作的提供者。
    provider 当puppet默认的provider不符合我们的实际使用场景时,可以指定使用哪种provider,通常在一个操作系统下有多个提供者的情况下,可以使用此属性指明使用哪个提供者。

    5.service资源的作用就是启动或停止目标服务器上的服务,service资源的常用属性如下:

    service{'nginx':
           ensure => running,
           enable => true,
           start => '/usr/sbin/nginx',
           restart => '/usr/sbin/nginx -t && /usr/sbin/nginx -s reload',
    }       
    属性 说明
    enable 设置服务是否开机自动启动,可用值true,false
    ensure 设置当前服务是否处于启动状态,可用值running或true,stopped或false
    hasrestart 表示标明当前服务是否支持restart命令,设置为true表示支持restart,false表示不支持restart,如果不支持restart命令,那么要重启服务时,则会先stop服务,再start服务。
    hasstatus 表示标明当前服务是否支持status命令。
    path 服务对应的init脚本文件的路径,对于centos来说,默认路径为/etc/rc.d/init.d,当然,centos7则无需此属性,因为centos7中使用unit,而不在使用脚本。
    start 用户手动指定服务对应的启动命令。
    restart 用户手动指定的restart操作对应的命令,但是为了保险起见,通常会将此属性对应的命令设置为reload,而非restart。

    6.file资源的功能比较丰富,它可以用来管理文件的内容、属主属组以及文件的权限,同时可以用它管理目录、链接文件,file资源常用属性示例如下:

    define resolve(nameserver1, nameserver2, domain, search) {
        $str = "search $search
            domain $domain
            nameserver $nameserver1
            nameserver $nameserver2
            "
    
        file { "/etc/resolv.conf":
          content => "$str",
        }
    }
    #创建一个链接文件/etc/inetd.conf,连接指向
    file { "/etc/inetd.conf":
      ensure => link,
      target => "inet/inetd.conf",
    }
    属性 说明
    path 通过此属性指定file资源所在路径,还记得其它资源中的name属性吗,在其他资源中,name属性往往是可省的,因为name属性是大多数资源的”名称变量”(namevar),其他资源中,name属性省略后,资源的名称与资源的title相同,而在file资源中,path属性才是file资源的”名称变量”(namevar),当我们省略path属性时,path属性对应的值与file资源的title相同,所以,如果省略path属性,file资源的title则必须为文件的路径,当然,如果不想将file资源的title设置为file的路径,则不能省略path属性
    ensure 可用值present、absent、file、directory、link,当ensure的值为present时,与ensure的值为file时相同。注意:file资源不会自动创建父目录,也就是说,不管file资源代表一个文件,还是代表一个目录,如果指定的path或者title中包含不存在的目录,那么puppet则会报错,提示没有对应的父目录,有两种办法可以解决,手动指明创建对应父目录或者使用exec资源调用对应命令创建父目录(参考exec资源)
    content 当ensure属性的值为file时,使用此属性可以指定文件的内容,将要写入文件的内容使用引号引起即可,也可以将指定内容替换为变量的值,这在实际演示中会用到,到时候我们再进行总结,注意,此属性与将要提到的source属性不能同时存在于同一个资源中。
    source 当ensure属性的值为file时,使用此属性可以指定当前文件的内容从哪个文件中获取,可以理解为把某个文件的内容覆盖到当前文件,或者理解为复制文件也是可以的,使用source属性,还可以通过指定的puppet url远程复制文件source属性与content属性本质上都是设置文件内容的,它们不能同时存在于同一个资源中。当ensure属性的值为directory时,使用source属性指定另一个目录,则表示复制另一个目录,但是需要注意,当ensure为directory时,使用source属性的同时,需要配合recurse属性,否则被复制目录中的子目录或者文件将不会被同时复制过来。
    recurce 此属性用于设置被操作源目录是否被递归,当ensure属性的值为directory时,同时source属性对应的值为一个目录,那么需要将recurse属性设置为true,被复制目录中的子目录和文件才能被复制到当前目录中,注意,recurse属性只有在配合source属性时才会递归的复制目录,如果ensure属性设置为directory,但是没有配合source属性,即使将recurse属性设置为true,puppet仍然不会执行递归操作。注意:file资源不会自动创建父目录,也就是说,不管file资源代表一个文件,还是代表一个目录,如果指定的path或者title中包含不存在的目录,那么puppet则会报错,提示没有对应的父目录,当ensure的值设置为directory时,如果没有指定source属性,那么则表示当前操作不是复制目录,而是创建目录,这个时候,如果path或这title对应的目录中包含不存在的目录,即使将recurse属性设置为true,不存在的父目录也不会被自动创建。
    force 当ensure属性的值为absent时,同时file资源对应的path或者title为一个目录(非文件),那么则必须将force属性设置为true,才能删除对应的目录以及目录下的文件,当ensure的值为absent,但是file资源对应的path或者title为一个文件,那么则不需要设置force属性,即可正常的删除
    target 当ensure属性的值为link时,我们通过target属性指定链接文件的目标文件
    owner 属主
    group 属组
    mode 权限
    backup 使用此属性结合filebucket资源可以实现文件备份

    7.通过exec资源,可以在被管理服务器上执行对应的命令,exec资源的常用属性如下

    exec{'mkzsydir':
        path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin",
        #path => ["/usr/local/sbin","/usr/local/bin","/sbin","/bin","/usr/sbin","/usr/bin","/root/bin"],
        onlyif => "test -e /etc/fastab", #onlyif属性对应的命令执行成功时,才会执行command属性对应的命令
        command => "mkdir -p /testdir/zsydir/www/zsythink/net",
        #refreshonly 仅接收到订阅资源的通知时,才执行对应的命令,一般与subscribe配合,此属性值可以设置为true或者false,这个属性牵扯到puppet调用资源的顺序
        #cwd 执行命令的目录
        #user
        #group
    }   

    上述资源表示,当”/etc/fstab”文件存在时,在被管理服务器上执行”创建文件夹的命令”

    8.yumrepo资源的作用就是在被管理服务器上设置对应的yum源,常用属性如下

    yumrepo{'aliyum68':
           #name => 'aliyumCentos68',
           baseurl => 'http://mirrors.aliyun.com/centos/6.8/os/x86_64/',
           gpgcheck => 0,
           #gpgkey => 'http://mirrors.aliyun.com/centos/6.8/os/x86_64/PRM-GPG-KEY-CentOS-6',
           enabled => 1,
    }

    参考链接:
    http://www.zsythink.net/archives/363

  • 相关阅读:
    mybatis-generator的坑
    log框架集成
    状压dp
    GYM 101350 G
    Wannafly挑战赛23 A 字符串
    基础
    ACM Changchun 2015 A. Too Rich
    最大子串和
    memset
    int long long 的范围
  • 原文地址:https://www.cnblogs.com/fanren224/p/8457240.html
Copyright © 2011-2022 走看看