自動(dòng)化運(yùn)維工具Puppet + MCollective環(huán)境搭建手冊V1.0_第1頁
自動(dòng)化運(yùn)維工具Puppet + MCollective環(huán)境搭建手冊V1.0_第2頁
自動(dòng)化運(yùn)維工具Puppet + MCollective環(huán)境搭建手冊V1.0_第3頁
自動(dòng)化運(yùn)維工具Puppet + MCollective環(huán)境搭建手冊V1.0_第4頁
自動(dòng)化運(yùn)維工具Puppet + MCollective環(huán)境搭建手冊V1.0_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

自動(dòng)化運(yùn)維工具

Puppet+MCollective

環(huán)境搭建手冊

V1.0

IT管理效勞部

2021.10.10

編號日期描述版本作者審核

12021.10.10創(chuàng)立文檔1.0鞠向明

目錄

一、Puppet介紹6

1.為什么要開發(fā)puppet6

2.作為工具的puppet7

3.穩(wěn)定性7

4.puppet的細(xì)節(jié)和原理8

5.底層支撐工具Providers8

6.彳修改系統(tǒng)酉己置9

7.資源之間的關(guān)系9

8.exec資源9

9.puppet語言9

10.語言的其他特性14

11.puppet語言高級特性16

12.語言教程18

13.典型的puppet使用方法18

14.總結(jié)18

二、安裝puppet19

1.更新yum源19

2.配置主機(jī)名19

3.安裝puppet效勞端20

1)安裝軟件包20

2)驗(yàn)證安裝包20

3)修改主機(jī)配置文件20

4)配置文件效勞21

5)啟動(dòng)puppet-server效勞21

4.安裝Puppet客戶端21

1)安裝軟件包21

2)配置主機(jī)名21

3)酉己置puppet客戶立需22

4)啟動(dòng)客戶端后臺進(jìn)程22

5.測試連接22

6.節(jié)點(diǎn)管理23

三、Puppet參考文檔23

四、MCollective介紹24

1.簡介24

2.MCollective特點(diǎn)24

五、安裝MCollective25

1.server端安裝25

1)安裝軟件包25

2)酉己置activemq26

3)酉己置mcollective26

4)啟動(dòng)27

2.client安裝配置:27

1)安裝軟件包27

2)配置客戶端27

3)啟動(dòng)客戶端28

3.查看連接情況28

4.其他使用命令28

六、Rsync安裝29

1.Rsync介紹29

2.安裝rsync29

3.配置rsync29

1)設(shè)定/etc/rsyncd.conf30

2)設(shè)定/etc/rsyncd.secrets密碼文件31

3)設(shè)定rsyncd.motd文件32

4.rsyncd.conf配置文件詳解32

1)全局定義33

2)模塊定義34

5.啟動(dòng)rsync效勞器36

6.防火墻設(shè)置37

7.通過rsync客戶端來同步數(shù)據(jù)37

8.一些實(shí)例39

9.FAQ43

七、一鍵安裝client腳本47

一、Puppet介紹

以下介紹來自:〃puppet.wikidot/

關(guān)于puppet各資源及其用法,請參考上述網(wǎng)址。

1.為什么要開發(fā)pufjpet

系統(tǒng)管理員都喜歡自己寫點(diǎn)小工具來讓自己的工作完成的更快或者更好,

不管是在大企業(yè)管理大量的效勞器還是只管理兩三臺機(jī)器.但是很少人會把他

們的工具發(fā)布出來.也就是是說極少有工具能被重用,或者說很多工具就只能在

所在的組織內(nèi)部有用.拷貝給別的組織,他們也用不上.也就是說,每個(gè)系統(tǒng)管理

員,在一個(gè)新的公司渚B會另起爐灶開發(fā)一套基于ssh,for循環(huán)的"系統(tǒng)"來幫助自

己完成系統(tǒng)管理任務(wù).

開發(fā)puppet是為了讓系統(tǒng)管理員社區(qū)可以相互交流和共享成熟的工具,防

止重復(fù)的勞動(dòng).通過以下兩個(gè)特性來實(shí)現(xiàn)這一目標(biāo):

1.提供一個(gè)簡潔的但是強(qiáng)大的框架來完成系統(tǒng)管理任務(wù)

2.系統(tǒng)管理任務(wù)可以描述成puppet語言,因此可以相互分享代碼,就像分享

其他語言的代碼一樣,比方python,c等

因此,作為系統(tǒng)管理員的你可以更快的完成工作,因?yàn)槟憧梢杂胮uppet來處

理所有的管理細(xì)節(jié).甚至你還可以下載其他管理員的puppet代碼來讓你的工作

完成的更快.

2.作為工具的p叩pet

puppet是一個(gè)配置管理工具,典型的,puppet是一個(gè)C/S結(jié)構(gòu),當(dāng)然,這

里的C可以有很多,因此,也可以說是一個(gè)星型結(jié)構(gòu).所有的puppet客戶端同一

個(gè)效勞器端的puppet通訊.每個(gè)puppet客戶端每半小時(shí)(可以設(shè)置)連接一次

效勞器端,下載最新的配置文件,并且嚴(yán)格按照配置文件來配置效勞器.配置完

成以后,puppet客戶端可以反應(yīng)給效勞器端一個(gè)消息.如果出錯(cuò),也會給效勞器

端反應(yīng)一個(gè)消息.

3.穩(wěn)定性

puppet與其他手工操作工具有一個(gè)最大的區(qū)別就是puppet的配置具有穩(wěn)

定性,因此你可以屢次執(zhí)行puppet,一旦你更新了你的配置文件,puppet就會

根據(jù)配置文件來更改你的機(jī)器配置,通常每30分鐘檢查一次.puppet會讓你的

系統(tǒng)狀態(tài)同配置文件所要求的狀態(tài)保持一致.比方你配置文件里面要求ssh效

勞必須開啟.假設(shè)不小心ssh效勞被關(guān)閉了,那么下一次執(zhí)行puppet的時(shí)

候,puppet會發(fā)現(xiàn)這個(gè)異常,然后會開啟ssh效勞.以使系統(tǒng)狀態(tài)和配置文件

