主程序:
配置文件:
目錄:
1.puppet命令
1.puppet命令:
puppet apply -verbose XXXX.pp-noop #測試執行-debug #檢查顯示過程puppet describe #查看資源-l:列出所有資源類型;-s:顯示指定類型的簡要幫助信息;-m:顯示指定類型的元參數,一般與-s一同使用;facter -p #查看主機信息,可以算是看內建變量puppet module install 模塊名 #安裝模塊puppet module search 模塊名 #互聯網查找模塊puppet module list #查看模塊列表
2.資源類型:
_group_創建和管理組_ :示例:group{‘nginx’:name => nginx,ensure => present,system => true,}name : 組名gid : 組IDensure : 狀態[present | absent]system : 是否為用戶組 [true | false]members : 成員用戶_user_管理用戶:示例:user{‘nginx’:uid => 3000,name => nginx,ensure => present,password => mageedu,}name : 用戶名uid : UIDgid : 基于組IDgroups : 附加組comment : 注釋expiry : 過期時間home : 家目錄shell : 默認shell 類型system : 是否為系統用戶ensure : present | absentpassword : 加密后的密碼串_package_管理軟件包 :示例:package{‘httpd’:ensure => installed,}name : 軟件包名ensure : [ installed | present | absent]source : 程序包來源 [rpm | yum]require: Package[“$webpkg”],_service_服務管理:示例:service{‘httpd’:ensure => running,enable => true,restart => ‘systemctl restart httpd.service’,# subscribe => File[‘httpd.conf’],}ensure : [ installed | present | latest | ]path : 啟動服務的腳本name : 服務名稱enable : 是否開機啟動restart : 通常用于重定義為 reloadhasrestart : 有重啟命令 [true | false]hasstatus : 有狀態查詢命令require: Package[“$webpkg”],_file_管理文件 :示例:file{‘httpd.conf’:path => ‘/etc/httpd/conf/httpd.conf’,source => ‘/root/manifests/httpd.conf’,ensure => file,notify => Service[‘httpd’],}Package[‘httpd’] -> File[‘httpd.conf’] -> Service[‘httpd’]ensure : 文件類型的確認 [file | directory | link | present | absent ]path : 文件路徑source : 源文件content : 文件內容target : 符號連接的目標文件owner : 屬主group : 屬組mode : 權限atime/ctime/mtime : 時間戳_exec_執行命令 :示例:exec { “unzip tgz packget”:command => “tar -xvf /tmp/mysql_test/mysql_test.tgz”, ###所有命令必須為全路徑或者path參數指定命令搜索路徑path => “/usr/bin:/usr/sbin:/bin:/sbin”,cwd => “/tmp/mysql_test”, ##命令執行的路徑為: /tmp/mysql_test/creates => “/etc/my.cnf”, #當/etc/my.cnf不存在的時候,才會執行該命令tries => 2, #重試次數try_sleep => 3, #重試間隔 s為單位}cwd : 命令執行的目錄command : 要運行的程序creates : 文件路徑不存在即創建user/group : 運行命令的用戶身份onlyif : 此屬性指定一個命令, 此命令正常(退出碼為0)運行時, 當前command 才會運行unless : 此屬性指定一個命令, 此命令非正常(退出碼為0)運行時, 當前command 才會運行refresh : 重新執行當前command 的替代命令refreshonly : 僅接收到訂閱資源的通知時方才運行_cron_設置定時任務 :示例:cron{‘timesync’:command => ‘/usr/sbin/ntpdate 10.1.0.1 &> /dev/null’,ensure => present,minute => ‘*/3’,user => ‘root’,}command:要執行的任務;ensure:present/absent;hour:minute:monthday:month:weekday:user:添加在哪個用戶之上;name:cron job的名稱;_notify_在日志中追加記錄信息 :示例:notify {“hello”message => ‘hello guys’name => ‘hello message’}message : 信息內容name : 信息名稱
3.流控制語句:
if語句:if CONDITION {…} else {…}示例:if $osfamily =~ /(?i-mx:debian)/ {$webserver = ‘apache2’} else {$webserver = ‘httpd’}package{“$webserver”:ensure => installed,}case語句:case CONTROL_EXPRESSION {case1: { … }case2: { … }case3: { … }…default: { … }}示例:case $osfamily {“RedHat”: { $webserver=’httpd’ }/(?i-mx:debian)/: { $webserver=’apache2′ }default: { $webserver=’httpd’ }}package{“$webserver”:ensure => installed,}selector語句:#當變量符合case中的其中一個時,直接返回指定值CONTROL_VARIABLE ? {case1 => value1,case2 => value2,…default => valueN,}示例:$pkgname = $operatingsystem ? {/(?i-mx:(ubuntu|debian))/ => ‘apache2’,/(?i-mx:(redhat|fedora|centos))/ => ‘httpd’,default => ‘httpd’,}package{“$pkgname”:ensure => installed,}
4.類class:
示例:class nginx {package{‘nginx’:ensure => installed,}#調用才可執行類代碼include nginx示例:#給class參數,給定個默認參數class dbserver($pkgname=‘mariadb-server’) {package{“$pkgname”:ensure => latest,}service{“$pkgname”:ensure => running,enable => true,}}#條件判斷參數,給特定值if $operatingsystem == “CentOS” {$dbpkg = $operatingsystemmajrelease ? {7 => ‘mariadb-server’,default => ‘mysqld-server’,}}#賦予參數值class{‘dbserver’:pkgname => $dbpkg,}類繼承:class XXXX:XXXX inherits XXXX {…puppet code…}示例:class nginx::webproxy inherits nginx {file{‘nginx.conf’:path => ‘/etc/nginx/conf.d/ngx-proxy.conf’,source => ‘/root/manifests/ngx-proxy.conf’,}#添加或修改屬性Service[‘nginx’] {enable => false,require +> Flie[‘nginx.conf’],}}
puppet模塊:
需先創建好目錄,對應資源要放在對應目錄下mkdir puppet/module/模塊名/—manifests/:init.pp:必須一個類定義,類名稱必須與模塊名稱相同;files/:靜態文件;puppet:///modules/MODULE_NAME/FILE_NAMEtemplates/:tempate(‘MOD_NAME/TEMPLATE_FILE_NAME’)lib/:插件目錄,常用于存儲自定義的facts以及自定義類型;spec/:類似于tests目錄,存儲lib/目錄下插件的使用幫助和范例;tests/:當前模塊的使用幫助或使用范例文件;在master主機上:1.創建好模塊mkdir /etc/puppet/module/nginx/{manitests,files,templates,lib,spec,tests}vim /etc/puppet/module/nginx/manitests/init.pp2.寫好站點清單vim /etc/puppet/manitests/site.ppnode 節點名字 {include 模塊名}3.啟動systemctl start puppet-master.server4.簽證puppet cert sign –all在agent節點機上5.簽證puppet agent –server node1 –no-daemonize -v –nooppuppet cert list –all
原創文章,作者:z long,如若轉載,請注明出處:http://www.www58058.com/84259