一:介紹
puppet用于集中管理多台伺服器的file、package、server、cron、user、group、exec(執行shell指令)、yumrepo等常用資源的C/S結構軟體
二:puppet工作流程
- puppet用戶端通過facter收集用戶端資訊(主機名、記憶體、IP位址、系統資訊……)并發送給服務端
- 伺服器端檢測到用戶端的主機名,然後到manifest裡面解析對應的node配置(文法檢測、生成僞代碼、發送僞代碼給用戶端),隻解析改節點的配置
- 用戶端接收到代碼後執行,然後用戶端把執行結果傳遞給伺服器端
- 伺服器再把用戶端的執行結果寫入日志
三:安裝配置
puppet server:192.168.1.10 master.puppet.com
puppet agent:192.168.1.11 agent.puppet.com
主機名和IP必須解析,可以手動修改hosts檔案或使用DNS解析
-
配置epel源:
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
-
puppet server上操作:
yum install puppet-server -y
生成配置檔案:
puppet master --genconfig > /etc/puppet/puppet.conf
touch /etc/puppet/manifests/site.pp
該檔案相當于一個索引檔案,記錄載入agent配置,也可定義全局變量
例:
cat /etc/puppet/manifests/site.pp
import 'nodes.pp'
import 'nodes/*.pp'
$puppetserver='master.puppet.com'
-
puppet agent上操作:
yum install puppet -y
vim /etc/puppet/puppet.conf
在main中添加
server = master.puppet.com(master主機名,必須可以ping通,綁hosts或dns解析)
在agent中添加
runinterval = 10(向master查詢間隔時間,機關秒)
四:測試
puppet server第一次啟動:
puppet master --verbose --no-daemonize
puppet agent第一次啟動:
puppet agent --server=master.puppet.com --no-daemonize --verbose --noop --onetime
會報錯沒有認證,在CA伺服器上運作(這裡CA和puppet server在一台上):
puppet cert --list 顯示沒有授權的用戶端
puppet cert --sign agent.puppet.com
再次運作啟動指令正常,則分别開啟服務
/etc/init.d/puppetmaster start
chkconfig puppetmaster on
/etc/init.d/puppet start
chkconfig puppet on