cfengine、 puppet、 func哪種會好些呢?
我看下網上介紹的這些資料吧
這些之後一一貼上相關的資料
cfengine 基本配置 文字太多跳轉下面的頁面查看 http://holy2010.blog.51cto.com/1086044/418063
本文轉自:http://www.yoyotown.com/?tag=cfengine
前言:
系統管理員經常陷入一系列的重複任務中:如升級軟體包、管理配置文件、系統服務、cron任務以及添加新的配置、修復錯誤等.這些任務通常是重複低 效的,解決這類任務的第一反應是讓他們自動化,於是出現了定製腳本.由於環境複雜,定製腳本和應用程序一再被重複開發,並且很難適合多種平台,靈活性和功 能也很難保證,於是像Puppet這樣的自動化配置管理工具便出現了.
在開源世界里,有很多配置工具可供選擇,這個領域一些關鍵的產品有:
Puppet(http://puppet.reductivelabs.com/):
Cfengine(http://www.cfengine.org):
LCFG(http://www.lcfg.org/):
Bcfg2
本文檔致力於描述使用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 *
轉自劉天斯
http://blog.liuts.com/post/186/
本文出自 「Holy」 博客,請務必保留此出處http://holy2010.blog.51cto.com/1086044/418040
[火星人 ] 多台linux伺服器的集中統一批量布署管理, 用什麼工具最好呢?已經有894次圍觀