得知互动

标题: puppet 资源及依赖关系及本地测试 [打印本页]

作者: 云V小编    时间: 2022-4-24 15:17
标题: puppet 资源及依赖关系及本地测试
一.本地pp 文件测试       package {"nginx":       #作用:安装nginx       ensure=> latest,}       service {"nginx":       #作用:启动nginx,并让设置开机启动       ensure=> running,       enable=> true,       restart    => "systemctl restart nginx.service",             #只有被通知或者订阅才会被触发重启       subscribe  => file["/etc/nginx/nginx.conf"],       #监听下面那个服务,若触发了,重启nginx             #测试得出结论,如果新文件事先已经存在没有发生修改,重启nginx不会被触发。}       file{"/etc/nginx/nginx.conf":       #作用:复制nginx配置文件       ensure=>file,       content=>template("/root/nginx.conf"),}puppet apply -v --noop cs.pp #测试运行,并不真正安装,用于看报错的
puppet apply -v cs.pp   #真正运行安装
二.资源的依赖关系before:表示需要依赖于某个资源
require:表示应该先执行本资源,在执行别的资源
notify:A notify B:B依赖于A,且A发生改变后会通知B
subscribe:B subscribe A:B依赖于A,且B监控A资源的变化产生的事件
subscribe例:
package {"httpd":ensure=> present,subscribe =>package["nginx"],#表示订阅下面那个资源,如果下面那个资源执行不成功这个资源不会执行,下面资源执行成功了或者已经在执行完毕的状态了,本资源就会执行}package {"nginx": ensure=> present,              }notify例:package {"httpd":ensure=> present,}package {"nginx":ensure=> present,notify=>package["httpd"],#表示该资源执行完毕通知上面那个资源,这个资源不执行成功,上面那个资源不会执行}依赖关系还可以使用->和~>来排序 例:exec {"echo '1'>>/root/2333.txt": path    => ["/usr/bin", "/usr/sbin"],}exec {"echo '2'>>/root/2333.txt": path    => ["/usr/bin", "/usr/sbin"],}exec {"echo '3'>>/root/2333.txt": path    => ["/usr/bin", "/usr/sbin"],}exec["echo '3'>>/root/2333.txt"] -> exec["echo '2'>>/root/2333.txt"] -> exec["echo '1'>>/root/2333.txt"]如果是正常输出结果应该为123,但是我用 -> 符号定义运行顺序最后输出结果为
三.几个常用的资源介绍
1.exec资源exec { "mkdir  666":#执行的命令       cwd     => "/root/",#在那个路径执行命令,给了如果路径不存在,执行失败       creates => "/root/678",#判断,如果有这个文件夹了就不执行了        path    => ["/usr/bin", "/usr/sbin"]#命令程序,到那个路径去找执行文件}2.package (安装软件)package{["httpd.x86_64","nginx.x86_64"]: #以[,]隔开可安装多个软件        ensure => purged,        #latest安装最新的,installed 安装,purged 删除软件包        provider => "yum",        #以yum方式安装在yum源里安装}package{"nginx":        ensure => installed,        provider => "rpm",        #以rpm本地文件安装,下面必须指定安装文件的路径,否则报错        source => "/root/nginx-1.8.1-1.el7.ngx.x86_64.rpm"}3.service 和 flieclass xingjian{service{"nginx":     ensure =>  running,     #设置成什么状态 running正在运行, stopped停止状态     enable =>  true,     #是否开启自启 true是,false否     hasrestart => true,     hasstatus => true,     require => file['/etc/nginx/nginx.conf'],     #在执行资源时,先检查下面那个资源是否执行       }file {"/etc/nginx/nginx.conf":     #复制的路径     ensure =>file,     #文件类型,file直接复制原有类型,如果要填link的是创建链接文件,但是要创建链接文件的话,下面的source要换成target,如果填directory就是复制文件夹,需要在添加recurse='true'实现递归复制     source =>"/root/nginx.conf",     #源文件路径     }             }4.cron(计划任务)cron {"jihua":     command => "/root/1.sh",     ##执行脚本的路径名或者命令路径名     ensure => "present",     #present    如果该cron不存在则添加,absent     如果该cron存在则删除     minute => "*/5",     #5分钟运行一次,和crontab用法一样     target => "root",     #以什么用户执行脚本}5 user 和 group         group{"yangzai":               #组名               ensure => present,               gid => "2333",               system => false,               #是否为系统组              # members:成员用户,               }         user{"yangzai":                #用户名               ensure =>present,               system =>false,               comment =>"233",               #注释,一般描述运行啥软件               shell =>"/bin/bash",               #默认shell               home =>"/home/yangzai",               #家目录路径               managehome => true,               #是否创建家目录               groups => "yangzai",               uid => "2333"   }7. notify {"hello world":} #显示信息




欢迎光临 得知互动 (https://bbs.dezhifl.com/) Powered by Discuz! X3.4