保持一致.puppet就象一個(gè)魔術(shù)師,會讓你的混亂的系統(tǒng)收斂到puppet配置文

件所想要的狀態(tài).

可以使用puppet管理效勞器的整個(gè)生命周期,從初始化到退役.不同于傳統(tǒng)

的例如sun的Jumpstart或者redhat的Kickstart,puppet可以常年讓效勞

器保持最新狀態(tài).只要一開始就正確的配置他們,然后再也不用去管他們.通常

puppet用戶只需要給機(jī)器安裝好puppet并讓他們運(yùn)行,然后剩余的工作都由

puppet來完成.

4.puppet的細(xì)節(jié)和原理

puppet的目的是讓你只集中于你要管理的目標(biāo),而忽略實(shí)現(xiàn)的細(xì)節(jié),例如命

令名,參數(shù)或者文件格式.puppet把系統(tǒng)里面的用戶,軟件包,效勞看作是"資源",

puppet的作用就是管理這些資源以及資源之間的相互聯(lián)系.

5.底層支撐工具Providers

puppet有很多的資源類型,例如文件,用戶,軟件包,效勞,不同的操作系統(tǒng)

上對資源的管理命令是不一樣的,例如debian下面用apt-get安裝軟件,redhat

下面用yum安裝軟件.

因此puppet對同一資源的管理可以有多個(gè)實(shí)現(xiàn),配置資源的時(shí)候,可以明

確的指定用什么provider.例如在redhat上配置一個(gè)package資源的時(shí)候,

可以指定provide是yum.

6.修改系統(tǒng)配置

puppet通過管理資源的方式來管理系統(tǒng),例如管理某個(gè)軟件是否要安裝,

是安裝最新的還是安裝了就行.管理某個(gè)效勞是否開啟,管理某個(gè)文件的屬性,

內(nèi)容等等.所有的資源都有對應(yīng)的幾個(gè)屬性可以設(shè)置.通過設(shè)置屬性的方式來

管理資源.有一種特殊的屬性可以用在所有的資源上面,這種屬性叫做

metaparams(元參數(shù)或者元屬性).

7.資源之間的關(guān)系

支持資源之間的關(guān)系配置是puppet的關(guān)鍵特性之一.一個(gè)資源的變更可以對另一個(gè)資

源產(chǎn)生一個(gè)動(dòng)作.例如/etc/apache.conf這個(gè)資源有改動(dòng),可以讓/etc/init.d/apache這個(gè)資源

reload一下.

假設(shè)一個(gè)資源依賴另一個(gè)資源,那么puppet會優(yōu)先配置被依賴的資源,因此如果你的配置

文件沒有準(zhǔn)備好,對應(yīng)的效勞是不會先啟動(dòng)的.

8.exec資源

有時(shí)候,沒有適宜的資源來管理效勞器上的配置,為了處理這個(gè)情況,puppet提供一個(gè)叫

做exec的資源類型.利用這個(gè)資源,你可以執(zhí)行外部命令.例如你可以用svnadmin命令來創(chuàng)

立—svn庫.

9.puppet語言

資源

puppet的全部就是管理資源,因此puppet語言的焦點(diǎn)就是處理這些資源,下面

是一個(gè)根本的管理單個(gè)資源的例子.

