如何在Ubuntu上安裝配置管理系統(tǒng)Chef
Chef是面對(duì)IT專(zhuān)業(yè)人員的一款配置管理和自動(dòng)化工具,它可以配置和管理你的基礎(chǔ)設(shè)施(設(shè)備),無(wú)論它在本地還是在云上。它可以用于加速應(yīng)用部署并協(xié)調(diào)多個(gè)系統(tǒng)管理員和開(kāi)發(fā)人員的工作,這包括可支持大量的客戶群的成百上千的服務(wù)器和程序。chef最有用的是讓基礎(chǔ)設(shè)施變成代碼。一旦你掌握了Chef,你可以獲得自動(dòng)化管理你的云端基礎(chǔ)設(shè)施或者終端用戶的一流的網(wǎng)絡(luò)IT支持。
下面是我們將要在本篇中要設(shè)置和配置Chef的主要組件。
安裝Chef的要求和版本
我們將在下面的基礎(chǔ)環(huán)境下設(shè)置Chef配置管理系統(tǒng)。
Chef服務(wù)端的安裝和配置
Chef服務(wù)端是核心組件,它存儲(chǔ)配置以及其他和工作站交互的配置數(shù)據(jù)。讓我們?cè)谒麄兊墓倬W(wǎng)https://www.chef.io下載最新的安裝文件。
我使用下面的命令來(lái)下載和安裝它。
(1) 下載Chef服務(wù)端
root@ubuntu-14-chef:/tmp# wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.1.0-1_amd64.deb
(2) 安裝Chef服務(wù)端
root@ubuntu-14-chef:/tmp# dpkg -i chef-server-core_12.1.0-1_amd64.deb
(3) 重新配置Chef服務(wù)端
現(xiàn)在運(yùn)行下面的命令來(lái)啟動(dòng)所有的chef服務(wù)端服務(wù),這一步也許會(huì)花費(fèi)一些時(shí)間,因?yàn)樗枰稍S多不同一起工作的服務(wù)組成一個(gè)可正常運(yùn)作的系統(tǒng)。
root@ubuntu-14-chef:/tmp# chef-server-ctl reconfigure
chef服務(wù)端啟動(dòng)命令'chef-server-ctl reconfigure'需要運(yùn)行兩次,這樣就會(huì)在安裝后看到這樣的輸出。
Chef Client finished, 342/350 resources updated in 113.71139964 seconds
opscode Reconfigured!
(4) 重啟系統(tǒng)
安裝完成后重啟系統(tǒng)使系統(tǒng)能最好的工作,不然我們或許會(huì)在創(chuàng)建用戶的時(shí)候看到下面的SSL連接錯(cuò)誤。
ERROR: Errno::ECONNRESET: Connection reset by peer - SSL_connect
(5) 創(chuàng)建新的管理員
運(yùn)行下面的命令來(lái)創(chuàng)建一個(gè)新的管理員賬戶及其配置。創(chuàng)建過(guò)程中,用戶的RSA私鑰會(huì)自動(dòng)生成,它需要保存到一個(gè)安全的地方。--file選項(xiàng)會(huì)保存RSA私鑰到指定的路徑下。
root@ubuntu-14-chef:/tmp# chef-server-ctl user-create kashi kashi kashi kashif.fareedi@gmail.com kashi123 --filename /root/kashi.pem
Chef服務(wù)端的管理設(shè)置
Chef Manage是一個(gè)針對(duì)企業(yè)級(jí)Chef用戶的管理控制臺(tái),它提供了可視化的web用戶界面,可以管理節(jié)點(diǎn)、數(shù)據(jù)包、規(guī)則、環(huán)境、Cookbook 和基于角色的訪問(wèn)控制(RBAC)。
(1) 下載Chef Manage
從官網(wǎng)復(fù)制鏈接并下載chef manage的安裝包。
root@ubuntu-14-chef:~# wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/opscode-manage_1.17.0-1_amd64.deb
(2) 安裝Chef Manage
使用下面的命令在root的家目錄下安裝它。
root@ubuntu-14-chef:~# chef-server-ctl install opscode-manage --path /root
(3) 重啟Chef Manage和服務(wù)端
安裝完成后我們需要運(yùn)行下面的命令來(lái)重啟chef manage和服務(wù)端。
root@ubuntu-14-chef:~# opscode-manage-ctl reconfigure
root@ubuntu-14-chef:~# chef-server-ctl reconfigure
#p#
Chef Manage網(wǎng)頁(yè)控制臺(tái)
我們可以使用localhost或它的域名來(lái)訪問(wèn)網(wǎng)頁(yè)控制臺(tái),并用已經(jīng)創(chuàng)建的管理員登錄。
chef amanage
(1) Chef Manage創(chuàng)建新的組織
你或許被要求創(chuàng)建新的組織,或者也可以接受其他組織的邀請(qǐng)。如下所示,使用縮寫(xiě)和全名來(lái)創(chuàng)建一個(gè)新的組織。
Create Org
(2) 用命令行創(chuàng)建新的組織
我們同樣也可以運(yùn)行下面的命令來(lái)創(chuàng)建新的組織。
root@ubuntu-14-chef:~# chef-server-ctl org-create linux Linoxide Linux Org. --association_user kashi --filename linux.pem
設(shè)置工作站
我們已經(jīng)完成安裝chef服務(wù)端,現(xiàn)在我們可以開(kāi)始創(chuàng)建任何recipes(基礎(chǔ)配置元素)、cookbooks(基礎(chǔ)配置集)、attributes(節(jié)點(diǎn)屬性),以及做一些其他修改。
(1) 在Chef服務(wù)端上創(chuàng)建新的用戶和組織
為了設(shè)置工作站,我們需要用命令行創(chuàng)建一個(gè)新的用戶和組織。
root@ubuntu-14-chef:~# chef-server-ctl user-create bloger Bloger Kashif bloger.kashif@gmail.com bloger123 --filename bloger.pem
root@ubuntu-14-chef:~# chef-server-ctl org-create blogs Linoxide Blogs Inc. --association_user bloger --filename blogs.pem
(2) 下載工作站入門(mén)套件
在工作站的網(wǎng)頁(yè)控制臺(tái)中下載并保存入門(mén)套件,它用于與服務(wù)端協(xié)同工作。
Starter Kit
(3) 下載套件后,點(diǎn)擊"Proceed"
starter kit
用于工作站的Chef開(kāi)發(fā)套件設(shè)置
Chef開(kāi)發(fā)套件是一款包含開(kāi)發(fā)chef所需的所有工具的軟件包。它捆綁了由Chef開(kāi)發(fā)的帶Chef客戶端的工具。
(1) 下載 Chef DK
我們可以從它的官網(wǎng)鏈接中下載開(kāi)發(fā)包,并選擇操作系統(tǒng)來(lái)下載chef開(kāi)發(fā)包。
Chef DK
復(fù)制鏈接并用wget下載
root@ubuntu-15-WKS:~# wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.6.2-1_amd64.deb
#p#
(2) Chef開(kāi)發(fā)套件安裝
使用dpkg命令安裝開(kāi)發(fā)套件
root@ubuntu-15-WKS:~# dpkg -i chefdk_0.6.2-1_amd64.deb
(3) Chef DK 驗(yàn)證
使用下面的命令驗(yàn)證客戶端是否已經(jīng)正確安裝。
root@ubuntu-15-WKS:~# chef verify
Running verification for component 'berkshelf'
Running verification for component 'test-kitchen'
Running verification for component 'chef-client'
Running verification for component 'chef-dk'
Running verification for component 'chefspec'
Running verification for component 'rubocop'
Running verification for component 'fauxhai'
Running verification for component 'knife-spork'
Running verification for component 'kitchen-vagrant'
Running verification for component 'package installation'
Running verification for component 'openssl'
..............
---------------------------------------------
Verification of component 'rubocop' succeeded.
Verification of component 'knife-spork' succeeded.
Verification of component 'openssl' succeeded.
Verification of component 'berkshelf' succeeded.
Verification of component 'chef-dk' succeeded.
Verification of component 'fauxhai' succeeded.
Verification of component 'test-kitchen' succeeded.
Verification of component 'kitchen-vagrant' succeeded.
Verification of component 'chef-client' succeeded.
Verification of component 'chefspec' succeeded.
Verification of component 'package installation' succeeded.
(4) 連接Chef服務(wù)端
我們將創(chuàng)建 ~/.chef目錄,并從chef服務(wù)端復(fù)制兩個(gè)用戶和組織的pem文件到該目錄下。
root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem root@172.25.10.172:/.chef/
root@172.25.10.172's password:
bloger.pem 100% 1674 1.6KB/s 00:00
blogs.pem 100% 1674 1.6KB/s 00:00
kashi.pem 100% 1678 1.6KB/s 00:00
linux.pem 100% 1678 1.6KB/s 00:00
(5) 編輯配置來(lái)管理chef環(huán)境 **
現(xiàn)在使用下面的內(nèi)容創(chuàng)建"~/.chef/knife.rb"。
root@ubuntu-15-WKS:/.chef# vim knife.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "kashi"
client_key "#{current_dir}/kashi.pem"
validation_client_name "kashi-linux"
validation_key "#{current_dir}/linux.pem"
chef_server_url "https://172.25.10.173/organizations/linux"
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
創(chuàng)建knife.rb中指定的“~/cookbooks”文件夾。
root@ubuntu-15-WKS:/# mkdir cookbooks
(6) 測(cè)試Knife配置
運(yùn)行“knife user list”和“knife client list”來(lái)驗(yàn)證knife是否工作。
root@ubuntu-15-WKS:/.chef# knife user list
第一次運(yùn)行的時(shí)候可能會(huì)看到下面的錯(cuò)誤,這是因?yàn)楣ぷ髡旧线€沒(méi)有chef服務(wù)端的SSL證書(shū)。
ERROR: SSL Validation failure connecting to host: 172.25.10.173 - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.
要解決上面的命令的錯(cuò)誤,運(yùn)行下面的命令來(lái)獲取ssl證書(shū),并重新運(yùn)行knife user和client list,這時(shí)候應(yīng)該就可以了。
root@ubuntu-15-WKS:/.chef# knife ssl fetch
WARNING: Certificates from 172.25.10.173 will be fetched and placed in your trusted_cert
directory (/.chef/trusted_certs).
knife沒(méi)有辦法驗(yàn)證這些是否是有效的證書(shū)。你應(yīng)該在下載時(shí)驗(yàn)證這些證書(shū)的真實(shí)性。
在/.chef/trusted_certs/ubuntu-14-chef_test_com.crt下面添加ubuntu-14-chef.test.com的證書(shū)。
在上面的命令取得ssl證書(shū)后,接著運(yùn)行下面的命令。
root@ubuntu-15-WKS:/.chef#knife client list
kashi-linux
配置與chef服務(wù)端交互的新節(jié)點(diǎn)
節(jié)點(diǎn)是執(zhí)行所有基礎(chǔ)設(shè)施自動(dòng)化的chef客戶端。因此,在配置完chef-server和knife工作站后,通過(guò)配置與chef-server交互的新節(jié)點(diǎn),來(lái)將新的服務(wù)端添加到我們的chef環(huán)境下。
我們使用下面的命令來(lái)添加與chef服務(wù)端協(xié)同工作的新節(jié)點(diǎn)。
root@ubuntu-15-WKS:~# knife bootstrap 172.25.10.170 --ssh-user root --ssh-password kashi123 --node-name mydns
Doing old-style registration with the validation key at /.chef/linux.pem...
Delete your validation key in order to use your user credentials instead
Connecting to 172.25.10.170
172.25.10.170 Installing Chef Client...
172.25.10.170 --2015-07-04 22:21:16-- https://www.opscode.com/chef/install.sh
172.25.10.170 Resolving www.opscode.com (www.opscode.com)... 184.106.28.91
172.25.10.170 Connecting to www.opscode.com (www.opscode.com)|184.106.28.91|:443... connected.
172.25.10.170 HTTP request sent, awaiting response... 200 OK
172.25.10.170 Length: 18736 (18K) [application/x-sh]
172.25.10.170 Saving to: ‘STDOUT’
172.25.10.170
100%[======================================>] 18,736 --.-K/s in 0s
172.25.10.170
172.25.10.170 2015-07-04 22:21:17 (200 MB/s) - written to stdout [18736/18736]
172.25.10.170
172.25.10.170 Downloading Chef 12 for ubuntu...
172.25.10.170 downloading https://www.opscode.com/chef/metadata?v=12&prerelease=false&nightlies=false&p=ubuntu&pv=14.04&m=x86_64
172.25.10.170 to file /tmp/install.sh.26024/metadata.txt
172.25.10.170 trying wget...
之后我們可以在knife節(jié)點(diǎn)列表下看到創(chuàng)建的新節(jié)點(diǎn),它也會(huì)在新節(jié)點(diǎn)下創(chuàng)建新的客戶端。
root@ubuntu-15-WKS:~# knife node list
mydns
類(lèi)似地我們只要通過(guò)給上面的knife命令提供ssh證書(shū),就可以在chef設(shè)施上創(chuàng)建多個(gè)節(jié)點(diǎn)。
總結(jié)
本篇我們學(xué)習(xí)了chef管理工具,并通過(guò)安裝和配置設(shè)置基本了解了它的組件。我希望你在學(xué)習(xí)安裝和配置Chef服務(wù)端以及它的工作站和客戶端節(jié)點(diǎn)中獲得樂(lè)趣。