(3)puppet清单定义资源的语法
1.先看两个例子:
a.创建一个文件
file{"/tmp/12567.txt":
content => aaaaababbau,
ensure => present
}
b.创建一个用户
user{'zsythink':
name => zsythink,
ensure => present,
}
2.定义资源的语法如下:
type{'title':
attribute1 => value1,
attribute2 => value2,
attribute3 => value3,
...
attributeN => valueN,
}
3.语法格式注意事项总结:
a.在定义一个资源的时候,需要先指定其类型(type),常用的有package,service,user,file,exec等,指明资源类型以后,type后面要使用”{ }”括起,表示管理员可以在”{ }”中定义资源的属性值 在”{ }”的开始处,我们需要设置资源的标题,也就是资源的”title”,我们可以把资源的title理解成用来标识资源的ID,
b.同一类型的资源中,资源的”title”不能重复,如果两个相同类型的资源的title重复了,当我们执行对应的清单时,则会报错,不同类型的资源的title可以相同
c.’title’最好使用小写字母定义
d.’title’后面不要忘记冒号”:”,这是固定语法,没什么好解释的
e.定义完”title”以后,则需要定义当前资源的属性信息了,还拿我们user资源为例,linux中的用户往往会有属主属组、附属组、家目录等概念,这些概念在puppet中都被称为user资源的属性,当然,不同的资源类型所包含的属性可能不同,但是有些属性是比较通用的,比如,名称属性,不管是user、service、package这些资源都有名称属性,在我们使用的第一个puppet清单中,user资源的第一个属性就是名称属性,如你所见,name关键字就表示名称属性
f.为属性赋值时要使用” => ” 符号
g.资源属性之间需要用逗号”,”隔开,最后一个属性后面的逗号可以省略
4.查看puppet中支持的所有资源
[root@lvs-master manifests]# puppet describe -l
These are the types known to puppet:
augeas - Apply a change or an array of changes to the ...
computer - Computer object management using DirectorySer ...
cron - Installs and manages cron jobs
exec - Executes external commands
file - Manages files, including their content,
......
可以看到,puppet支持不少资源,换句话说,我们能够通过puppet操作不少东西,那么,如果我想要查看某个资源都支持哪些属性,这些属性都有什么作用,该怎么查看呢
5.查看资源详细信息(作用,属性等等)
[root@lvs-master manifests]# puppet describe user
user
====
Manage users. This type is mostly built to manage system
users, so it is lacking some features useful for managing normal
users.
This resource type uses the prescribed native tools for creating
groups and generally uses POSIX APIs for retrieving information
about them. It does not directly modify `/etc/passwd` or anything.
**Autorequires:** If Puppet is managing the user's primary group (as
provided in the `gid` attribute), the user resource will autorequire
that group. If Puppet is managing any role accounts corresponding to the
user's roles, the user resource will autorequire those role accounts.
Parameters
----------
- **allowdupe**
Whether to allow duplicate UIDs. Defaults to `false`.
Valid values are `true`, `false`, `yes`, `no`.
- **attribute_membership**
......
如果只想了解大概信息可以使用”-s”选项,表示short
[root@lvs-master manifests]# puppet describe -s user
可以从上图看出,简短格式的返回信息中,主要返回了3个部分的信息。
第一部分描述了user资源的主要作用。
第二部分描述了user资源包含的所有属性。
第三部分列出了user资源所能够支持的providers, 还记得我们曾经提到的”资源抽象层”的概念吗,管理员不用关心被管理服务器上的操作系统版本,puppet会通过”资源抽象层”自动判断底层的操作系统以及系统发行版,然后选择对应的默认的providers对资源进行操作,而配置管理员只需要写好清单即可,我们举个例子,仍然拿我们的user资源为例,当我们执行清单的时候,如果被管理服务器上面部署的是redhat/centos操纵系统,那么puppet会自动调用useradd去添加zsythink用户,如果被管理服务器上面安装的是HPUX操作系统,puppet会自动调用hpuxuseradd去添加用户, 刚才提到的hpuxuseradd和useradd都属于providers,它们是user资源在不同操作系统平台中的提供者,它们是为了简化管理员操作而存在的,大部分情况下,我们不用过分关心它们,我们只要明白它们会为我们服务即可。
我们还能够使用”puppet describe -s -m type”命令查看资源的元属性,比如,使用”puppet describe -s -m user”命令查看user资源的元属性,我们后面会对元属性的使用进行示例并解释它们,此处,我们只要知道怎样查看即可
5.特殊属性
name属性是一种特殊属性,是可省的,当省略name属性时,资源的名称即为title的值,但它不是唯一的一种特殊属性,资源的特殊属性有如下三类:
a.名称变量
英文原称为namevar,大多数资源的namevar为name属性(注意,name属性和namevar没有直接关系,只是碰巧他们都包含英文单词”name”而已),因为大多数资源的name属性是namevar,所以省略name属性时,资源的name与title中的值相同,但是并不是所有资源的namevar都是name属性,某些资源中,并没有name属性,而且它的namevar可能是其他属性,当省略namevar对应的属性时,其属性值与资源的title值相同,这样说不容易理解,等到实例演示时,自然会明白。
b.ensure属性
此属性用于定义资源的目标状态,不同的资源,ensure对应的值不同,比如,user资源的ensure值可以设置为present,表示用户必须存在,也可以设置为absent表示用户不能存在(删除用户),而service资源也有ensure属性,但是在service资源中,ensure属性的值往往被设置为stopped或者running,当然,大部分资源的ensure的值,还是present或者absent。
c.元参数
或者称为 “元属性”,英文为metaparameter,当我们为资源设置元属性时,目的往往是希望通过元属性影响puppet的行为,什么意思呢,我们想象一个场景,比如,我们想要安装一个nginx并且启动它,那么我们至少会用到两个资源,package资源与service资源,但是,service资源会依赖到package资源,因为如果nginx连安装都没有安装,就更别提启动服务了,所以,service资源是依赖于package资源的,这个时候,我们就可以在service资源中添加require属性,通过require属性指定service资源依赖的package资源,require属性就是元属性(元参数)的一种,我们也可以在package资源中添加before属性,表示package资源在service资源之前被处理,我们再在想一个场景,当配置文件发生改变时,我们往往有可能会重新同步配置文件,并且要重载配置文件,那么,就需要在配置文件发生改变时,通知服务重载配置,所以,有可能用会用到notify属性,反过来,我们也可以让service资源订阅某个资源,当被订阅的资源被操作时,service资源也会被操作,这个时候就需要用到subscribe属性,before、require、notify、subscribe这些属性都属于元属性,我们通过它们,可以影响puppet操作资源的顺序以及puppet的操作行为,当然,puppet还有其它的一些元属性,等我们用到的时候再进行总结,如果有兴趣,可以查看官网手册:https://docs.puppet.com/puppet/3.8/metaparameter.html
原文地址:http://www.zsythink.net/archives/349 有删改
(3)puppet清单定义资源的语法的更多相关文章
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- Kubenetes 资源清单定义入门
Kubernetes 常用资源 资源 对象 工作负载型资源对象(workload): Pod Replicaset ReplicationController Deployments Stat ...
- k8s学习笔记之四:资源清单定义入门
第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...
- Kubernetes学习之路(十)之资源清单定义
一.Kubernetes常用资源 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置. 类别 名称 工作负载型资源对象 Pod ...
- Kubernetes 学习5 kubernetes资源清单定义入门
一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...
- 5、kubernetes资源清单定义入门
使用配置清单创建资源 定义pod时使用yaml格式 master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE client / Error 1 ...
- IdentityServer Topics(2)- 定义资源
您通常在系统设计中的第一件事就是您要保护的资源. 这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 您可以使用C#对象模型定义资源(硬编码),或从数据存储中加载它们. IRes ...
- day10 函数的定义及函数语法详解
""" 今日内容: (1)函数的定义及特点 (2)函数的语法及函数的四部分 (3)函数的分类 (4)函数的调用 (5)函数的return详解 一.函数的定义 1.什么是函 ...
- 第19章 定义资源 - Identity Server 4 中文文档(v1.0.0)
您通常在系统中定义的第一件事是您要保护的资源.这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 注意 您可以使用C#对象模型定义资源 - 或从数据存储加载它们.IResourc ...
随机推荐
- Java 8 后的新功能梳理
为什么要写这篇文章 经过了若干年的发展,Java逐步从java8升级为java11,java17. 让我们对比学习一下最新一版的LTS版本和java8比起来让代码简化了多少. 文本块(Text Blo ...
- 【LeetCode】58. Length of Last Word 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 库函数 双指针 单指针 日期 题目地址:https: ...
- [Git]解决Permission denied, please try again问题
在gitlab上传项目的时候出现Permission denied, please try again问题, 网上有很多解释,但是都没能解决我的问题,后来经过自己尝试成功了,这里把经验分享给大家. 在 ...
- 前后端java+vue 实现rsa 加解密与摘要签名算法
RSA 加密.解密.签名.验签.摘要,前后端java+vue联调测试通过 直接上代码 // 注意:加密密文与签名都是唯一的,不会变化.// 注意:vue 端密钥都要带pem格式.java 不要带pem ...
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- Unity——基于ShaderLab实现光照系统
这篇主要总结Unity中ShaderLab的着色器代码实现总结,需要有一定图形学基础和ShaderLab基础: 一.着色器 1.顶点片元着色器 分顶点着色器和片元着色器,对应渲染管线的顶点变换和片元着 ...
- Storm集群开启HA高可用
Storm开启HA高可用,包括Nimbus和UI开启两个及以上的进程. 基于已经安装好的Storm集群,开启关键节点角色的HA高可用. Storm安装请参考Storm集群安装Version1.0.1 ...
- rocksdb代码解析-db.h
总 这篇是对rocksdb整体功能的分析,主要着眼点是db.h文件,对rocksdb进行代码解析,若想以整体的方式了解其功能,首先就应该解析db.h文件.对于rocksdb的db.h文件来说,且不论前 ...
- 合并区间(c++)
L. 合并区间 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 给出n个闭区间,把其中有重叠的区间合并为一个区间. 例如,给出4个区间, ...
- CAD快速入门--绝望
从入门到放弃 咱是革命一块砖,哪里需要哪里搬.(需求来自领导,让我一个敲代码的画CAD图纸,可以想象我在一个什么样的公司,在为什么样的老板赚钱,不多说了下面开始学习). CAD绘图功能优化与基本操作 ...