file{'7etc/hostsn:

owner=root,

group=root,

mode=644

上面的列子給出了定義一個(gè)資源所需要的所有組件,類型,名字和屬性.定義了一

個(gè)file資源,資源的title(標(biāo)題)是"/etc/hosts",資源的屬性里面設(shè)置了該

文件屬于那個(gè)用戶和組,以及文件的權(quán)限.

也可以在一個(gè)大括號里面定義多個(gè)資源,通過分號來區(qū)分.

file{

'7etc/sudoersH:

owner="root”,

group="root",

mode=644;

'7usr/sbin/sudoH:

owner="root",

group="root",

mode=4111

防止重復(fù)配置

puppet的編譯器會防止在不同的代碼段里面管理同一個(gè)資源,如果在不同的代

碼段對同一個(gè)資源進(jìn)行配置,執(zhí)行puppet的時(shí)候你會得到一個(gè)語法錯(cuò)誤.

puppet探測這種沖突的情況是通過判斷資源類型和資源的title(標(biāo)題);如果

兩個(gè)資源有相同的資源類型和title;那么就認(rèn)為這兩個(gè)資源是表示同一個(gè)資源.

類class

下面討論如何組合各種資源,把多個(gè)相關(guān)的資源定義在一起,組成一個(gè)類.例如

下面的代碼.

classsudo{

package{sudo:ensure=installed}

file{

"/etc/sudoers":

owner="root",

group="root”,

mode=644;

'7usr/sbin/sudo":

owner="root”,

group="root",

mode=4111

)

)

你在別的代碼段includesudo這個(gè)類,就會把sudo這個(gè)軟件包(package那

里定義)安裝好,以及兩個(gè)配置文件設(shè)置好.

Inheritance繼承

puppet支持有限制的類的繼承,但是它只有一個(gè)唯一的作用就是:子類里面

的屬性可以覆蓋父類里面的屬性.下面是一個(gè)勉強(qiáng)正確的例子.

classbase{

file{"/my/file”:content=template("base,erb")}

}

classsubinheritsbase{

#overridethecontent

File["/my/file”]{content=template("other,erb")}

注意,在子類里面的資源類型的定義是用的大寫的File;表示對這個(gè)資源重新定義,如果用小

寫的file;就會引起前面說的資源的重復(fù)配置的情況彳導(dǎo)到一個(gè)語法錯(cuò)誤.

一個(gè)復(fù)雜的真實(shí)的例子

生活總是不容易阿,真實(shí)環(huán)境中,一個(gè)包經(jīng)常關(guān)聯(lián)到幾個(gè)效勞,同時(shí)又關(guān)聯(lián)到不同

的配置文件.幾乎所有的類unix系統(tǒng)里面都有ssh效勞.通常,你不只是想安裝

ssh包,而且你還想啟動(dòng)ssh效勞.看看下面的例子

classssh{

package{ssh:ensure=installed}

file{sshd_config:

name=$operatingsystem?{

Darwin="/etc/sshd_config",

Solaris=7opt/csw/etc/ssh/sshd_config",

default=7etc/ssh/sshd_config"

),

source="puppet://server.domain/files/ssh/sshd_config"

)

service{ssh:

name=$operatingsystem?{

Solaris=openssh,

default=ssh

),

ensure=running,

subscribe=[Package[ssh],File[sshd_config]]

上面的代碼安裝好ssh包,并開啟ssh效勞,因?yàn)樵诓煌牟僮飨到y(tǒng)上面,ssh的配置文件名字

不一樣,所以還可以通過判斷操作系統(tǒng)的類型來指定資源的title(標(biāo)題).那么操作系統(tǒng)的類

型是怎么判斷的呢?下面就會解釋這個(gè)問題.

FacterVariablesfacter變量

在上面的ssh代碼里面,我們引入了一些新的東西,首先是$operatingsystem這個(gè)變量,這個(gè)

變量被引用,在puppet分析代碼的時(shí)候,會把從facter傳送過來的對應(yīng)的值賦值給這個(gè)變量.

你可以單獨(dú)手工執(zhí)行facter這個(gè)命令,這個(gè)命令會打印出它所收集到的關(guān)于主機(jī)的信息,例如

ip地址等等.facter把收集到值發(fā)送個(gè)puppet效勞器端,效勞器端就可以根據(jù)不同的條件來對

不同的機(jī)器生成不同的puppet配置文件.最重要的一個(gè)就是效勞器的主機(jī)名.

selectors選擇器

另一個(gè)新東西就是?{...}這個(gè)語法,通過對?前面的變量與括號里面的選擇項(xiàng)進(jìn)行比照,

然后把相應(yīng)的值賦值給資源,例如上面的例子,Soperatingsystem如何是Solaris,那么ssh這個(gè)

資源的name屬性就是“openssh”;如果不匹配.就賦值成defualt的指,匹配將區(qū)分大小寫.

titlevsname(標(biāo)題和名字)

如果你足夠細(xì)心,你會發(fā)現(xiàn)我們資源指定了第2個(gè)名字,例如上面的service資源ssh.

注意,冒號前面的名字叫做title(標(biāo)題),標(biāo)題的作用讓作者標(biāo)識不同的資源,是寫給人以及

puppet語法分析器看的.因此配置資源相互關(guān)系的時(shí)候,也是用資源的title.name是指定這個(gè)

資源的具體路徑,是寫給計(jì)算機(jī)看的.通常,name會默認(rèn)和title的值一樣.因此,你可以省略

name.只有情況特殊的時(shí)候才設(shè)置name屬性.

資源之間的關(guān)系

最后,我們來分析所有資源直接的關(guān)系,配置文件,包,效勞.最后一行的File[sshd_config]語法

指定了一個(gè)資源參考,注意這里是用的資源的title,這樣你就不用指定資源的全路徑.

subscribe=[Package[ssh],File[sshd_config]]這個(gè)語句表示,如果packagensshH或者文件”

sshd_config"有修改,servicessh需要重啟.

10.語言的其他特性

真相

幾乎所有的東西和符號在puppet里面都被看作是字符串,包括數(shù)字和布爾值.

但是如果你用引號把true和false引起來,他們會被當(dāng)做字符串,例如你想賦值

給某個(gè)資性"yes"的字符串.

變量

我們已經(jīng)看過什么是變量了,當(dāng)然,你還可以直接給他賦值,例如

$myvar=value

puppet不允許你在同一個(gè)類里面對一個(gè)變量進(jìn)行兩次賦值.

更多的條件語句

我們已經(jīng)在前面介紹過了選擇器〔selectors〕,在為變量選擇特定的值的時(shí)候非常有用,

Puppet同時(shí)也支持條件語句,使得你能根據(jù)不同的條件導(dǎo)入不同的資源定義〔resource

specifications]:

case$operatingsystem{

Darwin:{file{*7some/file":ensure=>present}}

default:{file{"/other/file":ensure=>present}}

)

與選擇器(selectors]配合,case語句可以進(jìn)行case-insensitive匹配。

這里還有一個(gè)簡單的if/else結(jié)構(gòu):

if$should{

file{"/some/file'*:ensure=>present}

}else{

file{"/other/file":ensure=>present}

)

另外,Puppet從版本0.24.6開始支持比擬運(yùn)算符。

數(shù)組

puppet非常有限的支持?jǐn)?shù)組這種類型,你可以創(chuàng)立數(shù)組,并且給他們賦值,但是

你不能刪除它們.數(shù)組用的最多的情況就是上面ssh例子里面,資源依賴哪種情

況.或者是一次管理多個(gè)相同類型的資源.例如:

user{[bin,adm]:ensure=present}

函數(shù)

puppet支持簡單的函數(shù)語法,例如

notice(nThisisalogmessage**)

puppet提供一些有用的函數(shù),例如template利用erb模板來生成文件內(nèi)容,這

樣就可以根據(jù)不同主機(jī)的情況,生成不同的配置文件.例如配置squid的內(nèi)存緩

存大小,可以利用facter返回的內(nèi)存值做一個(gè)簡單的數(shù)學(xué)計(jì)算,然后寫入到

squid的配置文件,就是通過template來完成的.另外一個(gè)函數(shù)include可以

讀入另外的puppet配置文件或者類.這樣可以把puppet的文件分割的更有規(guī)

津具體的文檔參考puppet的函數(shù)文檔[點(diǎn)這里]

11.pu叩et語言高級特性

定義

puppet里面有一個(gè)非常有用的語法結(jié)構(gòu),叫做"definitions",通過

definitions可以把多個(gè)資源包裝成一個(gè)資源,或者把一個(gè)資源包裝成一個(gè)模型,

便于使用.例如,在debian里面管理一個(gè)apache虛擬機(jī)非常簡單,把一個(gè)虛擬主

機(jī)的配置文件放到/etc/sites-available/里面,然后做一個(gè)符號鏈接到

/etc/sites-enabled目錄.你可以為你每個(gè)虛擬主機(jī)復(fù)制同樣的配置代碼,但是

如果你使用下面的代碼就會更好和更簡單.

definevirtual_host($docroot,$ip,$order=500,$ensure="enabled"){

$file='7etc/sites-available/$name.conf

#Thetemplatefillsinthedocroot,ip,andname,

file{$file:

content=>template(Hvirtual_host.erb"),

notify=>Service[apache]

)

file{'Vetc/sites-enabled/Sorder-Sname.conf1:

ensure=>$ensure?{

enabled=>$file,

disabled=>absent

)

}

)

然后,你就可以使用這個(gè)定義來管理一個(gè)apache虛擬主機(jī),如下面代碼所示

virtual_host{"丫eductivclabs":

order=>100,

ip=>”00”,

docroot=>"/var/www/reductivelabs/htdocs"

)

你可以在其他地方重用這個(gè)定義,另一個(gè)定義的用法就是包裝一組exec資源,

讓使用者更加清晰思路.例如下面的代碼實(shí)現(xiàn)了一個(gè)svn庫的創(chuàng)立的定義.

#Createanewsubversionrepository.

definesvnrepo($path){

exec{ncreate-svn-$nameH:

command=>*7usr/bin/svnadmincreate$path/$nameH,

creates=>n$path/$nameH#onlyrunifthisfiledoesnotexist

)

)

然后,你可以在其他地方用下面的代碼來創(chuàng)立一個(gè)svn庫

svnrepo{puppet:path=>,7var/lib/svnn}

nodes節(jié)點(diǎn)

最后一個(gè)關(guān)于puppet語言的語法是節(jié)點(diǎn)定義(nodedefinition),節(jié)點(diǎn)定

義很象類定義,也支持繼承特性.當(dāng)一個(gè)節(jié)點(diǎn)(puppet客戶端)連接到puppet效

勞器端,puppet解析器會查找這個(gè)節(jié)點(diǎn)的node代碼片斷,然后利用這個(gè)代碼片

斷來生成該客戶端的配置代碼.puppet里面主機(jī)名來標(biāo)明一個(gè)主機(jī),因此主機(jī)名

在puppet里面相當(dāng)重要.如果puppet找不到匹配該主機(jī)名的node定義,就

會用默認(rèn)的節(jié)點(diǎn)定義來配置該主機(jī).在node里面使用主機(jī)名,需要用單引號把

主機(jī)名括起來.

node'example'{

includepublickey_auth

}

在上面的代碼中,如果example這個(gè)主機(jī)連接至Upuppet效勞

器,puppet效勞器就會按照上面的代碼來配置example這個(gè)機(jī)器.

12.語言教程

詳細(xì)的puppet語言教程,參考程uppet教程]

13.典型的p叩pet使用方法

puppet既可以在單機(jī)上使用,也可以以c/s結(jié)構(gòu)使用.在大規(guī)模使用puppet

的情況下,通常使用c/s結(jié)構(gòu).在這種結(jié)構(gòu)中puppet客戶端只是指運(yùn)行puppet

的效勞器,puppet效勞器端是只運(yùn)行puppetmaster的效勞器.

puppet客戶端首先會連接到puppet效勞器端,并且通過facter工具把客

戶端的配置信息發(fā)送給效勞器端.效勞器端通過分析客戶端的主機(jī)名,通過

node定義,找到該主機(jī)的配置代碼,然后編譯配置代碼,把編譯好的配置代碼發(fā)

回客戶端.客戶端執(zhí)行代碼完成配置.并且把代碼執(zhí)行情況反應(yīng)給puppet效勞

器端.

14.總結(jié)

以上列舉了許多非常有用的用法,但所有的這些只是Puppet功能的一個(gè)大

概介紹。這里有一份全面的[文檔],里面附帶了許多例子:為了讓你能過更加深

入的了解Puppet。我們會一直維護(hù)這個(gè)文檔,所以如果你有什么具體的要求,

請通過「puppetlabs]與我們聯(lián)系。

二、安裝puppet

Puppet是一款開源的工具,使用自有的puppet描述語言,可管理配置文件、用戶、

cron任務(wù)、軟件包、系統(tǒng)效勞等,實(shí)現(xiàn)自動(dòng)化部署。

安裝環(huán)境:Redhat5.5

安裝方式:yum

1.更新yum源

rpm-ivh"://yum.uuDDetlabs/el/5/Droducts/i386/cuDDetlabs-releasD-5-Lnoarch.rDrrr

rpm-ivh"://yum.DUDDetJabs/el/5/uroducts/x8664/DUDDetlabs-release-5-Lnoarch.rDrrr

rpm-ivh"://yum.DUDDetJabs/el/6/Droducts/i386/DUDDetldbs-reledse-6-Lnodrch.rDm”

rpm-ivh"://yum.DUDuetJabs/el/5/products/x8664/DUDDetlabs-release-5-Lnoarch.rDm”

2.配置主機(jī)名

puppet的客戶端和效勞器是通過ssl鏈接的,在效勞器有一個(gè)自簽名的根證書,在安

裝軟件的時(shí)候自動(dòng)生成。

注意:

要在安裝軟件以前先設(shè)置主機(jī)名,因?yàn)樯勺C書的時(shí)候,要把主機(jī)名寫入證書。

我們把puppet效勞器的主機(jī)名和域名定為:puppetserver.itaom

vi/etc/hosts

1puppetserver.itaom

3.安裝p叩pet效勞端

i)安裝軟件包

yuminstallmysql-server

yum-yinstallpuppet-serverpuppet

使用yum安裝會自動(dòng)解決依賴關(guān)系,安裝ruby環(huán)境。

2)驗(yàn)證安裝包

[root@puppetserver?]#rpm-qalgrepmysql-server

mysql-server-5.0.95-5.el5_9

[root@puppetserver?]#rpm-qalgreppuppet-server

puppet-server-3.6.2-l.el5

[root@puppetserver~]#rpm-qalgreppuppet

puppet-3.6.2-l.el5

puppetlabs-release-5-1

puppet-server-3.6.2-1.el5

3)修改主機(jī)配置文件

進(jìn)入目錄/etc/puppet/manifests

編輯主機(jī)配置文件

Visite.pp

import"nodes/*.ppH

新建節(jié)點(diǎn)文件夾:mkdirnodes/

在nodes下面新建一個(gè)默認(rèn)節(jié)點(diǎn)文件default_node.pp,新建一個(gè)file資源供測試。

內(nèi)容如下

node/.*\.itaom$/

file{

"/tmp/test_puppet_Ol.log":

content=>

"hello

thisismyfirstmanifestfile

mode=>0644;

)

4)配置文件效勞

