puppet语法与命令详解

在学习Puppet语法之前需要掌握Puppet中资源、属性、类、模块、变量、参数、节点等相关概念。

资源:资源可以是文件、服务、软件包、自定义脚本等。

属性:资源需要定义相关的属性值,否则毫无意义。

类:将多个资源组织起来进行重新定义。

模块:多个类的合集。

变量:Puppet与其他语言类似,同样支持变量。

参数:又称参变量。

节点:Puppet每一个客户端,即主机(Host)。

资源:

每个资源的定义都具有标题、类型,以及一系列的属性。每个资源在Puppet中名称必须唯一。

例如Puppet管理Nginx服务的主配置文件---nginx.conf,类型file,通常称为File资源。

file {‘nginx.conf‘:
  ensure => file,
  mode   =>‘06400‘,
  owner  => root,
  group  => root,
  }
 service {‘nginx‘;
  hasrestart => true,
  hasstatus => true,
  subscribe =file ["nginx.conf"],
  }

属性:

每个资源都有它相应的属性,否则就失去意义。上面定义了4个属性

分别为:类型ensure、权限mode、用户owner及用户组

资源定义两个其他属性值----hasrestart与hasstatus,这两属性值都为true.

类:

通常类以应用名或作用名命名,比如应用软件Nginx、Apache等

class nginx {
file 
  {‘nginx.conf‘:
  ensure => file,
  mode   =>‘06400‘,
  owner  => root,
  group  => root,
  }
 service {‘nginx‘;
  hasrestart => true,
  hasstatus => true,
  subscribe =file ["nginx.conf"],
  }
  }

模块

当类比较多的时候,就需要把类规范起来,定义成模块的方式进行管理。

[[email protected] tmp]# tree /etc/puppet/modules/httpd/
/etc/puppet/modules/httpd/
|-- files
|-- manifests
|   `-- init.pp
`-- templates

3 directories, 1 file

节点

节点就是一个客户端,通常以主机名命名。

[[email protected] tmp]# more /etc/puppet/manifests/nodes/node2.jiabin.com.pp 
node ‘node2.jiabin.com‘ {
include test
include httpd
}

[[email protected] tmp]# more /etc/puppet/manifests/site.pp 
import "nodes/node2.jiabin.com.pp"

通过以上代码可以看到,node为定义了主机名为”node2.jiabin.com"的主机,并加载了httpd类,以及定义了主机变量$vhost.

二、Puppet语法风格

总体来说Puppet的语法规则是以括号"{}"分类,以冒号":"声明,以逗号","属性约束

例如:

package {‘nginx‘: ensure => present, }

必须使用两个空格表示缩进;

不得使用文字制表符;

尾部不能有空格;

宽度不能超过80字符;

使用=>符号进行对齐。

变量的引用

不包含变量的字符串应该使用单引号(‘‘)括起来。需要应用变量是应使用双引号("")括起来。字符串中的多有变量应该使用花括号"{}"括起来。

如:

"/etc/${file}.conf"

对变量本身的引用

变量是变量本身,不需要引号。

mode => $my_mode

三、资源

  1. 资源名

资源名采用单引号(‘‘)引起来,采用冒号(:)结尾。也可以使用(“”)的写法

package {‘openssh‘: ensure  => present }

package {"openssh": ensure  => present }

2.对齐

3.属性的顺序

声明资源时,应先定义ensure属性。方便阅读。

file { ‘/tmp/readme.txt‘:
  ensure => file,
  owner => root.
  .......
  }

四、Puppet命令详解

Puppet提供大量的命令来帮助我们进行有效的管理。Puppet中所有的命令都可以使用Puppet help命令查看。

  agent                                         #客户端进程,负责从Master获取数据
  apply                                         #运行本地 manifests
  ca                                            #本地证书的管理
  catalog                                       #编译、保存、查看Puppet代码
  cert                                          #证书颁发,用于签署证书
  certificate                                   #提供访问CA证书的管理
  certificate_request                           #管理证书请求
  certificate_revocation_list                   #管理撤销证书的列表
  config                                        #配置选项
  describe                                      #管理远程网络设备
  device                                        #管理远程网络设备
  doc                                           #生成Puppet文档
  facts                                         #系统信息检查
  file                                          #在filebuckete中检索和存储文件
  filebucket                                    #在filebucket中检索和存储文件
  help                                          #查看帮助
  inspect                                       #发送report报告
  instrumentation_data                          #管理监听的数据
  instrumentation_listener                      #管理监听状态
  instrumentation_probe                         #管理监听探测
  key                                           #创建、保存、删除证书密钥
  kick                                          #远程控制Agent,远程触发puppet agent命令
  man                                           #查看手册
  master                                        #服务端进程
  module                                        #从Puppet Forge创建、安装、查询模块
  node                                          #管理节点
  parser                                        #解析器管理
  plugin                                        #插件管理
  queue                                         #队列进程
  report                                        #创建、查看报告
  resource                                      #查看资源帮助
  resource_type                                 #查看类、默认资源类型与节点信息
  secret_agent                                  #模拟Agent
  status                                        #查看Puppet状态

Puppet常用命令

1、puppet master

参数详解如下:

*--daemonize:                                   #-D发送到后台守护进程,默认选项
*--no-daemonize:                                #不发送到后台守护进程
*--debug:                                       #-d启用完整的调试模式
*--help:                                        #-h查看帮助
*--logdest:                                     #-l日志送发方式,默认采用syslog配置
*--verbose:                                     #-v显示详细信息
*--version:                                     #-V打印Puppet版本
*--compile:                                     #以JSON的方式输出编译的catalog

