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,但是我用 -> 符號定義運行順序最後輸出結果爲

puppet 資源及依賴關係及本地測試

三.幾個常用的資源介紹

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 和 flie
class 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":} #顯示信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章