vi/etc/puppet/fileserver.conf

[MyFileService]文件效勞名

path/opt/MyFileService文件效勞的目錄設(shè)定

allow*權(quán)限設(shè)定

5)啟動(dòng)puppet-server效勞

[root@puppetservermanifests]#servicepuppetmasterstart

Startingpuppetmaster:[OK

[root@puppetservermanifests]#servicepuppetmasterstatus

puppet(pid14516)isrunning...

4.安裝P叩pet客戶端

i)安裝軟件包

yuminstallpuppet

2)配置主機(jī)名

vi/etc/hosts

1puppetserver.itaom

3)配置puppet客戶端

修改配置文件/etc/puppet/puppet.conf:

server=puppetserver.itaom

certname=nodeOl.itaom認(rèn)證名稱

runinterval=1800同步間隔秒數(shù)

4)啟動(dòng)客戶端后臺進(jìn)程

servicepuppetstart

這樣puppetclient會在后臺執(zhí)行,每到默認(rèn)1800秒會主動(dòng)與server同步一次。

5.測試連接

每個(gè)客戶端的證書要經(jīng)過根證書簽名才能和效勞器連接。

所以首先要在客戶端執(zhí)行下面的命令來請求效勞器簽名證書。

Puppetagent—test

登錄到效勞器端,執(zhí)行下面的命令查看是否有客戶端的證書請求:

