latest, } service { nginx : #作用:啟動(dòng)nginx,并讓設(shè)置..."/>
您好,登錄后才能下訂單哦!
package {"nginx":
#作用:安裝nginx
ensure=> latest,
}
service {"nginx":
#作用:啟動(dòng)nginx,并讓設(shè)置開機(jī)啟動(dòng)
ensure=> running,
enable=> true,
restart => "systemctl restart nginx.service",
#只有被通知或者訂閱才會(huì)被觸發(fā)重啟
subscribe => file["/etc/nginx/nginx.conf"],
#監(jiān)聽下面那個(gè)服務(wù),若觸發(fā)了,重啟nginx
#測(cè)試得出結(jié)論,如果新文件事先已經(jīng)存在沒有發(fā)生修改,重啟nginx不會(huì)被觸發(fā)。
}
file{"/etc/nginx/nginx.conf":
#作用:復(fù)制nginx配置文件
ensure=>file,
content=>template("/root/nginx.conf"),
}
puppet apply -v --noop cs.pp #測(cè)試運(yùn)行,并不真正安裝,用于看報(bào)錯(cuò)的
puppet apply -v cs.pp #真正運(yùn)行安裝
before:表示需要依賴于某個(gè)資源
require:表示應(yīng)該先執(zhí)行本資源,在執(zhí)行別的資源
notify:A notify B:B依賴于A,且A發(fā)生改變后會(huì)通知B
subscribe:B subscribe A:B依賴于A,且B監(jiān)控A資源的變化產(chǎn)生的事件
subscribe例:
package {"httpd":
ensure=> present,
subscribe =>package["nginx"],
#表示訂閱下面那個(gè)資源,如果下面那個(gè)資源執(zhí)行不成功這個(gè)資源不會(huì)執(zhí)行,下面資源執(zhí)行成功了或者已經(jīng)在執(zhí)行完畢的狀態(tài)了,本資源就會(huì)執(zhí)行
}
package {"nginx":
ensure=> present,
}
notify例:
package {"httpd":
ensure=> present,
}
package {"nginx":
ensure=> present,
notify=>package["httpd"],
#表示該資源執(zhí)行完畢通知上面那個(gè)資源,這個(gè)資源不執(zhí)行成功,上面那個(gè)資源不會(huì)執(zhí)行
}
依賴關(guān)系還可以使用->和~>來排序 例:
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"]
如果是正常輸出結(jié)果應(yīng)該為123,但是我用 -> 符號(hào)定義運(yùn)行順序最后輸出結(jié)果為
三.幾個(gè)常用的資源介紹
1.exec資源
exec { "mkdir 666":
#執(zhí)行的命令
cwd => "/root/",
#在那個(gè)路徑執(zhí)行命令,給了如果路徑不存在,執(zhí)行失敗
creates => "/root/678",
#判斷,如果有這個(gè)文件夾了就不執(zhí)行了
path => ["/usr/bin", "/usr/sbin"]
#命令程序,到那個(gè)路徑去找執(zhí)行文件
}
2.package (安裝軟件)
package{["httpd.x86_64","nginx.x86_64"]:
#以[,]隔開可安裝多個(gè)軟件
ensure => purged,
#latest安裝最新的,installed 安裝,purged 刪除軟件包
provider => "yum",
#以yum方式安裝在yum源里安裝
}
package{"nginx":
ensure => installed,
provider => "rpm",
#以rpm本地文件安裝,下面必須指定安裝文件的路徑,否則報(bào)錯(cuò)
source => "/root/nginx-1.8.1-1.el7.ngx.x86_64.rpm"
}
3.service 和 flie
class xingjian{
service{"nginx":
ensure => running,
#設(shè)置成什么狀態(tài) running正在運(yùn)行, stopped停止?fàn)顟B(tài)
enable => true,
#是否開啟自啟 true是,false否
hasrestart => true,
hasstatus => true,
require => file['/etc/nginx/nginx.conf'],
#在執(zhí)行資源時(shí),先檢查下面那個(gè)資源是否執(zhí)行
}
file {"/etc/nginx/nginx.conf":
#復(fù)制的路徑
ensure =>file,
#文件類型,file直接復(fù)制原有類型,如果要填link的是創(chuàng)建鏈接文件,但是要?jiǎng)?chuàng)建鏈接文件的話,下面的source要換成target,如果填directory就是復(fù)制文件夾,需要在添加recurse='true'實(shí)現(xiàn)遞歸復(fù)制
source =>"/root/nginx.conf",
#源文件路徑
}
}
4.cron(計(jì)劃任務(wù))
cron {"jihua":
command => "/root/1.sh",
##執(zhí)行腳本的路徑名或者命令路徑名
ensure => "present",
#present 如果該cron不存在則添加,absent 如果該cron存在則刪除
minute => "*/5",
#5分鐘運(yùn)行一次,和crontab用法一樣
target => "root",
#以什么用戶執(zhí)行腳本
}
5 user 和 group
group{"yangzai":
#組名
ensure => present,
gid => "2333",
system => false,
#是否為系統(tǒng)組
# members:成員用戶,
}
user{"yangzai":
#用戶名
ensure =>present,
system =>false,
comment =>"233",
#注釋,一般描述運(yùn)行啥軟件
shell =>"/bin/bash",
#默認(rèn)shell
home =>"/home/yangzai",
#家目錄路徑
managehome => true,
#是否創(chuàng)建家目錄
groups => "yangzai",
uid => "2333"
}
7. notify {"hello world":} #顯示信息
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。