--genconfig输出默认的配置文件,代码如下:

[[email protected] ~]# puppet master --genconfig>puppet.conf

最常用的是不启用守护进程的方式运行,用于调试Puppet代码

2、puppet agent

puppet agent在每个节点以守护进程方式运行,通常每30分钟向master请求一次,以确认信息并询问是否有变更,然后复制运行编译好的Catalog代码。

命令的参数详解如下:

*--certname:                                    #指定客户端certname(唯一ID)
*--daemonize:                                   #-D发送到后台守护进程,默认选项
*--no-daemonize:                                #不发送到后台守护进程
*--debug:                                       #-d启用完整的调试模式
*--detailed-exitcodes:                          #提供详细的退出代码
*--digest:                                      #指定证书指纹算法,默认为MD5算法
*--disable:                                     #禁用,禁止puppet agent在此节点执行
*--enable:                                      #启用,重新允许执行puppent agent
*--fingerpring:                                 #显示当前证书的指纹
*--logdest:                                     #-l 日志发送方式,默认采用syslog配置
*--no-client:                                   #不要创建客户端配置文件,当listen=true
*--noop:                                        #使用‘noop’模式,Puppet运行Catalog
*--onetime:                                     #-o 运行一次,配合--no-daemonize使用
*--server:                                      #启动另一类型的服务
*--test:                                        #-t 测试,常用选择
*--verbose:                                     #-v 显示详细信息
*--version:                                     #-V 打印Puppet版本
*--waitforcert:                                 #-w 当Master未签署此节点证书时,puppet ag                                                ent将等待签署,并默认没2分钟重新连接Maste                                                r以确认是否完成签署

主要命令apply

puppet apply 命令参数详解

*--debug:                                       #启用完整的调试模式
*--detailed-exitcodes:                          #提供详细的退出代码
*--help:                                        #帮助
*--loadclasses:                                 #加载任何已保存类
*--logdest:                                     #日志送发方式,默认采用syslog配置
*--noop:                                        #使用‘noop’模式
*--execute:                                     #执行命令中指定的Puppet代码
*--verbose:                                     #显示详细信息
*--catalog:                                     #运行puppet master采用--compile输出JSON

实例一、将输出信息输出到日志文件

[[email protected] manifests]# puppet apply -l /tmp/init.log init.pp 

** (process:18930): WARNING **: nm_client_get_devices: error getting devices: The name org.freedesktop.NetworkManager was not provided by any .service files

[[email protected] manifests]# cd /tmp/
[[email protected] tmp]# cat init.log 
Wed Dec 31 11:55:36 +0800 2014 Puppet (notice): Compiled catalog for node1.jiabin.com in environment production in 0.04 seconds
Wed Dec 31 11:55:36 +0800 2014 Puppet (notice): Finished catalog run in 0.01 seconds

实例二、在客户端运行命令

[[email protected] ~]# mkdir -p /etc/puppet/modules/test/manifests
[[email protected] ~]# vim /etc/puppet/modules/test/manifests/init.pp
[[email protected] ~]# puppet apply -e "include test" --noop
Notice: Compiled catalog for node2.jiabin.com in environment production in 0.10 seconds
Notice: Finished catalog run in 0.02 seconds

去除 --noop后可以查看/tmp下生成的node2.txt文件
[[email protected] ~]# puppet apply -e "include test" 
Notice: Compiled catalog for node2.jiabin.com in environment production in 0.07 seconds
Notice: Finished catalog run in 0.03 seconds
[[email protected] ~]# cd /tmp/
[[email protected] tmp]# ls
helloworld.txt  node2.txt
[[email protected] tmp]# cat node2.txt 
Hello World![[email protected] tmp]#

实例三、使用apply运行master编译好的JSON文件。需要在服务端使用compile参数生成JSON文件再传递至客户端执行。

1)先修改test类的内容,将"Hello World!" 修改为“Testing JSON!":

[[email protected] tmp]# vim /etc/puppet/modules/test/manifests/init.pp 

class test {
    file { "/tmp/$hostname.txt": content => "Testing JSON!";}
}

2)使用compile参数生成JSON文件,代码如下:

# puppet apply --catalog node2.jiabin.com.json
时间: 2024-11-08 01:57:29

puppet语法与命令详解的相关文章

一步一步学会puppet(五)--配置文件和常用命令详解

这篇博文主要解析了puppet的配置文件和常用命令,以备以后查阅: =================================================================== 1 配置文件 1.1 组织结构 2 常用命令 2.1 常用命令 2.2 各类命令详解 2.3 帮助类命令 =================================================================== 1 配置文件 1.1 组织结构 配置文件位于/etc/

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work

awk命令详解二

awk命令详解 简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: AWK命令介绍 awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 1.   调用awk: 第一种命令行方式,如: awk [-Field-separator] 'commands' input

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

linux sort 命令详解

原文:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [[email protected] programming]$ cat seq.txtba

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

cat 命令详解

简略版: cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename     只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 > file 参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的

expdp impdp 数据库导入导出命令详解

一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错) select * from dba_directories; 三.给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予. grant read,write on directory dpdata

oracle sqlplus命令详解

涉及到的知识要点a.带有一个&的替换变量的用法b.带有两个&的替换变量用法c.define命令用法d.accept命令用法e.定制SQL*Plus环境f.在glogin.sql文件中保存定制结果g.sqlplus编辑命令 a.带有一个&的替换变量的用法1).使用带有一个&号的变量值来提示用户输入一个值.eg.SQL> SELECT     empno, ename, sal, deptno FROM  emp WHERE empno = &empno;输入 e