閱讀858 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 Ubuntu 上安裝配置管理係統 Chef (大廚)

Chef是麵對IT專業人員的一款配置管理和自動化工具,它可以配置和管理你的基礎設施(設備),無論它在本地還是在雲上。它可以用於加速應用部署並協調多個係統管理員和開發人員的工作,這包括可支持大量的客戶群的成百上千的服務器和程序。chef最有用的是讓基礎設施變成代碼。一旦你掌握了Chef,你可以獲得自動化管理你的雲端基礎設施或者終端用戶的一流的網絡IT支持。

下麵是我們將要在本篇中要設置和配置Chef的主要組件。

安裝Chef的要求和版本

我們將在下麵的基礎環境下設置Chef配置管理係統。

管理和配置工具:Chef  
基礎操作係統 Ubuntu 14.04.1 LTS (x86_64)
Chef Server Version 12.1.0
Chef Manage Version 1.17.0
Chef Development Kit Version 0.6.2
內存和CPU 4 GB  , 2.0+2.0 GHz

Chef服務端的安裝和配置

Chef服務端是核心組件,它存儲配置以及其他和工作站交互的配置數據。讓我們在他們的官網https://www.chef.io下載最新的安裝文件。

我使用下麵的命令來下載和安裝它。

1) 下載Chef服務端


  1. 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服務端


  1. root@ubuntu-14-chef:/tmp# dpkg -i chef-server-core_12.1.0-1_amd64.deb

3) 重新配置Chef服務端

現在運行下麵的命令來啟動所有的chef服務端服務,這一步也許會花費一些時間,因為它需要由許多不同一起工作的服務組成一個可正常運作的係統。


  1. root@ubuntu-14-chef:/tmp# chef-server-ctl reconfigure

chef服務端啟動命令'chef-server-ctl reconfigure'需要運行兩次,這樣就會在安裝後看到這樣的輸出。


  1. Chef Client finished, 342/350 resources updated in 113.71139964 seconds
  2. opscode Reconfigured!

4) 重啟係統

安裝完成後重啟係統使係統能最好的工作,不然我們或許會在創建用戶的時候看到下麵的SSL連接錯誤。


  1. ERROR: Errno::ECONNRESET: Connection reset by peer - SSL_connect

5) 創建新的管理員

運行下麵的命令來創建一個新的管理員賬戶及其配置。創建過程中,用戶的RSA私鑰會自動生成,它需要保存到一個安全的地方。--file選項會保存RSA私鑰到指定的路徑下。


  1. root@ubuntu-14-chef:/tmp# chef-server-ctl user-create kashi kashi kashi kashif.fareedi@gmail.com kashi123 --filename /root/kashi.pem

Chef服務端的管理設置

Chef Manage是一個針對企業級Chef用戶的管理控製台,它提供了可視化的web用戶界麵,可以管理節點、數據包、規則、環境、Cookbook 和基於角色的訪問控製(RBAC)。

1) 下載Chef Manage

從官網複製鏈接並下載chef manage的安裝包。


  1. 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的家目錄下安裝它。


  1. root@ubuntu-14-chef:~# chef-server-ctl install opscode-manage --path /root

3) 重啟Chef Manage和服務端

安裝完成後我們需要運行下麵的命令來重啟chef manage和服務端。


  1. root@ubuntu-14-chef:~# opscode-manage-ctl reconfigure
  2. root@ubuntu-14-chef:~# chef-server-ctl reconfigure

Chef Manage網頁控製台

我們可以使用localhost或它的域名來訪問網頁控製台,並用已經創建的管理員登錄

chef amanage

chef amanage

1) Chef Manage創建新的組織

你或許被要求創建新的組織,或者也可以接受其他組織的邀請。如下所示,使用縮寫和全名來創建一個新的組織。

Create Org

Create Org

2) 用命令行創建新的組織

我們同樣也可以運行下麵的命令來創建新的組織。


  1. root@ubuntu-14-chef:~# chef-server-ctl org-create linux Linoxide Linux Org. --association_user kashi --filename linux.pem