puppetcertlist—all

如果看到了客戶端的證書請求,用下面的命令對所有證書請求簽名:

puppetcert-signpuppet_client(客戶端主機(jī)名)#這條命令加客戶端主機(jī)名就能簽字,

自此可以通信。

再次執(zhí)行

Puppetagent—test

就會從server端得到manifest文件,在客戶端指定位置生產(chǎn)一個(gè)文件。

查看/tmp/test_puppet_Ol.log即可驗(yàn)證。

6.節(jié)點(diǎn)管理

puppet如何區(qū)分不同的客戶端,并且給不同的效勞端分配manifest呢?

在/etc/puppet/manifests/nodes/目錄下,每臺效勞器建立一個(gè)節(jié)點(diǎn)文件:

[root@puppetservermanifests]#Is/etc/puppet/manifests/nodes/*.pp

/etc/puppet/manifests/nodes/default_node.pp

/etc/puppet/manifests/nodes/nodeOl.itaom.pp

/etc/puppet/manifests/nodes/kvm_server01.itaom.pp

/etc/puppet/manifests/nodes/puppetserver.itaom.pp

/etc/puppet/manifests/nodes/node000001.itaom.pp

/etc/puppet/manifests/nodes/redhat05.itaom.pp

/etc/puppet/manifests/nodes/node002.itaom.pp

/etc/puppet/manifests/nodes/redhat06.itaom.pp

/etc/puppet/manifests/nodes/node003.itaom.pp

puppet使用node資源做這件事情,node后面跟客戶端的主機(jī)名。

node'nodeOl.itaom'

三、Puppet參考文檔

英文

s://docs.puppetlabs/

四、MCollective介紹

1.簡介

MCollective是一個(gè)構(gòu)建效勞器編排(ServerOrchestration)和并行工作執(zhí)行系統(tǒng)的框架。

首先,MCollective是一種針對效勞器集群進(jìn)行可編程控制的系統(tǒng)管理解決方案。在這

一點(diǎn)上,它的功能類似:Func,Fabric和Capistrano,

其次,MCollective的設(shè)計(jì)打破基于中心存儲式系統(tǒng)和像SSH這樣的工具,不再僅

僅癡迷于SSH的For循環(huán)。它使用發(fā)布訂閱中間件(PublishSubscribeMiddleware)這

樣的現(xiàn)代化工具和通過目標(biāo)數(shù)據(jù)(metadata)而不是主機(jī)名(hostnames)來實(shí)時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)資源

這樣的現(xiàn)代化理念。提供了一個(gè)可擴(kuò)展的而且迅速的并行執(zhí)行環(huán)境。

MCollective工具為命令行界面,但它可與數(shù)千個(gè)應(yīng)用實(shí)例進(jìn)行通信,而且傳輸速度驚

人。無論部署的實(shí)例位于什么位置,通信都能以線速進(jìn)行傳輸,使用的是一個(gè)類似多路傳

送的推送信息系統(tǒng)。MCollective工具沒有可視化用戶界面,用戶只能通過檢索來獲取需

要應(yīng)用的實(shí)例。PuppetDashboard提供有這局部功能。

2.MCollective特點(diǎn)

?能夠與小到大型效勞器集群交互

?使用播送范式(broadcastparadigm)來進(jìn)行請求分發(fā),所有效勞器會同時(shí)收到請求,而只

有與請求所附帶的過濾器匹配的效勞器才會去執(zhí)行這些請求。沒有中心數(shù)據(jù)庫來進(jìn)行同步,

網(wǎng)絡(luò)是唯一的真理

?打破了以往用主機(jī)名作為身份驗(yàn)證手段的復(fù)雜命名規(guī)那么。使用每臺機(jī)器自身提供的豐

富的目標(biāo)數(shù)據(jù)來定位它們。目標(biāo)數(shù)據(jù)來自于:Puppet,Chef,Facter,Ohai或者自身提供的插

?使用命令行調(diào)用遠(yuǎn)程代理

?能夠?qū)懽远x的設(shè)備報(bào)告

?大量的代理來管理包,效勞和其他來自于社區(qū)的通用組件

?允許寫SimpleRPC風(fēng)格的代理、客戶端和使用Ruby實(shí)現(xiàn)WebUis

?外部可插件化(pluggable)實(shí)現(xiàn)本地需求

?中間件系統(tǒng)已有豐富的身份驗(yàn)證和授權(quán)模型,利用這些作為控制的第一道防線。

?重用中間件來做集群、路由和網(wǎng)絡(luò)隔離以實(shí)現(xiàn)平安和可擴(kuò)展安裝。

五、安裝MCollective

1.server端安裝

1)安裝軟件包

首先要確保puppetyum源在,沒有的話請安裝,如下[redhat6scentos6]:

rpm-ivh:〃yum.puppetlabs

/el/6/products/x8664/puppetlabs-release-6-6.noarch.rpm

yuminstallmcollective-*-y

yuminstallactivemqactivemq-info-provider-y

2)酉己置activemq

vi/etc/activemq/activemq.xml

找至Uauthenticationuser■修改用戶名和密碼:默認(rèn)是:admin,secret

找到transportConnector修改其中的

name="stomp+nio"uri="stomp+nio://:61637&

gt;為name="stomp"uri="stomp://:6163'7>

3)配置mcollective

vi/etc/mcollective/server.cfg

plugin.stomp.host=localhost##mcollectiveserverIPO

plugin.stomp.user=mcollective##這個(gè)是activemq.xml里的用戶名

plugin.stomp.password=secret##這個(gè)是activemq.xml里定義的密碼

vi/etc/mcollective/client.cfg

plugin.stomp.host=localhost##mcollectiveserverIP

plugin.stomp.user=mcollective##這個(gè)是activemq.xml里的用戶名

plugin.stomp.password=secret##這個(gè)是activemq.xml里定義的密碼

4)啟動(dòng)

/etc/init.d/activemqstart

/etc/init.d/mcollectivestart

chkconfigmcollectiveon

chkconfigactivemqon

2.client安裝配置:

i)安裝軟件包

yuminstallmcollective-*-y

2)配置客戶端

vi/etc/mcollective/server.cfg

指向的

plugin.stomp.host=04##mcoolectiveIPO

plugin.stomp.user=mcollective##這個(gè)是activemq.xml里的用戶名

plugin.stomp.password=secret##這個(gè)是activemq.xml里定義的密碼

identity=nodeOl.itaom〔定義主機(jī)名帶域名〕

vi/etc/mcollective/client.cfg

##指向

plugin.stomp.host=04mcoolective0$]IPO

plugin.stomp.user=mcollective##這個(gè)是activemq.xml里的用戶名

plugin.stomp.password=secret##這個(gè)是activemq.xml里定義的密碼

3)啟動(dòng)客戶端

/etc/init.d/mcollectivestart

chkconfigmcollectiveon

3.查看連接情況

在server端執(zhí)行:

mcofind或者是mcoping即可找到client

4.其他使用命令

重啟syslog效勞:mcoservicesyslogrestart

安裝軟件:mcopackage-vinstallscreen##-v顯示詳細(xì)信息

倉U立文*(牛:mcorpcfilemgrtouchfile=/tmp/test.txt

冊!J除文件:mcorpcfilemgr-vremovefile=/tmp/test.txt

查看文件狀態(tài):mcorpcfilemgrstatusfiIe=/etc/puppet/puppet.conf

幫助:mcohelp

六、Rsync安裝

1.Rsync介紹

rsync,remotesynchronize顧名思意就知道它是一款實(shí)現(xiàn)遠(yuǎn)程同步功能的軟件,它

在同步文件的同時(shí),可以保持原來文件的權(quán)限、時(shí)間、軟硬鏈接等附加信息。rsync是用

"rsync算法”提供了一個(gè)客戶機(jī)和遠(yuǎn)程文件效勞器的文件同步的快速方法,而且可以通過

ssh方式來傳輸文件,這樣其保密性也非常好,另外它還是免費(fèi)的軟件。

rsync包括如下的一些特性:

?能更新整個(gè)目錄和樹和文件系統(tǒng);

?有選擇性的保持符號鏈鏈、硬鏈接、文件屬于、權(quán)限、設(shè)備以及時(shí)間等;

?對于安裝來說,無任何特殊權(quán)限要求;

?對于多個(gè)文件來說,內(nèi)部流水線減少文件等待的延時(shí);

?能用rsh、ssh或直接端口做為傳輸入端口;

?支持匿名rsync同步文件,是理想的鏡像工具;

2.安裝rsync

Yuminstallrsync

Yuminstallxinetd

3.配置rsync

rsync的主要有以下三個(gè)配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文

件)、rsyncd.motd(rysnc效勞器信息)

效勞器配置文件(/etc/rsyncd.conf),該文件默認(rèn)不存在,請創(chuàng)立它。

具體步驟如下:

#touch/etc/rsyncd.conf

#創(chuàng)立rsyncd.conf,這是rsync效勞器的配置文件。

#touch

#創(chuàng)立rsyncd.secrets,這是用戶密碼文件。

/etc/rsyncd.secrets

chmod600/etc/rsyncd/rsyncd.secrets

將rsyncd.secrets這個(gè)密碼文件的文件屬性設(shè)為root

擁有,且權(quán)限要設(shè)為600,否那么無法備份成功!

#touch/etc/rsyncd.motd

1)設(shè)定/etc/rsyncd.conf

rsyncd.conf是rsync效勞器主要配置文件。我們先來個(gè)簡單的例如,后面在詳細(xì)說明各

項(xiàng)作用。

比方我們要備份效勞器上的/home和/opt,在/home中我想把easylife和samba目錄

排除在外;

#DistributedunderthetermsoftheGNUGeneralPublicLicensev2

#Minimalconfigurationfileforrsyncdaemon

#Seersync(l)andrsyncd.conf(5)manpagesforhelp

#Thislineisrequiredbythe/etc/init.d/rsyncdscript

pidfile=/var/run/rsyncd.pid

port=873

address=71

#uid=nobody

#gid=nobody

uid=root

gid=root

usechroot=yes

readonly=yes

#limitaccesstoprivateLANs

hostsallow=//

hostsdeny=*

maxconnections=5

