日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux下puppet的“资源”管理

發布時間:2025/3/20 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下puppet的“资源”管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 已經有2年多的時間沒有寫博客來。有點不好意思,但在奇虎360真的是太忙了,沒有那么多精力來寫博客。

今天是周末抽出一點時間來更新一下自己的博客,希望自己的博文能夠給大家有些許幫助。也希望通過博客

認識更多的運維朋友,大家一起學習,一起進步。

? ? 原來寫過一篇puppet搭建的文章,今天跟大家分享的是puppet“資源”。什么是資源?所有由puppet的統一的管理的不管是文件、目錄、安裝包、cron、腳本等都稱之為資源。大家在用puppet的時候最經常做的事情也就是來定義資源,然后用定義好的資源來統一管理和配置服務器資源,以達到節約維護成本和盡量避免人為故障的目的。

? ? 下面來用我工作當中的實際場景跟大家分享常用的資源定義。

這個pp文件是我/etc/puppet/modules下的一個業務的pp文件內容。

說明一下,我的這個puppet管理公司幾個不同的業務。不同的業務在puppet里面都是以模塊的方式存在,所有的模塊都在/etc/puppet/modules目錄下存放。然后每個模塊下都有三個目錄,分別是files? manifests? templatesfiles目錄主要是存放模板文件和目錄的;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",

?#pathpuppet客戶端要同步的文件在實際操作系統中的位置。注意是絕對路徑。

??? 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是指模板。也就是在模塊syewutemplates目錄下有一個模板文件,名字是 processor.erb。這個模板的內容如下:

worker_processes <%= scope.lookupvar("processorcount") %>;? 注意processorcountlinuxfacter工具里面的一個變量,在linux下執行facter可以看到這個變量,這個變量的意思是查看linuxcpu的核心數。

?}

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就可以這樣來做。都刪除之后就可以把這段注掉來。

? }

}

先跟大家分享這些吧。寫的比較倉促,有些的不妥的地方,歡迎大家來吐槽!!!


轉載于:https://blog.51cto.com/gehailong/1544184

總結

以上是生活随笔為你收集整理的linux下puppet的“资源”管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。