設置工作站

我們已經完成安裝chef服務端,現在我們可以開始創建任何recipes(基礎配置元素)、cookbooks(基礎配置集)、attributes(節點屬性),以及做一些其他修改。

1) 在Chef服務端上創建新的用戶和組織

為了設置工作站,我們需要用命令行創建一個新的用戶和組織。


  1. root@ubuntu-14-chef:~# chef-server-ctl user-create bloger Bloger Kashif bloger.kashif@gmail.com bloger123 --filename bloger.pem
  2. root@ubuntu-14-chef:~# chef-server-ctl org-create blogs Linoxide Blogs Inc. --association_user bloger --filename blogs.pem

2) 下載工作站入門套件

在工作站的網頁控製台中下載並保存入門套件,它用於與服務端協同工作

Starter Kit

Starter Kit

3) 下載套件後,點擊"Proceed"

starter kit

starter kit

用於工作站的Chef開發套件設置

Chef開發套件是一款包含開發chef所需的所有工具的軟件包。它捆綁了由Chef開發的帶Chef客戶端的工具。

1) 下載 Chef  DK

我們可以從它的官網鏈接中下載開發包,並選擇操作係統來下載chef開發包。

Chef DK

Chef DK

複製鏈接並用wget下載


  1. root@ubuntu-15-WKS:~# wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.6.2-1_amd64.deb

2) Chef開發套件安裝

使用dpkg命令安裝開發套件


  1. root@ubuntu-15-WKS:~# dpkg -i chefdk_0.6.2-1_amd64.deb

3) Chef DK 驗證

使用下麵的命令驗證客戶端是否已經正確安裝。


  1. root@ubuntu-15-WKS:~# chef verify


  1. Running verification for component 'berkshelf'
  2. Running verification for component 'test-kitchen'
  3. Running verification for component 'chef-client'
  4. Running verification for component 'chef-dk'
  5. Running verification for component 'chefspec'
  6. Running verification for component 'rubocop'
  7. Running verification for component 'fauxhai'
  8. Running verification for component 'knife-spork'
  9. Running verification for component 'kitchen-vagrant'
  10. Running verification for component 'package installation'
  11. Running verification for component 'openssl'
  12. ..............
  13. ---------------------------------------------
  14. Verification of component 'rubocop' succeeded.
  15. Verification of component 'knife-spork' succeeded.
  16. Verification of component 'openssl' succeeded.
  17. Verification of component 'berkshelf' succeeded.
  18. Verification of component 'chef-dk' succeeded.
  19. Verification of component 'fauxhai' succeeded.
  20. Verification of component 'test-kitchen' succeeded.
  21. Verification of component 'kitchen-vagrant' succeeded.
  22. Verification of component 'chef-client' succeeded.
  23. Verification of component 'chefspec' succeeded.
  24. Verification of component 'package installation' succeeded.

4) 連接Chef服務端

我們將創建 ~/.chef目錄,並從chef服務端複製兩個用戶和組織的pem文件到該目錄下。


  1. root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem root@172.25.10.172:/.chef/


  1. root@172.25.10.172's password:
  2. bloger.pem 100% 1674 1.6KB/s 00:00
  3. blogs.pem 100% 1674 1.6KB/s 00:00
  4. kashi.pem 100% 1678 1.6KB/s 00:00
  5. linux.pem 100% 1678 1.6KB/s 00:00

5) 編輯配置來管理chef環境 **

現在使用下麵的內容創建"~/.chef/knife.rb"。


  1. root@ubuntu-15-WKS:/.chef# vim knife.rb
  2. current_dir = File.dirname(__FILE__)
  3. log_level :info
  4. log_location STDOUT
  5. node_name "kashi"
  6. client_key "#{current_dir}/kashi.pem"
  7. validation_client_name "kashi-linux"
  8. validation_key "#{current_dir}/linux.pem"
  9. chef_server_url "https://172.25.10.173/organizations/linux"
  10. cache_type 'BasicFile'
  11. cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
  12. cookbook_path ["#{current_dir}/../cookbooks"]

