(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

原文地址:https://www.cnblogs.com/fanren224/p/8457240.html