天天看點

多台linux伺服器的集中統一批量布署管理, 用什麼工具最好呢?

cfengine、 puppet、 func哪種會好些呢?

我看下網上介紹的這些資料吧

這些之後一一貼上相關的資料

 cfengine 基本配置

文字太多跳轉下面的頁面檢視

<a href="http://holy2010.blog.51cto.com/1086044/418063">http://holy2010.blog.51cto.com/1086044/418063</a>

配置管理工具Puppet簡介、安裝 (轉)

本文轉自:http://www.yoyotown.com/?tag=cfengine

前言:

系統管理者經常陷入一系列的重複任務中:如更新軟體包、管理配置檔案、系統服務、cron任務以及添加新的配置、修複錯誤等。這些任務通常是重複低 效的,解決這類任務的第一反應是讓他們自動化,于是出現了定制腳本。由于環境複雜,定制腳本和應用程式一再被重複開發,并且很難适合多種平台,靈活性和功 能也很難保證,于是像Puppet這樣的自動化配置管理工具便出現了。

在開源世界裡,有很多配置工具可供選擇,這個領域一些關鍵的産品有:

Puppet(http://puppet.reductivelabs.com/):

Ruby寫成的配置管理工具,使用C/S架構,使用declarative language配置用戶端。

Cfengine(http://www.cfengine.org):

最先釋出的開源配置工具之一,1993年釋出,同樣是C/S架構,通常應用于教育機構。

LCFG(http://www.lcfg.org/):

C/S架構的配置管理工具,使用XML定義配置。

Bcfg2

Python編寫的C/S架構的配置管理工具,使用規格書和客戶機響應配置目标主機。

SmartFrog(http://www.smartfrog.org/):

func(https://fedorahosted.org/func/)

本文檔緻力于描述使用Puppet管理你的主機、應用程式、背景程式和各種服務。

Puppet簡介:

1. Puppet的用途

Puppet是開源的基于Ruby的系統配置管理工具,依賴于C/S的部署架構。主要開發者是Luke Kanies,遵循GPLv2版權協定。從1997年開始Kanies參與UNIX的系統管理工作,Puppet的開發源于這些經驗。因為對已有的配置工 具不甚滿意,從2001年到2005年間,Kanies開始在Reductive實驗室從事工具的開發。很快,Reductive實驗室釋出了他們的旗艦 産品——Puppet。

2. Pupput的特性

許多系統配置管理工具工作的方式非常類似,如cfengine。是什麼讓Puppet與衆不同?

Puppet的文法允許你建立一個單獨腳本,用來在你所有的目标主機上建立一個使用者。所有的目标主機會依次使用适用于本地系統的文法解釋和執行這個 子產品。舉例:如果這個配置是在Red Hat伺服器上執行,建立使用者使用useradd指令;如果這個配置是在FreeBSD主機上執行,使用的是adduser指令。

Puppet另一個卓越的地方是它的靈活性。源于開源軟體的天性,你可以自由的獲得Puppet的源碼,如果你遇到問題并且有能力的話,你可以修改 或者加強Puppet的代碼去适用于你的環境。另外,社群開發者和捐獻者還在不斷增強Puppet的功能。一個大的開發者和使用者社群也緻力于提供 Puppet的文檔和技術支援。

Puppet也是易于擴充的。定制軟體包的支援功能和特殊的系統環境配置能夠快速簡單的添加進Puppet的安裝程式中。

3. Puppet的工作模式

Puppet是一個C/S架構的配置管理工具,在中央伺服器上安裝puppet-server軟體包(被稱作Puppet master)。在需要管理的目标主機上安裝puppet用戶端軟體(被稱作Puppet Client)。當用戶端連接配接上Puppet master後,定義在Puppet master上的配置檔案會被編譯,然後在用戶端上運作。每個用戶端預設每半個小時和伺服器進行一次通信,确認配置資訊的更新情況。如果有新的配置資訊或 者配置資訊已經改變,配置将會被重新編譯并釋出到各用戶端執行。也可以在伺服器上主動觸發一個配置資訊的更新,強制各用戶端進行配置。如果用戶端的配置信 息被改變了,它可以從伺服器獲得原始配置進行校正。

4. Puppet的未來

最後,Puppet是一個年輕的工具,仍然處于開發和發展中。Puppet社群快速壯大,并且許多新的想法不斷融入,促使開發、更新和子產品每天都在 呈現。

安裝配置:

1. Puppet在RedHat/CentOS系 統上安裝

Puppet是基于Ruby寫成的,是以安裝前要準備好Ruby環境。在中心的Server上安裝puppet-server包,并運作 puppetmasterd程序;在被管理機上安裝puppet包,并運作puppetd程序。另外,在每台主機上配置好自己的hostname,之後每 台機器要以hostname區分。

1). 安裝ruby環境:

yum install ruby ruby-rdoc

2). 安裝puppet

Server端安裝:

rpm -Uvh epel-release-5-4.noarch.rpm

yum install puppet-server

chkconfig --level 2345 puppetmaster on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30   puppet.sina.com.cn puppet

172.16.228.29   web1.sina.com.cn web1

用戶端安裝:

yum install puppet

chkconfig --level 2345 puppet on

3). 啟動puppet

Server端首次運作前,編輯/etc/puppet/manifests/site.pp檔案,内容可以用最基本的:

# Create “/tmp/testfile” if it doesn’t exist.

class test_class {

file { “/tmp/testfile”:

ensure =&gt; present,

mode =&gt; 644,

owner =&gt; root,

group =&gt; root

}

# tell puppet on which client to run the class

node web1.sina.com.cn {

include test_class

啟動Server端:

service puppetmaster start

啟動用戶端:

/etc/init.d/puppet once -v

這時客戶機會去連server,但是由于連接配接是在ssl上的,而Server還沒有sign過用戶端的cert,客戶機被斷開。

到Server端執行:puppetca --list,會顯示等待簽名的用戶端的主機名,執行:puppetca -sign &lt;用戶端主機名&gt; 即可為其簽名。

在Server端為web1.sian.com.cn授權:

puppetca --list

web1.sian.com.cn

puppetca --sign web1.sian.com.cn

這時再到客戶機上啟動puppetd,即可看到客戶在正常地連接配接server,并且應用Server上為用戶端定制的配置政策。

4). 測試:

也可以将日志直接列印到終端上進行測試:

Server端:puppetmasterd -d --no-daemonize -v --trace

用戶端:puppetd --test --trace --debug

2. puppet配置檔案

主配置檔案(puppet.conf):

1). 配置檔案命名空間:

main 通用配置選項

puppetd 用戶端配置選項

puppetmasterd 服務端配置選項

2). main命名空間選項:

confdir 配置檔案目錄,預設在/etc/puppet

vardir 動态資料目錄,預設在/var/lib/puppet

logdir 日志目錄,預設在/var/log/log

rundir puppet PID目錄,預設在/var/run/puppet

statedir state目錄,預設在$vardir/state

statefile state檔案,預設在$statedir/state.yaml

ssldir SSL證書目錄,預設在$vardir/ssl

trace 發生錯誤時顯示跟蹤資訊,預設false

filetimeout 檢測配置檔案狀态改變的時間周期,機關秒,預設15秒

syslogfacility 指定syslog功能為user級,預設為daemon級

3). puppetmasterd命名空間選項:

user 背景程序執行的使用者

group 背景程序執行的組

mainfestdir mainfests檔案存儲目錄,預設為$confdir/mainfests

mainfest mainfest站點檔案的名字,預設為site.pp

bindaddress 背景程序綁定的網卡位址接口

masterport 背景程序執行的端口,預設為8140

4). puppet命名空間選項:

server puppet puppet伺服器名,預設為puppet

runinterval seconds puppet應用配置的時間間隔,預設1800秒(0.5小時)

puppetdlockfie file puppet lock檔案位置,預設$statedir/puppetdlock

puppetport port 背景程序執行的端口,預設8139

檔案服務配置檔案(fileserver.conf):

[files]

path /var/lib/puppet/files

allow 121.14.1.*

allow 60.28.228.0/24

allow *.house.sina.com.cn

deny *.sina.com.cn

path定義檔案存放路徑,通過allow/deny來控制通路權限。

3. puppet指令集

1). puppet 用于執行使用者所寫獨立的mainfests檔案

# puppet -l /tmp/manifest.log manifest.pp

2). puppetd 運作在被管理主機上的用戶端程式

# puppetd –server puppet.leju.com

3). puppetmasterd 運作在管理機上的伺服器程式

# puppetmasterd

4). puppetca puppet認證程式

# puppetca -l

pclient.leju.com

# puppetca -s pclient.leju.com

5). puppetrun 用于連接配接用戶端,強制運作本地配置檔案

# puppetrun -p 10 –host host1 –host host2 -t remotefile -t webserver

6). filebucket 用戶端用于發送檔案到puppet file bucket的工具

# filebucket -b /tmp/filebucket /my/file

7). ralsh 轉換配置資訊到puppet配置代碼

# ralsh user luke

user { ‘luke’:

home =&gt; ‘/home/luke’,

uid =&gt; ‘100′,

ensure =&gt; ‘present’,

comment =&gt; ‘Luke Kanies,,,’,

gid =&gt; ‘1000′,

shell =&gt; ‘/bin/bash’,

groups =&gt; ['sysadmin','audio','video','puppet']

8). puppetdoc 列印puppet參考文檔

