(4)puppet常用的资源及其常用属性

mac2022-06-30  107

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指定用户的uidgid指定用户的gid,也就是说,指明用户的主组,如果指定此属性,gid对应的组必须实现存在,否则会报错groups指定用户的附属组,可以同时指定多个附属组,同理,对应附属组必须事先存在,而且需要注意,此属性中不能包含用户的基本组,也就是说不能包含gid对应的组名,指定附属组时,必须使用组名指定,不能使用对应组的gidhome指定用户的家目录,使用此属性时需要注意,虽然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$)), “\n”;’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提供者”等概念并不冲突,不要把它们搞混了。ensureensure的值对于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,falseensure设置当前服务是否处于启动状态,可用值running或true,stopped或falsehasrestart表示标明当前服务是否支持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

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)