当前位置: 首页>编程语言>正文

puppeteer await 几秒 puppet!

一、puppet是什么
puppet是使用ruby开发的一款资源自动化配置管理工具。它使用一种简单易读的通用语言,来定义你想要你的应用或服务成为什么样子。
通过它,你可以共享、测试和强制改变你的数据。它的每一步操作对于你来说都是透明的,并且它会通知你做出决定及验证是否相符。
它能帮助管理员方便的进行升级软件包、管理配置文件、系统服务、cron任务、添加新的配置和修复错误等重复工作。
二、puppet是如何工作的
puppet采用c/s架构。有一个master及多个agent。master与agent之间采用ssl加密认证,保证安全。master存放了所有agent的配置代码,
agent从master下载对服务器进行配置。
1、客户端puppetd调用facter,facter会探测出这台主机的一些变量如主机名、内存大小、IP地址等。然后puppetd把这些信息发送到服务器端。
2、服务器端的puppetmaster检测到客户端的主机名,然后会到manifest里面对应的node配置,然后对这段内容进行解析,facter送过来的信息可以
作为变量进行处理的,node牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。
3、客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
4、服务器再把客户端的执行结果写入日志。
三、puppet描述语言
命名规范:只能是数字、字母和下划线,大小写敏感。

变量:$varname = value,使用变量${varname} 

 类中变量引用:$类::子类::变量 

 数组:有两种方式获得数组1).["v1","v2"...];2).split(${varname},分隔符) 

 资源:file、service、package、node、filebucket、cron、user、group、exec、notify 

 3.1 filebucket:用于文件的备份与恢复 

 filebucket{ 

 "资源标题": 

 参数 => 值, 

 } 

 参数: 

 name => 资源名, 

 path => 备份文件存放路径, 

 port => 备份服务器的端口, 

 server => 备份服务器的域名, 

 3.2 file:管理本地文件系统的文件 

 file{ 

 "路径": 

 参数 => 值, 

 } 

 参数: 

 backup 
 指定文件是否备份。值可以是filebucket标题、或者false(表示不备份)。 

 checksum 
 指定检查文件是否被修改的方式。可以选择MD5、mtime。默认是MD5。 

 content 
 指定文件内容,值是字符串。可以使用template("模板路径")加载模板。 

 ensure 
 如果文件不存在是否要创建文件。值可以是present、absent(删除)、file、directory、link。还可以是路径,表示创建一个连接。 

 force 
 把文件变成连接。值可以是true、false。 

 group 
 指定文件所属组。 

 ignore 
 指定文件目录复制时的过滤条件,符合条件的不被复制。 

 links 
 指定文件复制时复制连接文件策略。可以为follow、manage。follow表示不只是复制连接,也包括连接指向的文件。 

 manage表示只复制连接本身。 

 mode 
 设置文件权限。 

 owner 
 设置文件所属用户。 

 path 
 指定要管理的文件路径。值是一个资源的标题。 

 purse 
 将不在管理中的其它数据删除。true或false。 

 recurse 
 指定是否进行递归操作。可以是true、false、inf、remote。 

 recurselimit 
 设置递归的深度。 

 source 
 拷贝文件覆盖本地文件。值是一个uri,只支持puppet开头或本地文件的uri。 

 target 
 指定源文件。值{"源文件路径"}。只有在ensure => link时使用。 

 replace 
 是否覆盖已经存在的文件。true或false。 

 selrange 
 文件内容是否属于SELinux的哪个组成部分。只有开启SELinux。 

 selrole 
 文件所属的selinux角色。 

 seltype 
 文件所属的selinux type。 

 seluser 
 文件所属的selinux user。 

 sourceselect 
 选择拷贝目录级别。默认source是递归拷贝。 

 type 
 检查文件是否只读。 



 3.3 
 service:管理服务状态。在配置文件发生更改的情况下自动重启。 

 service{"标题": 

 参数 => 值, 

 } 

 参数: 

 ensure 
 指定服务目标状态。可以为running或stoped。 

 enable 
 指定服务是否开机自启动。true或false。 

 name 
 服务名。 

 hasstatus 
 指定管理脚本是否支持status参数。true或false。如果不支持,puppet会从运行进程列表里查询是否存在服务名,来判断服务状态。 

 hasrestart 
 指出管理脚本是否支持restart参数。true或false。 

 path 
 启动脚本的搜索路径。可以用冒号分割多个路径,也可以用数组。 

 provider 
 默认是init。base或daemontools或init。 

 3.4 
 package:管理软件包安装、卸载。管理软件包更新。 

 package{ 

 "标题": 

 参数:值, 

 } 

 参数: 

 ensure 
 可以为present、installed、absent、pureged、latest、版本号。 

 present表示只要包存在就行。 

 installed软件必须安装好。 

 absent当软件包无依赖时删除。 

 pureged删除所有依赖软件包和配置文件。 

 latest升级到最新版本。 

 也可以指定版本号,安装指定版本号的软件包。 

 allowcdrom 
 通知apt允许使用cdrom昨晚软件源。 

 description 
 描述。 

 provider 
 以什么方式安装软件包。 

 source 
 指定软件包的安装源。 



 3.5 
 exec:执行系统命令。 

 exec{"标题": 

 参数 => 值, 

 } 

 参数: 

 cwd 
 在哪个路径下执行。也可以没有。 

 path 
 命令执行的搜索路径。如果没有,则命令使用绝对路径。 

 command 
 指定执行命令。一般在title中写,此处就不需要。 

 creates 
 当且仅当文件不存在,命令才会执行。值是文件绝对路径。执行命令成功会创建该文件。 

 user 
 指定运行命令的用户。 

 logoutput 
 是否记录日志。true、false和其它合法的日志等级。 

 onlyif 
 只有onlyif所指定的命令执行结果成功(为0),命令才被执行。 

 unless 
 与onlyif相反。 

 environment 设置额外的环境变量。 

 group 
 指定用户组。 

 refresh 
 定义如何更新命令。当exec收到一个来自其他资源的事件时,默认只会重新执行一次命令。不过这个参数允许你定义更新时执行不同的命令。 

 refreshondy 
 命令仅刷新时触发。也就是说只有在一个依赖的对象被改变时,命令才会被执行。仅当命令与其他对象有依赖关系时,这个参数才有意义。 

 returns 
 指定返回代码。 

 timeout 
 指定命令最长运行时间,单位秒。如果超出,命令会终止,并按运行失败处理。 

 3.6 
 cron:计划任务。每个任务需要有command、user及至少一个周期属性。 

 cron{ 

 "标题": 

 参数:值, 

 } 

 参数: 

 ensure 
 定义cron目标状态。present或absent。 

 command 
 任务执行的命令。可以不写,默认是title。 

 user 
 指定cron任务的执行用户。默认是运行puppet用户。 

 minute 
 同crontab定时任务对于任务周期的设定。对应分钟。 

 hour 
 同crontab定时任务对于任务周期的设定。对应小时。 

 month 
 同crontab定时任务对于任务周期的设定。对应月份。 

 monday 
 同crontab定时任务对于任务周期的设定。对应天。 

 weekda 
 同crontab定时任务对于任务周期的设定。对应星期。 

 3.7 
 group:管理用户组 

 group{"标题": 

 参数:值, 

 } 

 参数: 

 name 
 组名 

 ensure 
 指定目标状态。present或absent。 

 gid 
 组唯一标识 

 members 
 组成员。 

 3.8 
 user:puppet私有的用户和组管理工具,不会直接修改/etc/passwd文件。 

 user{"标题": 

 参数:值,} 

 参数: 

 name 
 用户名。默认和title一样。 

 ensure 
 present或absent。 

 uid 
 用户唯一标识。 

 gid 
 所属组唯一标识。 

 groups 
 所属组名。可以是数组。 

 managehome 
 是否自动生成家目录。true或false。默认是false。 

 home 
 指定用户家目录。 

 shell 
 用户登录后默认分配的shell。 

 password 
 用户密码。使用MD5加密后的密串。使用单引号引起来。可以使用grub-md5-crypt命令来生成MD5密文。 

 3.9 
 yumrepo:管理客户端yum一致性。 

 yumrepo{"标题": 

 参数:值,} 

 参数: 

 descr 
 描述。 

 name 
 名字 

 baseurl 
 仓库的url。 

 enable 
 是否开启仓库。0(不开)或1(开). 

 enablegroup 
 是否允许使用yumgroup参数。 

 exclude 
 排除哪些软件的安装和更新。 

 failovermethod 
 可选priority或roundrobin。 

 gpgcheck 
 检查仓库中软件包的gpg签名。可以为0或1. 

 gpgkey 
 仓库软件包签名,gpg密钥url 

 include 
 包含配置url。 

 includepkgs 
 只有匹配的软件包才能安装。 

 keepalive 
 可以为0或1 

 metadata_expire 
 元组数据的过期时间。 

 mirrorlist 
 镜像列表。 

 priority 
 优先级。可以是1-99. 

 protect 
 启用或禁止对这个仓库的保护。0或1. 

 proxy 
 设置代理。 

 3.10 host:自动管理/etc/hosts 

 host{"标题": 

 参数:值,} 

 参数: 

 ensure 
 present或absent。 

 name 
 主机名。 

 ip 
 主机ip。 

 host_aliases 
 别名。 

 3.11 mount:管理挂载和卸载。 

 mount{"标题": 

 参数:值,} 

 参数: 

 ensure mounted或unmounted 

 device 
 设备 

 fstype 
 "ext3|ext4|nfs|cifs|iso9660|ntfs" 

 options 
 参数。可以为default、rw、ro 

 path 
 要挂载的目录。默认是title。 

 3.12 tidy:清理过期或无用的软件 

 tidy{"标题": 

 参数:值,} 

 参数: 

 age 
 指定过期时间。单位可以是s、m、h、d、w(周)。 

 backup 
 清理前是否备份。true或false。 

 match 
 匹配条件 

 path 
 清理路径。默认是同title。 

 recurse 
 是否递归。true或false 

 remdirs 
 是否只删除空目录。true或false 

 size 
 删除大于指定值得文件。单位可以是k、m。 

 type 
 过期的时间类型。可以是atime、mtime、ctime。 

  

  

 资源引用:Type["title1","title2"...].Type表示资源类型,首字母必须大写。 

 设置资源默认值:Type{参数 => 值,.....} 

 资源关系:before 
 在指定资源之前运行 

 after 
 在指定资源之后运行 

 require 
 必须在指定资源存在或运行成功后执行。 

 notify 
 通知指定资源进行更新 

 subscribe 
 资源有更新时通知指定资源执行。 

 标签:tag 元参数,标签资源,tag => "标签名";tag函数,为容器添加资源,tag("标签名");tagged函数,判断一个容器的标签是否被定义过,tagged("标签名")。 

 运算符: 

 算法运算符:+、-、*、/、**(幂)、% 

 整数比较运算符:>、<、==、>=、<=、!=、<=>(0表示相等;1表示前者大;-1表示后者大) 

 赋值:=、+=、-=、*=、/=、**=、%= 

 字符串比较:gt、ge、lt、le、eq、ne、cmp(相等返回0;前者大于后者,返回1;前者小于后者,返回-1) 

 逻辑运算符:||(or)、&&(and)、!(not) 

 文件判断:-d、-f、-e、-r、-w、-x、-b(是否是二进制文件)。以上如果条件成立,则返回1. 

 正则表达式:以/包裹表达式。以=~和!~表示匹配和不匹配。()和{}需要转义,使用\(\)和\{\}。 
  

 条件判断语句: 

 if 条件 { 

 }elseif 条件{ 

 }else{} 

 case 值{ 

 值1:{} 

 值2:{} 

 . 

 . 

 . 

 default:{} 

 } 

 $变量 = 值?{ 

 值1:{} 

 值2:{} 

 . 

 . 

 . 

 default:{} 

 } 

 类:class 类名{} 

 子类:class 父类:子类{} 

 继承:class 子类 inherits 父类{Type ["title"]{参数=> 值,参数=> undef,参数+>值}}。undef表示删除父类中的属性;+>表示增加父类没有的属性。 

  

 自定义资源: 

     可以使用define声明创建新的资源类型。 

 用法:define 类型(参数.....){处理.....} 

 参数定义:参数类型 参数名 [=>初始值]; 

 参数名必须以$符开头 

 资源的引用: 

     类型{title:参数.....} 

 其中参数不带$ 

     $title和$name: 

      每一个自定义的资源,都会有两个自带的参数,$title及$name,这两个参数不必明确定义出来。 

  $title即是引用资源时实例的title。$name默认是$title的值。



https://www.xamrdz.com/lan/5uk1951156.html

相关文章: