歡迎您光臨本站 註冊首頁

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

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

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

cfengine 基本配置 文字太多跳轉下面的頁面查看 http://holy2010.blog.51cto.com/1086044/418063
配置管理工具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端安裝:

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

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

客戶端安裝:

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

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

yum install puppet

chkconfig --level 2345 puppet on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30 puppet.sina.com.cn puppet

172.16.228.29 web1.sina.com.cn web1

3). 啟動puppet

Server端首次運行前,編輯/etc/puppet/manifests/site.pp文件,內容可以用最基本的:

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

class test_class {

file { “/tmp/testfile”:

ensure => present,

mode => 644,

owner => root,

group => 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 <客戶端主機名> 即可為其簽名.

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

puppetca --list

web1.sian.com.cn

puppetca --sign web1.sian.com.cn

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

啟動客戶端:

/etc/init.d/puppet once -v

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 => ‘/home/luke’,

uid => ‘100′,

ensure => ‘present’,

comment => ‘Luke Kanies,,,’,

gid => ‘1000′,

shell => ‘/bin/bash’,

groups => ['sysadmin','audio','video','puppet']

}

8). puppetdoc 列印puppet參考文檔

# puppetdoc -r type > /tmp/type_reference.rst

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

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

官網 問題解答http://projects.puppetlabs.com/issues/3126

例子


1、同步目錄:

   file {"/qeedoodb/setup/package":           source =>"puppet://$puppetserver/package",           recurse =>"true", #遞歸檢索文件,同步目錄時設為true           owner =>"root",           group =>"root",           mode =>"744",           purge =>"true", #保持和source完全一致.類似rsync的 --delete參數   }   

2、同步文件:

   file { "/qeedoodb/package/2.txt":           source => "puppet://$puppetserver/package/2.txt",           owner => "root",           group => "root",           mode => 0644,   }   

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

[package]
path /etc/puppet/client_conf/package 存放同步文件的路徑
allow * #指所有的IP都可訪問

[code]
path /etc/puppet/client_conf/code
allow *

部署Func/Certmaster平台

轉自劉天斯
http://blog.liuts.com/post/186/

引用地址:
注意: 該地址僅在今日23:59:59之前有效 Func簡介
Func是由紅帽子公司以Fedora平台統一網路控制器 Func(Fedora Unified Network Controller https://fedorahosted.org/func),目的是為了解決這一系列統一管理監控問題而設計開發的系統管理基礎框架. 它是一個能有效的簡化我們多伺服器系統管理工作的工具,它很容易學習、很容易使用、也很容易被擴展,它功能強大而我們只需要非常非常少的配置和維護.


Func分為master及slave兩部分,master為主控端,slave為被控端.以下為兩部分的安裝配置說明
FUNC模塊學習筆記
========================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
/usr/local/bin/python setup.py install

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
[main]
log_level = DEBUG
acl_dir = /etc/func/minion-acl.d

listen_addr =

#(Func通訊埠
listen_port = 1999
minion_name =


啟動服務
service certmaster start


=============================2.5版本安裝文檔[slave]=========================
下載軟體包

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
/usr/local/bin/python setup.py install

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/funcd /usr/bin/funcd

配置

vi /etc/certmaster/certmaster.conf
[main]
autosign = no
listen_addr =

#與master埠保持一致
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/certmaster/minion.conf
[main]
certmaster = func.master.server.com

#與master埠保持一致
certmaster_port = 1998
log_level = DEBUG
cert_dir = /etc/pki/certmaster

vi /etc/func/minion.conf
[main]
log_level = DEBUG
acl_dir = /etc/func/minion-acl.d

listen_addr =

#與master埠保持一致
listen_port = 1999

#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)埠

本文出自 「Holy」 博客,請務必保留此出處http://holy2010.blog.51cto.com/1086044/418040


[火星人 ] 多台linux伺服器的集中統一批量布署管理, 用什麼工具最好呢?已經有670次圍觀

http://coctec.com/docs/linux/show-post-49633.html