創建knife.rb中指定的“~/cookbooks”文件夾。


  1. root@ubuntu-15-WKS:/# mkdir cookbooks

6) 測試Knife配置

運行“knife user list”和“knife client list”來驗證knife是否工作。


  1. root@ubuntu-15-WKS:/.chef# knife user list

第一次運行的時候可能會看到下麵的錯誤,這是因為工作站上還沒有chef服務端的SSL證書。


  1. 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
  2. ERROR: Could not establish a secure connection to the server.
  3. Use `knife ssl check` to troubleshoot your SSL configuration.
  4. If your Chef Server uses a self-signed certificate, you can use
  5. `knife ssl fetch` to make knife trust the server's certificates.

要解決上麵的命令的錯誤,運行下麵的命令來獲取ssl證書,並重新運行knife user和client list,這時候應該就可以了。


  1. root@ubuntu-15-WKS:/.chef# knife ssl fetch
  2. WARNING: Certificates from 172.25.10.173 will be fetched and placed in your trusted_cert
  3. directory (/.chef/trusted_certs).

knife沒有辦法驗證這些是否是有效的證書。你應該在下載時驗證這些證書的真實性。

在/.chef/trusted_certs/ubuntu-14-chef_test_com.crt下麵添加ubuntu-14-chef.test.com的證書。

在上麵的命令取得ssl證書後,接著運行下麵的命令。


  1. root@ubuntu-15-WKS:/.chef#knife client list
  2. kashi-linux

配置與chef服務端交互的新節點

節點是執行所有基礎設施自動化的chef客戶端。因此,在配置完chef-server和knife工作站後,通過配置與chef-server交互的新節點,來將新的服務端添加到我們的chef環境下。

我們使用下麵的命令來添加與chef服務端協同工作的新節點。


  1. root@ubuntu-15-WKS:~# knife bootstrap 172.25.10.170 --ssh-user root --ssh-password kashi123 --node-name mydns


  1. Doing old-style registration with the validation key at /.chef/linux.pem...
  2. Delete your validation key in order to use your user credentials instead
  3. Connecting to 172.25.10.170
  4. 172.25.10.170 Installing Chef Client...
  5. 172.25.10.170 --2015-07-04 22:21:16-- https://www.opscode.com/chef/install.sh
  6. 172.25.10.170 Resolving www.opscode.com (www.opscode.com)... 184.106.28.91
  7. 172.25.10.170 Connecting to www.opscode.com (www.opscode.com)|184.106.28.91|:443... connected.
  8. 172.25.10.170 HTTP request sent, awaiting response... 200 OK
  9. 172.25.10.170 Length: 18736 (18K) [application/x-sh]
  10. 172.25.10.170 Saving to: STDOUT
  11. 172.25.10.170
  12. 100%[======================================>] 18,736 --.-K/s in 0s
  13. 172.25.10.170
  14. 172.25.10.170 2015-07-04 22:21:17 (200 MB/s) - written to stdout [18736/18736]
  15. 172.25.10.170
  16. 172.25.10.170 Downloading Chef 12 for ubuntu...
  17. 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
  18. 172.25.10.170 to file /tmp/install.sh.26024/metadata.txt
  19. 172.25.10.170 trying wget...

之後我們可以在knife節點列表下看到創建的新節點,它也會在新節點下創建新的客戶端。


  1. root@ubuntu-15-WKS:~# knife node list
  2. mydns

類似地我們隻要通過給上麵的knife命令提供ssh證書,就可以在chef設施上創建多個節點。

總結

本篇我們學習了chef管理工具,並通過安裝和配置設置基本了解了它的組件。我希望你在學習安裝和配置Chef服務端以及它的工作站和客戶端節點中獲得樂趣。

本文來自雲棲社區合作夥伴“Linux中國”,原文發布日期:2015-08-10

最後更新:2017-05-22 11:31:47

  上一篇:go  科學式家|楊強教授漫談《西部世界》、生成式對抗網絡及遷移學習
  下一篇:go  2017GAITC專訪 │ 深度學習分論壇主席季向陽