motdfile=/etc/rsyncd.motd

#Thiswillgiveyouaseparatelogfile

#logfile=/var/log/rsync.log

#Thiswilllogeveryfiletransferred-upto85,000+peruser,persync

#transferlogging=yes

logformat=%t%a%m%f%b

syslogfacility=Iocal3

timeout=300

[rhel4home]

path=/home

list=yes

ignoreerrors

authusers=root

secretsfile=/etc/rsyncd.secrets

comment=ThisisRHEL4data

exclude=easylife/samba/

[rhel4opt]

path=/opt

list=no

ignoreerrors

comment=ThisisRHEL4opt

authusers=easylife

secretsfile=/etc/rsyncd/rsyncd.secrets

注:關(guān)于authusers是必須在效勞器上存在的真實(shí)的系統(tǒng)用戶,如果你想用多個(gè)用戶以,

號隔開,比方authusers=easylife,root

2)設(shè)定/etc/rsyncd.secrets密碼文件

密碼文件格式很簡單,rsyncd.secrets的內(nèi)容格式為:

用戶名:密碼

我們在例子中rsyncd.secrets的內(nèi)容如下類似的;在文檔中說,有些系統(tǒng)不支持長密碼,

自己嘗試著設(shè)置一下吧。

easylife:keer

root:mike

chownroot.rootrsyncd.secrets#修改屬主

chmod600rsyncd.secrets#修改權(quán)限

注:1、將rsyncd.secrets這個(gè)密碼文件的文件屬性設(shè)為root擁有,且權(quán)限要設(shè)為600,否

那么無法備份成功!出于平安目的,文件的屬性必需是只有屬主可讀。

2、這里的密碼值得注意,為了平安你不能把系統(tǒng)用戶的密碼寫在這里。比方你的系統(tǒng)用戶

easylife密碼是000000,為了平安你可以讓rsync中的easylife為keero這和samba

的用戶認(rèn)證的密碼原理是差不多的。

3)設(shè)定rsyncd.motd文件

它是定義rysnc效勞器信息的,也就是用戶登錄信息。比方讓用戶知道這個(gè)效勞器是誰提

供的等;類似ftp效勞器登錄時(shí),我們所看到的代p……。當(dāng)然這在全局定

義變量時(shí),并不是必須的,你可以用#號注掉,或刪除;我在這里寫了一個(gè)rsyncd.motd

的內(nèi)容為:

++++++++++++++++++++++++++++++++++++++++++++++

Welcometousethersyncservices!

20022021

++++++++++++++++++++++++++++++++++++++++++++++

rsyncd.conf配置文件詳解

1)全局定義

在rsync效勞器中,全局定義有幾個(gè)比擬關(guān)健的,根據(jù)我們前面所給的配置文件

rsyncd.conf文件;

pidfile=/var/run/rsyncd.pid注:告訴進(jìn)程寫到/var/run/rsyncd.pid文件中;

port=873注:指定運(yùn)行端口,默認(rèn)是873,您可以自己指定;

address=192,168.1.171注:指定效勞器IP地址

uid=nobody

gid=nobdoy

注:效勞器端傳輸文件時(shí),要發(fā)哪個(gè)用戶和用戶組來執(zhí)行,默認(rèn)是nobody。如果用nobody

用戶和用戶組,可能遇到權(quán)限問題,有些文件從效勞器上拉不下來。所以我就偷懶,為了方

便,用了root。不過您可以在定義要同步的目錄時(shí)定義的模塊中指定用戶來解決權(quán)限的問

題。

usechroot=yes

注:用chroot,在傳輸文件之前,效勞器守護(hù)程序在將chroot到文件系統(tǒng)中的目錄中,

這樣做的好處是可能保護(hù)系統(tǒng)被安裝漏洞侵襲的可能。缺點(diǎn)是需要超級用戶權(quán)限。另外對符

號鏈接文件,將會排除在外。也就是說,你在「sync效勞器上,如果有符號鏈接,你在備

份效勞器上運(yùn)行客戶端的同步數(shù)據(jù)時(shí),只會把符號鏈接名同步下來,并不會同步符號鏈接的

內(nèi)容;這個(gè)需要自己來嘗試

readonly=no

readonly

指定是否允許客戶上傳文件,假設(shè)為yes那么不允許上傳;假設(shè)為no并且效勞器目錄也具

有讀寫權(quán)限那么允許上傳.

writeonly

指定是否允許客戶下載文件.假設(shè)為yes那么不允許下載;假設(shè)為no并且效勞器目錄也具有讀

權(quán)限那么允許下載

#limitaccesstoprivateLANs

hostsallow=//

注:在您可以指定單個(gè)IP,也可以指定整個(gè)網(wǎng)段,能提高平安性。格式是ip與ip之間、

ip和網(wǎng)段之間、網(wǎng)段和網(wǎng)段之間要用空格隔開;

maxconnections=5

注:客戶端最多連接數(shù)

motdfile=/etc/rsyncd/rsyncd.motd

注:motdfile是定義效勞器信息的,要自己寫rsyncd.motd文件內(nèi)容。當(dāng)用戶登錄時(shí)

會看到這個(gè)信息。比方我寫的是:

++++++++++++++++++++++++++++++++++++++++++++++

Welcometousethersyncservices!

20022021

++++++++++++++++++++++++++++++++++++++++++++++

logfile=/var/log/rsync.log

注:rsync效勞器的日志;

transferlogging=yes

注:這是傳輸文件的日志

logformat=%t%a%m%f%b

syslogfacility=Iocal3

timeout=300

2)模塊定義

模塊定義什么呢?主要是定義效勞器哪個(gè)目錄要被同步。每個(gè)模塊都要以[name]形式。這

個(gè)名字就是在rsync客戶端看到的名字,其實(shí)有點(diǎn)象Samba效勞器提供的共享名。而效

勞器真正同步的數(shù)據(jù)是通過path指定的。我們可以根據(jù)自己的需要,來指定多個(gè)模塊。每

個(gè)模塊要指定認(rèn)證用戶,密碼文件、但排除并不是必須的

下面是前面配置文件模塊的例子:

