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

[经验分享] Puppet File资源介绍(贰拾)

[复制链接]

尚未签到

发表于 2018-8-1 13:19:08 | 显示全部楼层 |阅读模式
  puppet file资源常用的参数:
file {  
    path
  
    ensure
  
    backup
  
    checksum
  
    content
  
    force
  
    group
  
    links
  
    mode
  
    owner
  
    source
  
    selinux_ignore_default
  
    selrange
  
    selrole
  
    seltype
  
    seluser
  
}
  path:指定要管理的文件或目录,必须用引号引起来.
  ensure:有5个值,分别是absent,present,file,directory,link.设置present值表示【匹配文件,它会检查path值中的路径文件是否存在,如果不存在就会创建;设置absent值,删除已经存在的文件;设置directory表示创建目录,但是要删除目录需增加参数force=>true,设置link时会根据path路径创建软连接文件.
  示例:
  删除目录
[root@sh-web1 ~]# ls /tmp/  
test
  
[root@sh-web1 ~]# puppet apply dire.pp
  
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.06 seconds
  
Notice: /Stage[main]/Main/File[/tmp/test]/ensure: removed
  
Notice: Finished catalog run in 0.05 seconds
  
[root@sh-web1 ~]# ls /tmp/
  
[root@sh-web1 ~]#
  backup:文件的内容在修改前是否备份,目前puppet支持两种备份方式,一种是将文件备份在agent上被修改文件的目录中,另一种方式将资源文件通过filebucket备份在远程服务器上。备份在agent上的方式,buckup属性的值如果是以".bak"开头的字符串的话,puppet会将变更文件备份在agent资源文件的同一目录下,备份文件的扩展名就是"."值里面的字符串,另一种远程备份需要借助filebucket资源.
  示例:
file {"/tmp/test":  
    ensure => present,
  
    content=> "this is file.",
  
    backup => ".$backup_date.bak",
  
}
  
file {"/tmp/test":
  
    ensure => present,
  
    content=> "this is test.",
  
    backup => ".$backup_date.bak",
  
}
  
# puppet apply file2.pp
  
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.07 seconds
  
Notice: /Stage[main]/Main/File[/tmp/test]/content: content changed '{md5}70b7ea41998bea7dc5be44528ae37ba3' to '{md5}480fc0d368462326386da7bb8ed56ad7'
  
Notice: Finished catalog run in 0.03 seconds
  
[root@sh-web1 ~]# ls /tmp/
  
test  test..bak
  
[root@sh-web1 ~]# cat /tmp/test..bak
  
this is file.
  注意:agent端主动备份会在file当前目录下备份.
  checksum:检查文件内容是否被修改过,通过它可以检查文件的一致性。包括:md5,mtime,ctime默认使用md5.
  content:可以向文件中追加内容或者通过调用template函数向erb模板中追加内容.
  force:可以将一个目录变成一个连接,可用的值是true、false、yes和no,其中true与yes参数在这里均表示创建目录连接,false与no参数均表示不创建目录连接.
  group:可以指定该文件的用户组,值可以使gid或系统组名.
  links:定义操作符合连接的文件,可以设置的值是follow和manage.设置follow值文件复制时,会赋值文件的内容,而不是只复制连接本身;如果设置为manage值,则只复制符合连接本身.
  mode:用于设置文件的权限.
  owner:文件的属主.
  source:指定源文件的位置,值可以是指定的远程文件的uris或者本地完整路径.
  示例:
  通过source同步puppet数组中多个文件.
file {  
    source => [
  
        "puppet:///modules/nfs/conf.$host",
  
        "puppet:///modules/nfs/conf.$operatingsystem",
  
        "puppet:///modules/nfs/conf",
  
    ]
  
}
  target:指定创建软连接的目标.
[root@sh-web1 ~]# cat link.pp  
file {"/tmp/3.pp":
  
    ensure=> link,
  
    target=> '/root/3.pp',
  
}
  