# puppetdoc -r type &gt; /tmp/type_reference.rst

# puppetdoc –outputdir /tmp/rdoc –mode rdoc /path/to/manifests

# puppetdoc /etc/puppet/manifests/site.pp

<b>例子</b>

<b>1、同步目錄:</b>

<b>2、同步檔案:</b>

 需要配置/etc/puppet/fileserver.conf

[package]

  path /etc/puppet/client_conf/package        存放同步檔案的路徑

  allow *                 #指所有的IP都可通路

[code]

 path /etc/puppet/client_conf/code

  allow *

轉自劉天斯

<a href="http://blog.liuts.com/post/186/">http://blog.liuts.com/post/186/</a>

Func簡介

      Func是由紅帽子公司以Fedora平台統一網絡控制器 Func(Fedora Unified Network Controller https://fedorahosted.org/func),目的是為了解決這一系列統一管理監控問題而設計開發的系統管理基礎架構。 它是一個能有效的簡化我們多伺服器系統管理工作的工具,它很容易學習、很容易使用、也很容易被擴充,它功能強大而我們隻需要非常非常少的配置和維護。

    Func分為master及slave兩部分,master為主要端,slave為被控端。以下為兩部分的安裝配置說明

========================Func 2.5版本安裝文檔[Master]=========================

環境要求

Linux2.6核心

python2.5或以上(建議源碼安裝,系統自帶的python2.3、2.4對func支援不好)

下載下傳軟體包

wget http://people.fedoraproject.org/~alikins/files/certmaster/certmaster-0.25.tar.gz

wget http://people.fedoraproject.org/~alikins/files/func/func-0.25.tar.gz

wget http://ovh.dl.sourceforge.net/sourceforge/pyopenssl/pyOpenSSL-0.9.tar.gz

安裝

tar -zxvf pyOpenSSL-0.9.tar.gz

cd pyOpenSSL-0.9

/usr/local/bin/python setup.py install

tar -zxvf certmaster-0.25.tar.gz

cd certmaster-0.25

tar -zxvf func-0.25.tar.gz

cd func-0.25

/usr/local/bin/python setup.py install安裝

ln -s /usr/local/bin/certmaster /usr/bin/certmaster

ln -s /usr/local/bin/certmaster-request /usr/bin/certmaster-request

ln -s /usr/local/bin/certmaster-ca /usr/bin/certmaster-ca

ln -s /usr/local/bin/certmaster-sync /usr/bin/certmaster-sync

ln -s /usr/local/bin/funcd /usr/bin/funcd

ln -s /usr/local/bin/func /usr/bin/func

ln -s /usr/local/bin/func-create-module /usr/bin/func-create-module

ln -s /usr/local/bin/func-inventory /usr/bin/func-inventory

ln -s /usr/local/bin/func-transmit /usr/bin/func-transmit

ln -s /usr/local/bin/func-build-map /usr/bin/func-build-map

配置

vi /etc/certmaster/certmaster.conf

[main]

autosign = no

listen_addr =

#證書交換通訊端口

listen_port = 1998

cadir = /etc/pki/certmaster/ca

cert_dir = /etc/pki/certmaster

certroot = /var/lib/certmaster/certmaster/certs

csrroot = /var/lib/certmaster/certmaster/csrs

cert_extension = cert

sync_certs = False

vi /etc/func/minion.conf

log_level = DEBUG

acl_dir = /etc/func/minion-acl.d

#(Func通訊端口

listen_port = 1999

minion_name =

啟動服務

service certmaster start

=============================2.5版本安裝文檔[slave]=========================

#與master端口保持一緻

vi /etc/certmaster/minion.conf

certmaster = func.master.server.com

certmaster_port = 1998

#slave主機名

minion_name =NN2007-08-048

/sbin/chkconfig --level 345 certmaster on

/sbin/service certmaster start

/sbin/chkconfig --level 345 funcd on

/sbin/service funcd start

*安裝完畢後一定要重新開機伺服器作業系統,不然伺服器端有時看不到該主機的證書請求。

=============================Master端常用操作==============================

func "*" call --forks="5" command run "date" 啟用5個程序來執行date指令。

certmaster-ca --list 可以檢視未簽名的計算機名。

certmaster-ca --sign NN2004-02-008 對slave伺服器進行簽名(證書交換)。

certmaster-ca --sign `certmaster-ca --list ` 如證書請求的伺服器比較多,可以這樣一下子搞定。

certmaster-ca -c NN2004-02-008 删除該主機證書

=============================防火牆配置==============================

Slave主機需對master開放1998(certmaster)、1999(func)端口

master需對所有Slave主機開放1998(certmaster)端口

本文轉自 holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/418040