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

[经验分享] Puppet--自动化运维工具基本功能介绍

[复制链接]

尚未签到

发表于 2018-8-1 13:03:54 | 显示全部楼层 |阅读模式
类型一、文件  
cat file.pp
  
file{'/etc/nginx/nginx.conf':
  
        ensure => file,              #文件类型
  
        source => '/app/nginx.conf',     #要复制的原文件
  
        path => '/etc/nginx/nginx.conf',   #目标路径,与title重复,所以此处可以省略
  
        owner => root,
  
        group => root,
  
        mode => 0644,
  
}
  
#我们将nginx的配置文件监听端口修改为其他值如90,配置文件修改了,应该重启nginx服务,这部分后面会介绍
  
#以上实现复制文件的方法,下面进行目录的配置实现
  

  
类型二、目录
  
cat directory.pp
  
file{'yum.repos.d':
  
        ensure => directory,
  
        path => '/tmp/yum.repos.d/',
  
        source => '/etc/yum.repos.d/',   #在/tmp下创建目录yum.repos.d,但是此目录下的文件是不会一并复制过来的
  
        recurse => true,          #所以需要使用递归参数recurse,将目录中的文件、子目录全复制到path指定路径下
  
}
  
#如果将文件复制到目录中,即source是文件而path是目录而且ensure也指定目录,最终复制是有问题的
  
#上述两个例子都是复制文件和目录,如果创建文件或目录则使用ensure指定present即可
  

  
类型三、符号链接
  

  
cat link.pp
  
file{'/tmp/yum.d':            #本示例未使用path,则title充当目标路径,即在tmp目录下创建的文件为yum.d
  
        ensure => link,     #符号链接,创建的yum.d文件为软链接
  
        target => '/etc/nginx/nginx.conf',   #软链接文件指向的原始文件
  
}
  
#path或者title指定的是将要创建的对象,不论是文件还是目录
  
#符号链接文件的权限、属主、属组可以不用考虑
  

  

  
订阅和通知关系,下面通过综合示例说明订阅与通知关系
  

  
cat package.pp
  
package{'nginx':
  
        ensure => latest,
  
        name => 'nginx',
  
}
  
#首先,安装软件包
  
file{'nginx.conf':
  
        ensure => file,
  
        path => '/etc/nginx/nginx.conf',
  
        source => '/app/nginx.conf',
  
        owner => 'root',
  
        group => 'root',
  
        mode => 0644,
  
        require => Package['nginx'],   #file资源依赖于package资源
  
        notify => Service['nginx'],    #当此配置文件修改时就会通知service资源,触发service的动作
  
}
  
#编辑配置文件,将修改后的文件通过file资源复制到目标
  
service{'nginx':
  
        ensure => running,
  
        name => 'nginx',
  
        hasrestart => true,
  
        restart => 'systemctl restart nginx',
  
        #subscribe => File['nginx.conf'],        #此资源订阅file资源,即file资源有改动此资源就会被通知并采取行动
  
}
  
#由于notify与subscribe都能感知变动并立即通知,所以二者的功能是重合的,只是放置的位置不同,因此只是用其中一个
  
#下述示例与本示例效果一样
  
package{'nginx':
  
        ensure => latest,
  
        name => 'nginx',
  
} ->    #此方法表示package资源先于file资源
  

  
file{'nginx.conf':
  
        ensure => file,
  
        path => '/etc/nginx/nginx.conf',
  
        source => '/app/nginx.conf',
  
        owner => 'root',
  
        group => 'root',
  
        mode => 0644,
  
} ~>    #此方法表示file资源通知service资源或者service资源订阅file资源
  

  
service{'nginx':
  
        ensure => running,
  
        name => 'nginx',
  
        hasrestart => true,
  
        restart => 'systemctl restart nginx',
  
}
  
#本例与上例效果都是一样的,此外还有第三种方法能够达到同样的效果
  
package{'nginx':
  
        ensure => latest,
  
        name => 'nginx',
  
}
  

  
file{'nginx.conf':
  
        ensure => file,
  
        path => '/etc/nginx/nginx.conf',
  
        source => '/app/nginx.conf',
  
        owner => 'root',
  
        group => 'root',
  
        mode => 0644,
  
}
  

  
service{'nginx':
  
        ensure => running,
  
        name => 'nginx',
  
        hasrestart => true,
  
        restart => 'systemctl restart nginx',
  
}
  

  
Package['nginx'] -> File['nginx.conf'] ~> Service['nginx']
  
#单独一处,定义依赖及通知关系

运维网声明 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-544819-1-1.html 上篇帖子: 自动化运维工具之Puppet-Hello,World! 下篇帖子: Puppet---自动化运维工具(进阶)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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