[root@sh-web1 ~]# puppet apply link.pp
  
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.06 seconds
  
Notice: /Stage[main]/Main/File[/tmp/3.pp]/ensure: created
  
Notice: Finished catalog run in 0.03 seconds
  
[root@sh-web1 ~]# ls /tmp/
  
3.pp  test  test..bak
  selinux_ignore_default:selinux系列功能,实现自定义selinux.
  selrange:selinux系列功能,定义范围.
  selrole:selinux系列功能,定义角色.
  seltype:selinux系列功能,定义类型.
  seluser:selinux系列功能,定义用户.
  filebucket资源示例:
  filebucket资源主要用于文件的备份与恢复,通常与file资源配合使用.
filebucket {'':  
    name
  
    path
  
    port
  
    server
  
}
  name:filebucket的名字.
  path:服务器备份数据路径.
  port:备份服务器的端口.
  server:备份服务的域名.
  示例:
node base {  
    include admin
  
    include cron
  
    filebucket {'main':
  
        server => 'puppet',
  
        path   => '/var/lib/puppet/clientbucket',
  
}
  
    file {"/tmp/test":
  
        ensure => present,
  
        content=> "this is lisi.",
  
        backup => "main",
  
    }
  
}
  
node /sh-(proxy|web)\d+/  inherits base {
  
    case $::hostname {
  
        /sh-proxy\d+/: {
  
        tag ("web::proxy")
  
             include php
  
          }
  
         "sh-web1": {
  
            include php
  
            }
  
        }
  
}
# puppet agent -t  
Notice: Ignoring --listen on onetime run
  
Info: Retrieving pluginfacts
  
Info: Retrieving plugin
  
Info: Loading facts
  
Info: Caching catalog for sh-web1.localdomain
  
Info: Applying configuration version '1507549594'
  
Notice: /Stage[main]/Admin/Exec[selinux]/returns: executed successfully
  
Notice: /Stage[main]/Main/Node[base]/File[/tmp/test]/content:
  
--- /tmp/test2017-10-09 19:02:15.527825330 +0800
  
+++ /tmp/puppet-file20171009-5104-6zk5y1-02017-10-09 19:46:34.951821641 +0800
  
@@ -1 +1 @@
  
-this is test.
  
\ No newline at end of file
  
+this is lisi.
  
\ No newline at end of file
  
Info: Computing checksum on file /tmp/test
  
Info: /Stage[main]/Main/Node[base]/File[/tmp/test]: Filebucketed /tmp/test to main with sum 480fc0d368462326386da7bb8ed56ad7
  
Notice: /Stage[main]/Main/Node[base]/File[/tmp/test]/content: content changed '{md5}480fc0d368462326386da7bb8ed56ad7' to '{md5}b58ff837e1152bf6d13212d1860c1219'
  
Notice: Finished catalog run in 0.39 seconds
  注意:当资源改变时agent更新就会提示备份.
  puppet 3.8的版本发现个问题:
  master端并未备份到puppet 代码指定的位置:
[root@puppet e]# tree  
.
  
└── 8
  
    └── d
  
        └── 6
  
            └── 1
  
                └── 0
  
                    └── f
  
                        └── 1e8d610ffbe27bf880c7d734386dbde1
  
                            ├── contents
  
                            └── paths
  
7 directories, 2 files
[root@puppet e]# pwd  
/var/lib/puppet/bucket/1/e
  客户端备份到了path的路径:
[root@sh-web1 1]# tree  
.
  
└── 8
  
    └── 6
  
        └── f
  
            └── 3
  
                └── 1
  
                    └── 9
  
                        └── 2
  
                            └── 186f319242818f98380d6369593bfb47
  
                                ├── contents
  
                                └── paths
  
8 directories, 2 files
[root@sh-web1 1]# pwd  
/var/lib/puppet/clientbucket/1

运维网声明 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-544840-1-1.html 上篇帖子: Puppet代码书写规范(十九) 下篇帖子: Puppet Host资源介绍(二十一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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