(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$)), “\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提供者”等概念并不冲突,不要把它们搞混了。 |
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,
}
(4)puppet常用的资源及其常用属性的更多相关文章
- [C#] 常用工具类——应用程序属性信息访问类
using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespac ...
- redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)
时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本 ...
- 开发常用镜像资源替换为国内开源镜像(yum,compose,maven,docker,android sdk,npm,国内开源镜像汇总)
一.国内开源镜像站点汇总 阿里云开源镜像站 (http://mirrors.aliyun.com/)网易开源镜像站 (http://mirrors.163.com/)中国科学技术大学开源镜像站 (ht ...
- python进阶之类常用魔法方法和魔法属性
前言 前面我们总结过了python的关键字.运算符.内置函数.语法糖等与python魔法方法之间的关系,现在我们更细一点,看看python的面向对象编程有哪些常用的魔法属性和魔法方法. 魔法属性 对于 ...
- 学习css常用基本层级伪类属性选择器
常见的css选择器包含:常用选择器.基本选择器.层级选择器.伪类选择器.属性选择器,其中常用选择器分为:1.html选择符*{}//给页面上所有的标签设置模式:2.类选择符.hcls{}//给clas ...
- kubernetes之常用核心资源对象
部门产品线本身是做DEVOPS平台,最近部署架构也在往K8S上靠了,不得不学一下K8S.自己搭建了K8S集群与harbor仓库来学习. 1.kubernetes之常用核心资源对象 1.1.K8s服务部 ...
- k8s常用的资源
1. 创建pod资源 pod是最小的资源单位 任何一个k8s资源都可以有yml清单文件来定义 k8s yaml的主要组成 apiVersion: v1 api版本 kind: pod 资源类型 met ...
- (3)puppet清单定义资源的语法
1.先看两个例子: a.创建一个文件 file{"/tmp/12567.txt": content => aaaaababbau, ensure => present ...
- HTML常用标签-<head>内常用标签
HTML常用标签-<head>内常用标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML是什么 1>.超文本标记语言(Hypertext Ma ...
随机推荐
- c++计算 char数组CRC算法
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 我使用的OS:win7. 我使用的开发环境:VS2010 + sp1 算法源码: 1 uns ...
- 【LeetCode】910. Smallest Range II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- [LeetCode] 448. Find All Numbers Disappeared in an Array 找到数组中消失的数字
题目描述 给定n个数字的数组,里面的值都是1-n,但是有的出现了两遍,因此有的没有出现,求没有出现值这个数组中的值有哪些. 要求不能用额外的空间(除了返回列表之外),时间复杂度n 思路 因为不能用额外 ...
- Docker 与 K8S学习笔记(三)—— 镜像的使用
前面的文章介绍过镜像的三种获取方式: 下载并使用别人创建好的镜像: 在现有镜像上创建新的镜像: 从无到有创建镜像. 本文主要介绍前两种. 一.下载镜像 在Docker Hub上有大量优质镜像可以使用, ...
- 响应式网页设计(Bootstrap)
Bootstrap官网 AOS官网 Chrome官方教程 Chrome教程 Bootstrap官网中有许多Bootstrap网站示例,大家可以参考
- vue使用自定义指令v-dialogDrag来控制element ui中el-dialog的拖动缩放,拉伸问题
1 在vue的utils中新建一个dialogDrag.js import Vue from 'vue' Vue.directive('dialogDrag', { bind(el, binding, ...
- Java Web程序设计作业目录(作业笔记)
Java Web程序设计笔记 • [目录] 第1章 Web应用程序 >>> 1.1.3 使用 Eclipse 创建一个静态的登录页面 1.2.5 使用 IE 或Chrome等浏览器, ...
- 编写Java程序,使用JDBC连接SQL Server数据库
返回本章节 返回作业目录 需求说明: 使用JDBC连接SQL Server数据库 SQL Server数据库位于192.168.2.101. 所需连接的数据库为eshop_db,用户名为test,密码 ...
- Pytest_用例执行顺序(5)
在unittest中,测试用例的执行顺序与测试用例的名称有关,按照名称的ascii码排序的,并不是按照用例的编写顺序执行的. pytest默认是按用例的编写顺序执行的 我们可以通过第三方包 pytes ...
- spring的返回json数据给前端注意事项
1. 记得加入SpringJSON解析包,否则spring无法将返回的pojo类解析成json数据 maven则加上下面的依赖包 <!-- SpringJSON解析包--> <jac ...