(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 ...
随机推荐
- 【LeetCode】333. Largest BST Subtree 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetcod ...
- 写在LeetCode刷题600题
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 从2015年9月刷题至今,我终于在LeetCode刷够600道题了.从刚开始的Java语 ...
- 【LeetCode】678. Valid Parenthesis String 解题报告(Python)
[LeetCode]678. Valid Parenthesis String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人 ...
- Lucky7(hdu5768)
Lucky7 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- uniapp医院预约挂号微信小程序
开头感言:最近看小程序很火,也想弄一个看看,用了一些时间从0开始写,也记录了一些笔记,自己用框架写的模板,不是很精美,后面会慢慢优化,功能也是后面慢慢加上去的, 其中功能这块,起初只是一些简单的功能, ...
- 一站式元数据治理平台——Datahub入门宝典
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为新一代的元数据管理平台,Datahub在近一年的时间里发展迅猛,大有取代老牌元数据管理工具Atlas之势.国内Datahub ...
- C++ std-11 常用方法
对多个值取最值 C++标准库提供了获取最大值和最小值的方法: int mi = std::min(x1, x2); int ma = std::max(x1, x2); 如果想获取超过两个数的最值呢? ...
- [C/C++]linux下c-c++语法知识点归纳和总结
1.c/c++申请动态内存 在c++中,申请动态内存是使用new和delete,这两个关键字实际上是运算符,并不是函数. 而在c中,申请动态内存则是使用malloc和free,这两个函数是c的标准库函 ...
- <学习opencv> opencv 概述及初探
目录 Opencv3 当前模块 OpenCV 贡献库(opencv_contrib) OpenCV 头文件 旧式C风格头文件 新式C++风格头文件 例程 DEMO1 - 显示图片 DEMO2 - 视频 ...
- 【计理01组03号】Java基础知识
简单数据类型的取值范围 byte:8 位,1 字节,最大数据存储量是 255,数值范围是 −128 ~ 127. short:16 位,2 字节,最大数据存储量是 65536,数值范围是 −32768 ...