设为首页 收藏本站
查看: 1174|回复: 0

[经验分享] puppet安装与使用--配置文件及常用资源

[复制链接]

尚未签到

发表于 2018-8-3 09:37:13 | 显示全部楼层 |阅读模式
  安装完puppet后,然后需要了解下puppet 配置文件和一些常用资源的使用
  1、默认情况下,配置文件位于/etc/puppet目录下
DSC0000.png

  moudules和namsapceauth.conf在yum安装后没有,可自行创建
  1).auth.conf和namespaceauth.conf应该是一些认证,里面配置有先生顺序
  2).modules目录,里面存放一些自定义的模块,在manifests中调用,在modules某模块结构如下:
  manifests  #存放代码,另外init.pp必须存在
  files       #存放用于同步到客户端的文件
  templates  #存放模板
  3).manifests目录,里面存放site.pp 程序主入口
  4).fileserver.conf,文件服务配置文件,格式如下:
  [tools]
  path /etc/puppet/modules/
  allow
  5). puppet.conf,服务启动主配置文件
  配置文件命名空间
  main 通用配置选项
  puppetd 客户端配置选项
  puppetmasterd 服务端配置选项
  main命名空间选项
  confdir 配置文件目录,默认在/etc/puppet
  vardir 动态数据目录,默认在/var/puppet
  logdir 日志目录,默认在$vardir/log
  rundir puppet PID目录,默认在$vardir/run
  statedir state目录,默认在$vardir/state
  statefile state文件,默认在$statedir/state.yaml
  ssldir SSL证书目录,默认在$confdir/ssl
  trace 发生错误时显示跟踪信息,默认false
  filetimeout 检测配置文件状态改变的时间周期,单位秒,默认15秒
  syslogfacility 指定syslog功能为user级,默认为daemon级
  puppetmasterd命名空间选项
  user 后台进程执行的用户
  group 后台进程执行的组
  mainfestdir mainfests文件存储目录,默认为$confdir/mainfests
  mainfest mainfest站点文件的名字,默认为site.pp
  bindaddress 后台进程绑定的网卡地址接口
  masterport 后台进程执行的端口,默认为8140
  puppet命名空间选项
  server puppet puppet服务器,默认为puppet
  runinterval seconds puppet应用配置的时间间隔,默认1800秒(0.5小时)
  puppetport port 后台进程执行的端口,默认8139
  6).autosign.conf,自动答名,格式如下:
  *                       表示所有
  puppet*                  puppet开头的所有
  192.168.140.0/24    网段
  事先要在puppet.conf中[puppetmaster]下填加
  autosign=true
  autosing=/etc/puppet/autosign.conf 这两行
  
  2、Puppet能管理的资源有很多,常见的也是常用的,有file,exec,package,service,cron等(各个资源参数可以用法使用下面命令可以查到,简单说下常用的参数)
  Puppet describe  --list      查询所支持的资源
  Puppet describe  file       查看该资源的用法
  1).puppet file资源管理
  【puppet file 参数介绍】
  backup
  决定文件的内容在被修改前是否进行备份. 利用filebucket对文件进行备份,按文件的md5sum进行归类,便于恢复文件的时候找到文件.可以把文件备份到 puppet 客户端,也可以通过设置backpup => bucket_name 把文件备份到网络上的其他机器. 如果backup的值是一个点号”.”开头的字符串,puppet会把文件备份在同一目录下,备份文件的扩展名就是 bakcup里面的那个字符串.如果设置 backup => false , 该文件不做备份.
  checksum
  怎样检查文件是否被修改,这个状态用来在复制文件的时候使用, 这里有几种检测方式,包括md5 ,mtime,time,timestamp等.
  默认的检测是用md5
  content
  把文件的内容设置为content 参数后面的字符串, 新行,tab,空格可用 escaped syntax 表示
  ensure
  如果文件本来不存在是否要新建文件,可以设置的值是 absent和present,file和directory. 如果指定 present,就会检查该文件是否存在,如果不存在就新建该文件,如果指定是 absent, 就会删除该文件(如果recurse => true ,就会删除目录).
  force
  force 当前的唯一作用是用在把一个目录变成一个链接,可用的值是ture和false
  group
  指定那个该文件的用户组,值可以是gid或者组名
  ignore
  当用recursion 方法复制一个目录的时候,可以用ignore来设定过滤条件,符合过滤条件的文件不被复制. 使用ruby自带的匹配法则.因此shell级别的过滤表达式完全支持,例如[a-g]*
  links
  定义操作符合链接文件. 可以设置的值是follow和manage; 文件拷贝的时候,设置follow,会拷贝文件的内容,而不是只拷贝符合链接本身,如果设置成manage ,会拷贝符合链接本身.
  Mode
  mode用于设置文件的权限
  owner
  设置文件的属主
  path
  指定要管理文件的路径,必须用引号引起来, 这也是一个资源的 namevar ,通常path 等于资源的title
  recurse
  设置是否以及如何进行递归操作, 可以设置的值是 false,true ,inf ,remote
  source
  拷贝一个文件覆盖当前文件,用checksum来判断是否有必要进行复制,可以设置的值是一个引用的完整的文件路径,或者是URI,当前支持的URI只有puppet和file ; 这是一个对文件常用的操作,可以让puppet修改系统的配置文件.
  target
  是为创建链接的。可以设置的值为notlink.
  type
  检查文件是否只读
  2).puppet exec资源管理
  【puppet exec 参数介绍】
  command:将会被执行的命令,必须为被执行命令的绝对路径,或者得提供该命令的搜索路径。如果命令被成功执行,所有的输出会被记录在实例的正常(normal)日志里,但是如果命令执行失败(既返回值与我们所指定的不同),那么所有的输出会在错误(err)日志中被记录。
  这个是exec资源类型的名变量(namevar)。
  creates:
  指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行:
  cwd:
  指定命令执行的目录。如果目录不存在,则命令执行失败。
  Group
  定义运行命令的用户组。在不同的平台下的运行的结果无法确定,由于不同用户运行命令的时候,变量是不变的,所以这是平台的问题,而不是Ruby或Puppet的问题。
  logoutput
  是否记录输出。默认会根据exec资源的日志等级(loglevel) 来记录输出。若定义为on_failure,则仅在命令返回错误的时候记录输出。可取的值为:true,false和其他合法的日志等级。
  
  Onlyif
  如果这个参数被设定了,则exec只会在onlyif设定的命令返回0时才执行。例如:
  exec { "logrotate": path => "/usr/bin:/usr/sbin:/bin", onlyif => "test `du /var/log/messages | cut -f1` -gt 100000" }
  只有在test返回true的时候logrotate才会被运行。
  需要注意的是onlyif定义的命令跟主命令遵循同样的规则,也就是说如果path没有被设置的话,需要使用绝对路径。
  除此之外,onlyif还可以接受数组做为其值,例如:
  onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
  上面的代码限定了只有在所有数组中的条件返回true时exec才会被执行。“
  
  path
  命令执行的搜索路径。如果path没有被定义,命令需要使用绝对路径。路径可以以数    组或以冒号分隔的形式来定义。
  
  refresh
  定义如何更新命令。当exec收到一个来自其他资源的事件时,默认只会重新执行一次   命令。不过这个参数允许你定义更新时执行不同的命令。
  
  refreshonly
  该属性可以使命令变成仅刷新触发的,也就是说只有在一个依赖的对象被改变时,命令才会被执行。仅当命令与其他对象有依赖关系时,这个参数才有意义。当你要触发某个行为时,会显得很有用:
  # Pull down the main aliases file file { "/etc/aliases": source => "puppet://server/module/aliases" } # Rebuild the database, but only when the file changes exec { newaliases: path => ["/usr/bin", "/usr/sbin"], subscribe => File["/etc/aliases"], refreshonly => true }
  要注意的是只有subscribe和notify可以促发行为,而不是require,所以在使用refreshonly时,只有同时使用subscribe或notify才有意义。有效的值为true, false。
  
  unless
  如果这个变量被指定了,那么exec会执行,除非unless所设定的命令返回0。?
  user
  定义运行命令的用户。 注意如果你使用了这个参数,那么任何的错误输出不会在当下被捕捉,这是Ruby的一个bug。
  3).puppet package资源管理
  【puppet package 参数介绍】
  adminfile
  软件包管理器,通常是为了安装软件包。这个参数只适用于Solarias
  allowcdrom
  告诉 apt 允许使用cdrom作为软件源, 可以设置成false或者 true
  category
  软件包设置的一个只读的属性
  configfiles
  是否保留或者替换软件的配置文件,大多数软件不支持这个参数,可设置的值是false,true
  description
  描述软件包,软件包设置的一个只读属性
  ensure
  设置该软件包应该在什么状态. installed 表示要安装该软件,也可以写成present; absent 表示反安装该软件,pureged 表示干净的移除该软件,latest 表示安装软件包的最新版本.
  namevar
  该资源的namevar ; 软件包的名字
  
  
  4).puppet service资源管理
  【puppet service 参数介绍】
  binary :可执行文件。这个只用在不支持init脚本的情况下。
  control :用来管理服务的,通常是用在hp-unix系统上。
  enable :服务是否随开机而启动,可设置的值为true,false.
  ensure: 服务是否运行,可设置的值为running,stopped,也可以用true,false.
  hasrestart: 服务的init脚本是否支持restart参数,可设置的值为true,false.
  hasstatus :服务的init脚本是否支持status参数,可设置的值为ture,false.
  manifest :Specify a command to config a service,or a path to a manifest to do so.配置服务的命令,或者指定路径。
  name: 要运行的服务名字。
  path: 指定查找init 脚本的路径。
  pattern :搜索进程表匹配字符串,用于不支持init的脚本。
  provider :The specific backend for provider to use,可设置的值有base, daemontools,init等
  restart :重启服务。
  Start: 开启服务
  status :服务运行状态
  stop: 停止服务
  5).puppet cron资源管理
  【puppet cron 参数】
  command:
  crontab要执行的命令, 环境变量按照系统本地规则进行管理,推荐使用绝对路径.
  ensure:指定该资源是否启用,可设置成true或false
  environment:在crontab环境里面指定环境变量,例如 PATH=/bin:/usr/bin:/usr/sbin.
  hour: 运行crontab的小时,可设置成0-23
  minute:运行crontab的分钟,可设置成0-59
  month: 设置crontab运行的月份,1-12
  monthday:一个月份中的日子,1-31
  name:
  该crontab的名字,这个名字用于管理员区分不同的crontab,以及puppet管理各种资源关系.
  user:
  把该crontab加到那个用户的crontab列表,默认是运行puppet的用户
  weekday:
  运行crontab的星期数,0-7,周日是为0.
  
  3、简单使用例子
  puppet程序的主要入口在/etc/puppet/manifests/note.pp中,修改note.pp,如下配置
  node default {
  file {"/tmp/test":
  ensure => "directory";
  "/tmp/test/test.sh":
  ensure => "present",
  mode => 744,
  owner => root,
  content => "#/bin/bash\necho test | mail -s test wangliqiang@kingsoft.com\n"}
  
  cron {"crontab":
  command => "/tmp/test/test.sh",
  user => root,
  minute => 59,
  hour => 7}
  
  exec {"test":
  command => "echo test>/tmp/test/test",
  user => "root",
  path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"}
  
  service {["smb","nfs"]:
  ensure => "stopped"}
  
  package {"screen":
  ensure => "installed"}
  }
  上面简单例子解释:对于默认节点,在/tmp/下创建test目录,在test目录下再建立文件test.sh,内容为#/bin/bash  echo test | mail -s test wangliqiang@kingsoft.com,属主为root,属性744,并在每天7点59分执行此脚本,测试exec资源,在/tmp/test下用命令建立test文件,内容为test,使smb,nfs服务处于停止状态,安装screen包
  验证:在服务端puppet1上执行puppetrn puppet3后,到客户端puppet3上查看
  
DSC0001.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545704-1-1.html 上篇帖子: puppet安装与使用--安装 下篇帖子: puppet安装与使用--模块结构(iptables与rsync模块)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表