轉載自:-wkq5325-ChinaUnix博客
前言:
前段時間一直想試驗一下DevOps的一些配置管理工具,後來因爲某些原因,就重點研究了chef。以自己的機器搭建了一個典型的多節點實驗環境。
架構:
根據官方的chef的架構介紹,主要包括三大部分,
1. chef-server
2. chef workstation
3. chef-node
上面的這個圖很清晰的表達了各部分的聯繫,所以推測我們需要安裝的主要是server和workstation部分,而node應該是通過客戶端來讓chef自動化安裝的
實施:
下面我們介紹如何實施一個代表性的環境
環境的前提配置
安裝的OS環境: Ubuntu 12.04
虛擬化軟件: VirtualBox
使用的網絡類型: Host-Only NAT
假設用戶都自己配置好了, 主機對應的FQDN
過程比較簡單, 就是安裝包,然後運行配置命令。具體如下:chef_11.6.0-1.ubuntu.12.04_amd64.deb
安裝:
sudo dpkg -i chef-server_11.0.8-1.ubuntu.12.04_amd64.deb
配置:
sudo chef-server-ctl reconfigure
驗證安裝:
sudo chef-server-ctl test
其實這個似乎不能全部pass,感覺chef的集成測試集可能有些問題
過程稍微比server安裝複雜,但還算簡單明瞭, 主要是安裝client ,配置client到server訪問。具體如下:
2.1 安裝client:
sudo dpkg -i chef_11.6.0-1.ubuntu.12.04_amd64.deb
2.2 安裝配置chef-repo:
git clone git://github.com/opscode/chef-repo.git
因爲chef-repo是存放cookbooks的地方,knife命令行工具會從chef-repo上傳數據到chef-server,這樣chef-client就從server可以應用相應的cookbooks了,所以我們可以知道,chef-repo需要配置和server的訪問
主要包括,.pem files and knife.rb files
2.3 創建.chef目錄
在 chef-repo目錄下,創建.chef目錄,並且修改.gitignore文件,添加 .chef
2.4 配置:
knife configure --initial
注意:
輸入相關的信息,主要是server的url,client的key,client註冊server所需要的validator和validator private key(默認的是chef-validator和server端 /etc/chef/validation.pem 文件)
還有admin的private key,所以我們需要從server端copy兩個文件到workstation機器上,(才能在運行knife configure輸入恰當的private key 信息)
admin 和 validator的private key 文件,即: admin.pem validation.pem,
scp root@:/etc/chef/admin.pem ./
scp root@:/etc/chef/validation.pem ./
2.5 將knife.rb和pem文件移到 chef-repo的.chef目錄下
cp ** /.chef
2.6 驗證 client 是否工作
knife client list
knife user list
就可以輸出相關的server端的信息了
下面的是在workstation上運行的,比較簡單:
3.1 bootstrap
knife bootstrap -x -P --sudo
3.2 驗證 node
knife client list
正確的話,就會輸出你的node節點的名字FQDN
注意:因爲workstation 在bootstrap的時候是需要ssh到node的,而且node也是需要到server訪問的(依靠FQDN,就是你配置的server url),
那麼就意味着, node需要安裝ssh server; node是可以解析server的FQDN的,可以在/etc/hosts添加相應的信息
總結:
經過1,2,3步驟,我們就搭建一個典型的chef 環境,包括三個節點,server, workstation和node
後面我們會給出一篇文章來說明如何創建一個cookbook,並且讓node應用這個cookbook。
其他參考資料: