linux下puppet的“資源”管理
已經有2年多的時間沒有寫部落格來。有點不好意思,但在奇虎360真的是太忙了,沒有那麼多精力來寫部落格。
今天是週末抽出一點時間來更新一下自己的部落格,希望自己的博文能夠給大家有些許幫助。也希望通過部落格
認識更多的運維朋友,大家一起學習,一起進步。
原來寫過一篇puppet搭建的文章,今天跟大家分享的是puppet“資源”。什麼是資源?所有由puppet的統一的管理的不管是檔案、目錄、安裝包、cron、指令碼等都稱之為資源。大家在用puppet的時候最經常做的事情也就是來定義資源,然後用定義好的資源來統一管理和配置伺服器資源,以達到節約維護成本和儘量避免人為故障的目的。
下面來用我工作當中的實際場景跟大家分享常用的資源定義。
這個pp檔案是我/etc/puppet/modules下的一個業務的pp檔案內容。
說明一下,我的這個puppet管理公司幾個不同的業務。不同的業務在puppet裡面都是以模組的方式存在,所有的模組都在/etc/puppet/modules目錄下存放。然後每個模組下都有三個目錄,分別是files manifests templates。files目錄主要是存放模板檔案和目錄的;manifests是宣告目錄,也就是存放以pp結尾的宣告檔案;templates是用來存放模板檔案的,下面有例項來說明它的作用。
下面這個檔案的名字叫init.pp也就是初始化pp,它也可以include其他檔案進來。該檔案內容如下:
class syewu::conf {
#class是來定義一個類,syewu是我的業務名稱,兩個冒號後面的conf就是該類的名稱。
file { "hosts":
#file是來定義檔案的,後面的hosts只是一個檔案的標識,並不是檔案的名稱,能看到這個標識想到是你想定義的哪個檔案就ok了。
source => "puppet:///modules/syewu/hosts",
#source是來定義該檔案的來源的,這裡是說檔案來源於syewu模組下的files/hosts。也就是我上面說的每個模組下都有一個files目錄的作用。注意冒號後面有三個斜線。
path => "/etc/hosts",
#path是puppet客戶端要同步的檔案在實際作業系統中的位置。注意是絕對路徑。
mode => "644", owner => "root", group => "root",
#這一行大家應該能看的懂。檔案的許可權和屬主/屬組。
}
$arr_package = ["qihoo-ops-nginx", "Qihoo-lockf"]
#定義一個陣列,我這裡是定義的這個業務下需要安裝的rpm包。
package { $arr_package:
#呼叫我前面定義的陣列
provider => "yum",
#provider是指誰來提供剛才定義的rpm包,
ensure => installed,
#ensure後面指的是動作,也就是安裝這些包。如果已經安裝則忽略。
file { "/usr/local/nginx/conf/include":
source => "puppet:///modules/syewu/nginx/conf/include",
mode => "644", owner => "nginx", group => "nginx",
ignore => '*statdata*',
#前面三行前面已經介紹;ignore是忽略的意思,這裡是指忽略include目錄下包含statdata的所有檔案和目錄。
recurse => true,
#這個選項一定要注意,recurse是遞迴的意思。也就是說include目錄下所有的檔案和目錄,以及該目錄下的所有子檔案和子目錄。
purge => true,
#這個選項也要注意,它是強制一致的意思。比如客戶端的include目錄下有一個檔案a,但puppet server端定義的include目錄下沒有該檔案,則客戶端會強制刪除該檔案,如果不加這個選項,客戶端會保留這個檔案。
notify => Service["nginx"],
#notif是通知的意思,也就是說如果include目錄下內容有變動,則通知服務nginx做重啟操作。
}
file { "/home/shells":
#file也可以這樣來定義,直接在第一行來定義客戶端實際存放檔案的位置。注意在linux下,檔案和目錄都可以統稱為檔案。
source => "puppet:///modules/syewu/shells",
mode => "755", owner => "root", group => "root",
recurse => true,
#同步該目錄下的所有檔案,保證這些檔案都有可執行許可權。我喜歡把自己經常用的指令碼都放到一個目錄下,這樣比較容易找到,也方便批量操作。
file { "nginx-processor":
path => "/usr/local/nginx/conf/processor.conf",
mode => "644", owner => "nginx", group => "nginx",
content => template("syewu/processor.erb"),
#我維護的這個業務有幾百臺機器,而且伺服器的配置都是不一樣的,有的是8核,有的16核等。而我nginx啟動的時候我想讓nginx程式數跟伺服器cpu的核數是一樣的。這樣一來必然導致nginx的配置不一致。後來我想了一個辦法,讓nginx的主配置檔案是一樣的,在主配置檔案include進來一個processor.conf。這個檔案來控制nginx的啟動數。content是內容的意思,template是指模板。也就是在模組syewu的templates目錄下有一個模板檔案,名字是 processor.erb。這個模板的內容如下:
worker_processes <%= scope.lookupvar("processorcount") %>; 注意processorcount是linux下facter工具裡面的一個變數,在linux下執行facter可以看到這個變數,這個變數的意思是檢視linux下cpu的核心數。
}
exec { "/create-qihu-yum":
#exec是執行的意思,後面也是對要執行內容的一個標識,不是實際要執行的腳步。
command => "sh /home/gehailong/yum-qihu.sh",
#command後面才是要執行的內容。
path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/", "/usr/local/bin", "/usr/local/sbin" ],
#注意我這裡定義path的作用。它跟系統裡的path含義類似,也就是說從你定義的路徑中來搜尋你要執行的命令。
creates => "/etc/yum.repos.d/CentOS-QH.repo",
#creates是指前面執行指令碼的結果是來建立這個repo檔案的內容。
}
service { "nginx":
#service是來定義一個服務
enable => true,
#enable是指該服務的狀態為存在。
ensure => running,
#ensure是指這個服務要處於running狀態,如果不是則啟動該服務。
hasstatus => "false",
hasrestart => "false",
restart => "/etc/init.d/nginx reload",
start => "/etc/init.d/nginx start",
stop => "/etc/init.d/nginx stop",
status => "/etc/init.d/nginx status",
}
cron {'xitongbu-jiankong':
#cron是來定義linux的計劃任務。後面是對該計劃任務的描述。
command => "/usr/local/monitor/generic_monitor/control.py",
#command是實際計劃任務的內容。
user => root,
#user指用哪個使用者來定義該計劃。
minute => '0-59/5',
#這裡是定義時間,minute是分鐘,還可以定義hour等內容。注意這裡也支援萬用字元,比如*
ensure => absent ,
#ensure後面的absent的意思是取消客戶端的這跟cron。比如批量解除客戶端原來定義的一個cron就可以這樣來做。都刪除之後就可以把這段注掉來。
}
}
先跟大家分享這些吧。寫的比較倉促,有些的不妥的地方,歡迎大家來吐槽!!!
相關文章
- puppet package資源詳解Package
- puppet file資源詳解
- puppet進階指南——service資源詳解
- 自動化運維工具之Puppet常用資源(一)運維
- 自動化運維工具之Puppet常用資源(二)運維
- RHEL6下puppet部署管理1之安裝測試
- linux邏輯卷方式管理硬碟資源Linux硬碟
- Linux 下檢視系統資源的更好方式Linux
- linux下的程式管理Linux
- 資源管理
- CentOS 6.3下Puppet安裝配置筆記CentOS筆記
- 雲生態下的基礎架構資源管理利器Terraform架構ORM
- Webpack資源管理Web
- LINUX下獲得佔用資源最多的10個程式Linux
- MVC + EFCore 專案實戰 - 數倉管理系統8 - 資料來源管理下--資料來源預覽MVC
- Linux 下許可權的管理Linux
- ◆◆◆◆◆◆◆◆◆◆◆linux下軟體包的管理◆◆◆◆◆◆◆◆◆◆◆◆◆◆Linux
- 在Linux中,如何在Linux中進行資源配額管理?Linux
- Vue中的靜態資源管理(src下的assets和static資料夾的區別)Vue
- 查詢UNIX/LINUX 下的佔用CPU資源的SQL語句LinuxSQL
- 用 Puppet 搭建易管理的伺服器基礎架構(1)伺服器架構
- 用 Puppet 搭建易管理的伺服器基礎架構(2)伺服器架構
- 用 Puppet 搭建易管理的伺服器基礎架構(4)伺服器架構
- 用 Puppet 搭建易管理的伺服器基礎架構(3)伺服器架構
- Linux下常見的開源資料庫,你知道幾個?Linux資料庫
- 專案資源管理
- 人力資源的專案管理(轉)專案管理
- 多專案管理-資源管理(3)專案管理
- 多專案管理-資源管理(2)專案管理
- 多專案管理-資源管理(1)專案管理
- Linux下配置本地yum源Linux
- linux建立yum下載源Linux
- Puppet實戰
- Puppet學習
- puppet 安裝
- Linux下資源利用率監測利器—nmon使用Linux
- 資源管理器如何重啟 win10重啟資源管理器的方法Win10
- windows10系統下如何重啟資源管理器Windows