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

[经验分享] puppet常用资源说明

[复制链接]
发表于 2018-8-3 07:47:12 | 显示全部楼层 |阅读模式
  cron                  //任务计划
  exec                 //执行脚本​
  file                    //定义文件
  group                  //定义组
  host                     //定义host性息
  package           //定义安装包
  service              //定义服务状态
  user                    //定义用户
  mount                  //定义mount状态
  sshkey                //定义密钥
  ssh_authorized_key    //定义密钥
  yumrepo                    //定义yum源
  tidy
  schedule
  augeas
  -----------------------------------------------------------------------------------------------
  user       用户管理
  支持类型
  - allow duplicates     允许用户拥有相同的uid
  - manages expiry      管理用户过去日期
  - manages homedir    管理用户家目录
  - system users              共过低UID值的方式创建
  通过password属性,但是默认不加密的,所有最好填写加密过后的密码
  manage home仅相当与useradd -m 参数,不保证家目录一直存在
  例子:
  user { "tomcat":
  ensure => present,
  uid => 501,
  allowdupe => true,
  groups => 'tomcat',
  managehome => true,
  home => "/home/tomcat",
  shell => "/bin/bash"
  expiry  => "2012-11-12",
  }
  ---------------------------------------------------------------------------------------------------
  group            组管理
  在多台机器环境下,规定UID和GID,避免同用户名不同UID,GID情况
  system为true并且gid没有制定的时候,puppet默认给组一个低于500的gid。
  例子:
  group { "ntp":
  ensurce => present,
  gid => 15,
  allowdupe => false,
  system => true,
  }
  ------------------------------------------------------------------------------------------------------------
  file                文件管理
  包含3中文件类型
  - 文件
  - 链接文件
  - 文件夹
  包含3种文件内容源
  - content => "something",
  - source => "puppet://puppet.xxx.com/xxxx"
  - content => template("modulesname/templatefilename")
  注意,filed的宿主在puppet中管理,file资源自动依赖。如果file的父目录也被管理着,也会自动依赖。
  文件夹资源定义中 ,mode的644=755,
  例子:
  file {"test.sh":                                                                                    //定义执行的脚本
  source=>"puppet:///modules/memcached/test.sh",                         //脚本的位置,需要从服务器下载
  path=>"/tmp/yum/test.sh",                                                                //传输到客户端的位置
  ensure=>file,                                                                                     //定义是一个文件
  owner=>"root",                                                                                     //文件拥有者
  mode=>775,
  group=>"root",
  }
  或者。
  file {"httpd.conf":
  content =>  template("apache/httpd.conf.erb"),
  path    =>  "/etc/httpd/conf/httpd.conf",
  require =>  PACKAGE["httpd"],
  ensure  =>  present,
  }
  或者,
  file { "/root/install.log":                              //定了一个文件
  owner => "puppet",                              //文件的属性:拥有用户
  group => "puppet",                              //文件的用户 组
  mode => 777,                                      //文件的模式
  }
  -------------------------------------------------------------------------------------------------------------------
  package              软件包管理
  常用的管理方式:
  yum/apt
  rpm,gem等
  自动依赖
  ensure的方法
  present,installed,latest,absent,purged,held,版本
  source的地址必须是本地路径或者包管理可以理解的url。
  package { "httpd":
  ensure => "5.4.54"
  }
  package { "rak":
  ensure => installed,
  source => "/home/ruby/rack-1.2.1.gem",
  }
  --------------------------------------------------------------------------------------------------------------------------
  service       服务管理
  redhat中默认使用service命令和/etc/init.d/目录中的服务
  puppet都期望init脚本提供状态。
  没有状态需要在hasstatus设置为false或者制定status的属性命令。
  service从其他资源收到事件消息后将会重启。
  -重启命令用restart属性来制定
  -使用hasrestart为true来使用init脚本来重启(现在默认为true,执行失败后会使用stop/start方式)
  -如果不设置,使用stop/start方式
  例子:
  service { “ntp”:
  enable true, ensure => running,
  hasrestart => false,
  path => “/etc/init.d”,
  }
  或者
  service { "tomcat":
  ensure => running,
  enable => true,
  start => "$tomcat_home/bin/catalina.sh start",
  stop => "$tomcat_home/bin/catalina.sh stop"
  hasrestart => false,
  hasstatus => false,
  }
  ------------------------------------------------------------------------------------------------------------------------------
  exec             执行外部命令
  能不用就不用,能少用就少用
  不设置阀值,加载一次就会执行一次
  exec的不执行条件。
  - creates                               文件/目录不存在时才执行
  - refreshonly                        接受到刷新时间后才执行
  - onlyif                                   仅仅这个属性命令返回0时,才执行
  - unless                                 这个属性命令执行不成功,返回不为0才执行
  exec中命令可能不会每次执行,但是onlyif/unless中会,所有经理写的简单。
  puppet在执行onlyif/unless命令时候,会调用系统的sh。所有使用ps查看系统使用进程,要过滤掉sh。
  例如:
  exec { "test.sh":                                                                                           //执行的命令
  # cwd=>"/tmp/yum/",
  creates => "/root/a",
  command=>"/bin/bash /tmp/yum/test.sh",                                               //命令
  path=>"/usr/local/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin",                  //定义环境变量PATH
  require=>FILE["test.sh"],                                                                        //需要上面file中test.sh文件,如果文件已经在客户端就需要,不再的话,就不需要。每次执行同步都会默认去执行该shell。
  }
  exec { "nginx-s>
  user => "root",
  refreshonly        => true,
  onlyif  => "nginx -t /etc/nginx.conf",
  tries => 3,
  try_sleep => 5,
  }
  ------------------------------------------------------------------------------------------------------------------------------------------------
  cron   脚本
  任务保存在/var/spool/cron/username
  不指定用户默认为root,
  例子:
  cron {"cron-shell":                                                //定义个crontab
  command=>"sh /opt/cloudiya/test.sh",          //定义命 令
  user=>"root",                                                      //用户
  minute=>"40",                                                    //时间
  hour=>"15",                                                        //小时
  #  ensure=>absent,                                               //不用选择,如果需要删除的话,使用
  }
  ------------------------------------------------------------------------------------------------------------------------------------------------
  host      管理主机
  包括主机名,ip,别名,注释
  host { “puppet.xxx.com”:
  ensure =>present,
  ip =>“172.16.0.1”,
  host_aliases [“puppet”,”master”],
  comment => "puppet master",
  }
  --------------------------------------------------------------------------------------------------------------------
  mount    管理挂载
  -mount 资源收到notify事件后,ensure是mounted,它尝试重新挂载
  -ensure
  --umounted 确保文件系统存在fstab中但是未挂载
  -- absent   确保此文件系统在fstab中不存在
  -- mounted, 确保存台fstab中并且已经挂载
  -- present 区别它在fstab中不改变状态。
  例子:
  mount {"/home/apache/download":
  atboot => false,
  ensure => mounted,
  name => "fileserver:/download",
  fstype => "nfs",
  options => "ro",
  }
  --------------------------------------------------------------------------------------------------------------------
  yumrepo         yum源管理
  yumrepo { "IUS":
  baseurl => "http://dl.iuscommunity.org/pub/ius/stable/
  $operatingsystem/$operatingsystemrelease/$architecture",
  descr => "IUS Community repository",
  enabled => 1,
  gpgcheck => 0
  }
  ---------------------------------------------------------------------------------------------------------------------
  sshkey         管理主机的key
  只会安装key到/etc/ssh/ssh_kown_host文件中
  sshkey {"web001":
  ensure => present,
  key => "密钥",
  type => "ssh-dss",
  }
  -------------------------------------------------------------------------------------------------------------------------------
  Ssh_authorized_key
  管理SSH授权密钥
  ssh_authorized_key { “hostname”:
  ensure => present,
  type => “ssh-dss”,
  key => “密钥值”,
  nam e => “hostname”,
  target => “/home/sky/.ssh/authorized_keys”,
  user => ‘sky’,
  }
  -------------------------------------------------------------------------------------------------------------------------------------------------
  tidy         删除制定条件文件
  不制定age,和size,所有符号规定的条件都被删除
  例子,删除1周的大于100M的文件
  tidy { "/tmp":
  age => "1w",                      //
  recurse => 1,                   // 目录层数
  matches => ["[0-9]pub*.tmp","*.temp"]
  rmdir => true                                           //文件夹为空且满足条件是才删除
  >
  }
  -------------------------------------------------------------------------------------------------------------------------------
  schedule        周期行任务
  与cron不同,cron使由操作系统发起,schedule由puppet满足条件后发起.
  --------------------------------------------------------------------------------------------------------------------------------

运维网声明 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-545602-1-1.html 上篇帖子: puppet简介及配置(入门) 下篇帖子: puppet-dashboard安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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