[rhel4home]#模塊它為我們提供了一個(gè)鏈接的名字,在本模塊中鏈接到了/home目錄;

要用[name]形式

path=/home#指定文件目錄所在位置,這是必須指定的

authusers=root#認(rèn)證用戶是root,是必須在效勞器上存在的用戶

list=yes#list意思是把rsync效勞器上提供同步數(shù)據(jù)的目錄在效勞器上模塊是否顯示

列出來。默認(rèn)是yes。如果你不想列出來,就n。;如果是n。是比擬平安的,至少別人

不知道你的效勞器上提供了哪些目錄。你自己知道就行了;

ignoreerrors#忽略10錯(cuò)誤

secretsfile=/etc/rsyncd.secrets#密碼存在哪個(gè)文件

comment=linuxsirhomedata#注釋可以自己定義

exclude=beinan/samba/

注:exclude是排除的意思,也就是說,要把/home目錄下的easylife和samba排除在

外;easylife/和samba/目錄之間有空格分開

[rhel4opt]

path=/opt

list=no

comment=optdir

authusers=beinan

secretsfile=/etc/rsyncd/rsyncd.secrets

ignoreerrors

5.啟動(dòng)rsync效勞器

啟動(dòng)rsync效勞器相當(dāng)簡單,有以下幾種方法

A、-daemon參數(shù)方式,是讓rsync以效勞器模式運(yùn)行

#/usr/bin/rsync--daemon—config=/etc/rsyncd/rsyncd.conf#—config用于

指定rsyncd.conf的位置,如果在/etc下可以不寫

B、xinetd方式

通過servicexinetdrestart來重啟rsync效勞

修改services參加如下內(nèi)容

#nano-w/etc/services

rsync873/tcp#rsync

rsync873/udp#rsync

這一步一般可以不做,通常都有這兩行(我的RHEL4和GENTOO默認(rèn)都有)。修改的目的

是讓系統(tǒng)知道873端口對應(yīng)的效勞名為rsynco如沒有的話就自行參加。

設(shè)定/etc/xinetd.d/rsync,簡單例子如下:

#default:off

#description:Thersyncserverisagoodadditiontoamftpserver,asit\

#allowscrcchecksummingetc.

servicersync

{

disable=no

socket_type=stream

wait=no

user=root

server=/usr/bin/rsync

server_args=—daemon

log_on_failure+=USERID

}

上述,主要是要翻開rsync固固daemon,一旦有rsyncclient要連接B寺,xinetd會把它

轉(zhuǎn)介區(qū)合rsyncd(port873)O然后servicexinetdrestart,使上述設(shè)定生效.

6.防火墻設(shè)置

Linux防火墻是用iptables,所以我們至少在效勞器端要讓你所定義的rsync效勞器端口

通過,客戶端上也應(yīng)該讓通過。

#iptables-AINPUT-ptcp-mstate—stateNEW-mtcp—dport873-jACCEPT

#iptables-L查看一下防火墻是不是翻開了873端口

如果你不太懂防火墻的配置,可以先serviceiptablesstop將防火墻關(guān)掉。當(dāng)然在生產(chǎn)環(huán)

境這是很危險(xiǎn)的,做實(shí)驗(yàn)才可以這么做喲!

7.通過rsync客戶端來同步數(shù)據(jù)

語法詳解

在配置完rsync效勞器后,就可以從客戶端發(fā)出rsync命令來實(shí)現(xiàn)各種同步的操作。rsync

有很多功能選項(xiàng),下面就對介紹一下常用的選項(xiàng):

rsync的命令格式可以為:

1.rsync[OPTION]...SRC[SRC]...[USER@]HOST:DEST

2.rsync[OPTION]...[USER@]HOST:SRCDEST

3.rsync[OPTION]...SRC[SRC]...DEST

4.rsync[OPTION]...[USER@]HOST::SRC[DEST]

5.rsync[OPTION]...SRC[SRC]...[USER@]HOST::DEST

6.rsync[OPTION]...rsync://[USER@]HOST[:PORT]/SRC[DEST]

rsync有六種不同的工作模式:

1.拷貝本地文件;當(dāng)SRC和DES路徑信息都不包含有單個(gè)冒號":"分隔符時(shí)就啟動(dòng)這種工

作模式。

2.使用一個(gè)遠(yuǎn)程shell程序〔如rsh、ssh]來實(shí)現(xiàn)將本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器。當(dāng)

DST路徑地址包含單個(gè)冒號":"分隔符時(shí)啟動(dòng)該模式。

3.使用一個(gè)遠(yuǎn)程shell程序〔如rsh、ssh]來實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器。當(dāng)

SRC地址路徑包含單個(gè)冒號":"分隔符時(shí)啟動(dòng)該模式。

4.從遠(yuǎn)程rsync效勞器中拷貝文件到本地機(jī)。當(dāng)SRC路徑信息包含"::"分隔符時(shí)啟動(dòng)該

模式。

5.從本地機(jī)器拷貝文件到遠(yuǎn)程rsync效勞器中。當(dāng)DST路徑信息包含"::"分隔符時(shí)啟動(dòng)

該模式。

6.列遠(yuǎn)程機(jī)的文件列表。這類似于rsync傳輸,不過只要在命令中省略掉本地機(jī)信息即可。

-a以archive模式操作、復(fù)制目錄、符號連接相當(dāng)于-HptgoD

rsync中的參數(shù)

-r是遞歸

-I是鏈接文件,意思是拷貝鏈接文件;中表示保持文件原有權(quán)限;-t保持文件原有時(shí)間;

-g保持文件原有用戶組;-。保持文件原有屬主;-D相當(dāng)于塊設(shè)備文件;

-z傳輸時(shí)壓縮;

-P傳輸進(jìn)度;

-V傳輸時(shí)的進(jìn)度等信息,和-P有點(diǎn)關(guān)系,自己試試??梢钥次臋n;

-essh的參數(shù)建立起加密的連接。

-u只進(jìn)行更新,防止本地新文件被重寫,注意兩者機(jī)器的時(shí)鐘的同時(shí)

-progress是指顯示出詳細(xì)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論