Cách thiết lập hệ thống quản lý cấu hình Chef 12 trên server Ubuntu 14.04
Khi yêu cầu cơ sở hạ tầng của bạn mở rộng, việc quản lý từng server bằng tay trở thành một nhiệm vụ ngày càng khó khăn. Khó khăn này được cộng thêm bởi yêu cầu về khả năng tái lập, điều này trở nên cần thiết nếu một nút bị lỗi hoặc nếu cần mở rộng quy mô theo chiều ngang.Các giải pháp quản lý cấu hình được thiết kế để giải quyết những vấn đề này bằng cách biến quản trị cơ sở hạ tầng của bạn thành cơ sở mã. Thay vì thực hiện các việc riêng lẻ trên một số máy, các công cụ này cho phép bạn commit các yêu cầu của bạn đến một vị trí trung tâm nơi mỗi thành phần có thể kết nối, kéo xuống cấu hình của chúng và áp dụng nó.
Trong hướng dẫn trước , ta đã nói về cấu trúc chung của các bộ phận Đầu bếp và cách chúng tương tác để đạt được mục tiêu của nhà quản trị. Ta đã nói về các thuật ngữ có liên quan và thảo luận về trách nhiệm của từng phần.
Trong hướng dẫn này, ta sẽ cài đặt phần mềm thực tế. Ta sẽ cài đặt một server Chef tập trung để lưu trữ và phục vụ các hướng dẫn cấu hình và thông tin cấu hình nút. Ta cũng sẽ cài đặt một máy trạm nơi administrator có thể làm việc với cơ sở mã và thay đổi các đặc tính của cơ sở hạ tầng. Ta sẽ theo dõi điều này bằng cách khởi động một nút mới để đặt nó dưới sự quản lý của hệ sinh thái Chef.
Yêu cầu và Mục tiêu
Ta sẽ cài đặt version 12 của Chef trong hướng dẫn này. Cấu hình có thể khác nhau đáng kể giữa các version , vì vậy hãy đảm bảo bạn đang hoạt động trong cùng một số version chính như hướng dẫn này để có kết quả tốt nhất.
Tài liệu Chef cho ta biết rằng server Chef của bạn phải có ít nhất 4 lõi và 4 GB RAM. Nó cũng phải có hệ điều hành 64-bit . Đối với hướng dẫn của ta , ta sẽ sử dụng server DigitalOcean 4 lõi / 8 GB với Ubuntu 14.04 64-bit.
Máy trạm và các node có rất ít yêu cầu. Ta cũng sẽ sử dụng Ubuntu 14.04 trên những bản này để có tính nhất quán.
Khi ta hoàn tất, ta sẽ có một server Chef tập trung để lưu trữ và phục vụ dữ liệu cấu hình của ta . Máy trạm của ta sẽ được sử dụng để áp dụng các thay đổi , tải chúng lên server , khởi động và quản lý các node mới. Nút đại diện cho một server duy nhất trong cơ sở hạ tầng của ta .
Cấu hình Server Chef
Ta sẽ bắt đầu bằng cách cài đặt server Chef. Lưu ý , Chef đề xuất ít nhất 4 lõi và 4 GB RAM cho server này, vì vậy hãy lên kế hoạch cho phù hợp.
Đảm bảo rằng Server có thể truy cập được bằng Tên server
Khi bạn đã đăng nhập vào server mà bạn định cài đặt server Chef lên, nhiệm vụ đầu tiên bạn cần thực hiện là đảm bảo tên server của server là domain hoặc địa chỉ IP hoàn toàn đủ điều kiện có thể phân giải (FQDN). Bạn có thể kiểm tra bằng lệnh :
hostname -f Kết quả phải là một địa chỉ mà server có thể được truy cập. Nếu không đúng như vậy, bạn có thể đặt nó thành domain hoặc địa chỉ IP nơi có thể truy cập server bằng cách chỉnh sửa file này:
sudo nano /etc/hosts Tệp sẽ trông giống như sau:
127.0.1.1 current_hostname current_hostname_alias 127.0.0.1 localhost  . . . Sửa đổi dòng trên cùng để phản ánh domain  đủ điều kiện hoặc địa chỉ IP, tiếp theo là khoảng trắng và bất kỳ alias  nào bạn muốn sử dụng cho  server   của bạn . Thêm một dòng bên dưới hai dòng được hiển thị có địa chỉ IP công cộng của  server  của bạn trong cột đầu tiên và thông tin mà bạn đã sửa đổi ở cuối dòng 127.0.1.1 đến cuối.  Nó trông giống như sau :
127.0.1.1 fqdn_or_IP_address host_alias 127.0.0.1 localhost IP_address fqdn_or_IP_address host_alias Vì vậy, nếu tôi không có domain , địa chỉ IP công cộng của tôi là 123.123.123.123 và nếu tôi cũng muốn  server   của bạn  có thể truy cập được bằng tên  server  “đầu bếp”, tôi có thể có một file  giống như sau:
127.0.1.1 123.123.123.123 chef 127.0.0.1 localhost 123.123.123.123 123.123.123.123 chef Mặt khác, nếu  server  này có domain  đủ điều kiện là chef.example.com và địa chỉ IP là 234.234.234.234 , file  của tôi có thể trông giống như sau:
127.0.1.1 chef.example.com chef 127.0.0.1 localhost 234.234.234.234 chef.example.com chef Lưu file khi bạn hoàn tất. Bạn có thể kiểm tra xem giá trị đã được đặt chính xác chưa bằng lệnh :
hostname -f Kết quả phải là một giá trị mà bạn có thể sử dụng để truy cập server Chef của bạn từ bất kỳ đâu trong cơ sở hạ tầng của bạn.
Download và cài đặt phần mềm Chef 12 Server
Tiếp theo, ta có thể tiếp tục và download phần mềm server Chef 12. Bạn có thể tìm thấy gói phải được cài đặt bằng cách truy cập trang Chef. Cụ thể, để cài đặt Ubuntu, bạn có thể theo liên kết này .
Trong tiêu đề “Ubuntu Linux 14.04”, nhấp chuột phải vào liên kết download và sao chép vị trí liên kết:
 Quay lại  server  của bạn, thay đổi thành folder  chính của bạn. Dán liên kết bạn đã sao chép và sử dụng lệnh wget để  download  gói. Liên kết bạn đã sao chép có thể khác với liên kết bên dưới nếu có một bản cập nhật version  nhỏ kể từ khi viết bài này:
cd ~ wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.0.5-1_amd64.deb Sau khi quá trình download hoàn tất, hãy cài đặt gói bằng lệnh :
sudo dpkg -i chef-server-core_*.deb Thao tác này sẽ cài đặt hệ thống Chef 12 cơ sở vào server . Nếu bạn đã chọn một server có phần cứng kém mạnh hơn số lượng được khuyến khích , bước này có thể không thành công.
 Sau khi cài đặt hoàn tất, bạn phải gọi lệnh reconfigure , lệnh này cấu hình các thành phần tạo nên  server  để hoạt động cùng nhau trong môi trường cụ thể của bạn:
sudo chef-server-ctl reconfigure Tạo admin-user và tổ chức
Tiếp theo, ta cần tạo một admin-user . Đây sẽ là tên user sẽ có quyền truy cập để áp dụng các thay đổi đối với các thành phần cơ sở hạ tầng trong tổ chức mà ta sẽ tạo.
  Ta  có thể thực hiện việc này bằng cách sử dụng lệnh con do user-create của lệnh chef-server-ctl . Lệnh yêu cầu một số trường được chuyển vào trong quá trình tạo. Cú pháp chung là:
chef-server-ctl user-create USERNAME FIRST_NAME LAST_NAME EMAIL PASSWORD  Ta  sẽ bao gồm thông tin này và cũng sẽ thêm -f , một cờ bổ sung, vào cuối để chỉ định tên file  để xuất khóa RSA riêng tư của  user  mới của  ta .  Ta   cần  điều này để xác thực bằng lệnh quản lý knife sau này.
Đối với ví dụ của ta , ta sẽ tạo một user với thông tin sau:
- Tên user : admin
- Tên : administrator
- Họ : admin
- Email : admin@example.com
- Mật khẩu : examplepass
- Tên file : admin.pem
Lệnh cần thiết để tạo user với thông tin này là (bạn nên thay đổi điều này để phản ánh thông tin của bạn, đặc biệt là password ):
sudo chef-server-ctl user-create admin admin admin admin@example.com examplepass -f admin.pem  Đến đây bạn  sẽ có một private key  được gọi là admin.pem trong folder  hiện tại  của bạn .
  Đến đây bạn  đã có  user , bạn có thể tạo một tổ chức bằng lệnh con org-create . Một tổ chức chỉ đơn giản là một  group  cơ sở hạ tầng và cấu hình trong Chef. Lệnh có cú pháp chung sau:
chef-server-ctl org-create SHORTNAME LONGNAME --association_user USERNAME Tên ngắn gọn là tên mà bạn sẽ dùng để chỉ tổ chức từ bên trong Chef. Tên dài là tên thực của tổ chức. --association_user chỉ định tên  user  có quyền truy cập để quản lý tổ chức.   ,  ta  sẽ thêm cờ -f để  ta  có thể chỉ định tên của file  để đặt private key . Khóa sẽ được tạo được sử dụng để xác thực khách hàng mới như một phần của tổ chức cho đến khi họ có thể nhận được khóa khách hàng duy nhất của riêng mình.
Ta sẽ tạo ra một tổ chức với những phẩm chất sau:
- Tên giao dịch : digitalocean
- Tên dài : DigitalOcean, Inc.
- User kết hợp : administrator
- Tên file : digitalocean-validator.pem
Để tạo một tổ chức với các phẩm chất trên, ta sẽ sử dụng lệnh sau:
sudo chef-server-ctl org-create digitalocean "DigitalOcean, Inc." --association_user admin -f digitalocean-validator.pem Sau đó, bạn sẽ có hai file  khóa .pem trong folder  chính  của bạn . Trong trường hợp của  ta , chúng sẽ được gọi là admin.pem và digitalocean-validator.pem .  Ta   cần  kết nối với  server  này và tải các khóa này xuống máy trạm của  ta  trong giây lát. Tuy nhiên, hiện tại, quá trình cài đặt  server  Chef của  ta  đã hoàn tất.
Cấu hình một máy trạm đầu bếp
Bây giờ server Chef của ta đã được cài đặt và chạy, hành động tiếp theo của ta là cấu hình một máy trạm. Việc điều phối và cấu hình cơ sở hạ tầng thực tế không diễn ra trên server Chef. Công việc này được thực hiện trên một máy trạm, sau đó tải dữ liệu lên server để tác động đến môi trường Chef.
Sao chép đại diện đầu bếp
 Cấu hình Chef cho cơ sở hạ tầng của bạn được duy trì trong cấu trúc file  phân cấp được gọi chung là Chef repo. Cấu trúc chung của điều này có thể được tìm thấy trong repository  lưu trữ GitHub do  group  Chef cung cấp.  Ta  sẽ sử dụng git để sao chép git này vào máy trạm  của bạn  để làm cơ sở cho repository  Chef của cơ sở hạ tầng của  ta .
 Đầu tiên,  ta  cần cài đặt git thông qua các công cụ đóng gói apt . Cập nhật index  đóng gói của bạn và cài đặt công cụ  bằng lệnh :
sudo apt-get update sudo apt-get install git Khi bạn đã cài đặt git , bạn có thể sao chép repository  Chef vào máy tính  của bạn . Đối với hướng dẫn này,  ta  chỉ cần sao chép nó vào folder  chính của  ta :
cd ~ git clone https://github.com/chef/chef-repo.git Thao tác này sẽ kéo cấu trúc cơ bản của Chef repo vào một folder  có tên là chef-repo trong folder  chính của bạn.
Đặt Chef Repo của bạn dưới quyền kiểm soát version
 Các cấu hình được tạo trong chính repo Chef được quản lý tốt nhất trong hệ thống kiểm soát version  giống như cách bạn quản lý mã. Vì  ta  đã sao chép repo ở trên, một repo git đã được khởi tạo.
Để cài đặt máy trạm của bạn cho các commit mới, bạn nên thực hiện một số điều.
 Đầu tiên, đặt tên và email mà git sẽ sử dụng để gắn thẻ bất kỳ  commit  nào bạn thực hiện. Đây là một yêu cầu để git chấp nhận các  commit .  Ta  đặt điều này  trên phạm vi global  để bất kỳ git repo nào  ta  tạo sẽ sử dụng các giá trị sau:
git config --global user.name "Your Name" git config --global user.email "username@domain.com" Tiếp theo,  ta  sẽ yêu cầu git bỏ qua bất kỳ thông tin nào có trong folder  ~/chef-repo/.chef .  Ta  sẽ tạo folder  này trong vài phút để lưu trữ một số thông tin nhạy cảm. Hiện tại,  ta  có thể thêm vị trí này vào file  .gitignore để git không lưu trữ dữ liệu không được phép hiển thị cho người khác:
echo ".chef" >> ~/chef-repo/.gitignore Vì  ta  đã thực hiện thay đổi đối với file  .gitignore ,  ta  có thể tiếp tục và thực hiện  commit  mới đầu tiên  của bạn  đối với hệ thống kiểm soát version . Trước tiên, hãy thêm tất cả các file  đã sửa đổi vào vùng tổ chức hiện tại:
cd ~/chef-repo git add . Bây giờ,  commit các thay đổi .  Ta  sẽ sử dụng cờ -m để chỉ định một thông báo  commit  nội dòng mô tả những thay đổi mà  ta  đang thực hiện:
git commit -m "Excluding the ./.chef directory from version control" Đại diện Chef của  ta  hiện đang được kiểm soát version . Khi  ta  tạo ra các cấu hình cho cơ sở hạ tầng  của bạn ,  ta  có thể sử dụng hai lệnh trên để giữ cho git repo của  ta  được cập nhật.
Download và cài đặt Bộ phát triển đầu bếp
 Tiếp theo,  ta  cần cài đặt Chef Development Kit, một bộ phần mềm được thiết kế cho các máy trạm Chef. Điều này bao gồm nhiều tiện ích sẽ hữu ích khi thiết kế cấu hình cho cơ sở hạ tầng của bạn. Công cụ mà  ta  quan tâm ở thời điểm này là lệnh knife đi kèm, có thể giao tiếp và điều khiển cả  server  Chef và bất kỳ client  Chef nào.
Ta có thể tìm thấy Bộ tài liệu phát triển đầu bếp 12 trên trang web Chef. Vì ta đang sử dụng Ubuntu 14.04 làm máy trạm của bạn , trang ở đây sẽ chứa liên kết download mới nhất. Lưu ý tại thời điểm viết bài này, liên kết download chỉ tham chiếu đến Ubuntu 12.04 và Ubuntu 13.10, nhưng nó vẫn sẽ cài đặt mà không gặp sự cố trên Ubuntu 14.04.
Nhấp chuột phải vào nút download trong “Ubuntu Linux” và sao chép vị trí liên kết:
 Quay lại máy trạm của bạn, thay đổi folder  chính của bạn. Dán liên kết bạn đã sao chép và sử dụng lệnh wget để  download  gói. Liên kết bạn đã sao chép có thể khác với liên kết bên dưới nếu version  bộ phát triển mới hơn đã được phát hành:
cd ~ wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.4.0-1_amd64.deb Khi .deb đã được  download , bạn có thể cài đặt nó  bằng lệnh :
sudo dpkg -i chefdk_*.deb Sau khi cài đặt, bạn có thể  xác minh  tất cả các thành phần có sẵn ở vị trí mong đợi của chúng thông qua lệnh chef mới:
chef verify Nếu máy trạm của bạn chủ yếu được sử dụng để quản lý Chef cho cơ sở hạ tầng của bạn, bạn có thể sẽ muốn đặt mặc định thành version  Ruby được cài đặt với Chef. Bạn có thể thực hiện việc này bằng cách sửa đổi .bash_profile  của bạn  để Chef's Ruby được ưu tiên:
echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile Sau đó, bạn có thể tạo nguồn file  .bash_profile  của bạn  để đặt các biến môi trường chính xác cho phiên hiện tại:
source ~/.bash_profile Nếu bạn muốn quản lý các version Ruby của bạn một cách độc lập, bạn có thể bỏ qua các bước trên.
Download các khóa xác thực xuống máy trạm
Đến đây, máy trạm của bạn có tất cả phần mềm cần thiết để tương tác với server Chef và soạn cấu hình cơ sở hạ tầng. Tuy nhiên, nó vẫn chưa được cấu hình để tương tác với server Chef và môi trường của bạn. Trong phần này, ta sẽ download thông tin đăng nhập mà ta đã tạo trên server Chef.
  Ta  sẽ  sử dụng trình  scp để  download  khóa  user  và khóa xác thực tổ chức mà  ta  đã tạo trên  server  Chef. Trước khi làm như vậy,  ta  sẽ tạo folder  ẩn nơi  ta  sẽ lưu trữ các file  này:
mkdir ~/chef-repo/.chef Phương pháp mà bạn sử dụng để kết nối với server Chef sẽ xác định chính xác cách ta download các phím. Làm theo phương pháp bên dưới phù hợp với cài đặt của bạn:
Cách download khóa khi kết nối với server Chef bằng password
 Nếu bạn kết nối với  server  Chef  của bạn  thông qua SSH sử dụng xác thực dựa trên password , lệnh scp sẽ hoạt động mà không cần sửa đổi đáng kể.
 Trên máy trạm của bạn, chỉ định tên  user  và domain  hoặc địa chỉ IP được sử dụng để kết nối với  server  Chef. Tiếp theo ngay lập tức với dấu hai chấm (:) và đường dẫn đến file  bạn muốn  download . Sau khi thêm khoảng ~/chef-repo/.chef , hãy chỉ ra folder  trên máy tính cục bộ mà bạn muốn đặt file   download  ( ~/chef-repo/.chef trong trường hợp của  ta ).
 Nếu bạn đăng nhập vào  server  Chef bằng account   user  root , các lệnh của bạn sẽ giống như thế này. Hãy nhớ thay đổi cả domain  hoặc địa chỉ IP và tên của các file  chính mà bạn đang cố  download  để phù hợp với môi trường của bạn:
scp root@server_domain_or_IP:/root/admin.pem ~/chef-repo/.chef scp root@server_domain_or_IP:/root/digitalocean-validator.pem ~/chef-repo/.chef Nếu bạn kết nối với server Chef của bạn bằng user không phải root, các lệnh sẽ trông giống như sau:
scp username@server_domain_or_IP:/home/username/admin.pem ~/chef-repo/.chef scp username@server_domain_or_IP:/home/username/digitalocean-validator.pem ~/chef-repo/.chef Cách download khóa khi kết nối với server Chef bằng SSH key
Thay vào đó, nếu bạn kết nối với server Chef của bạn bằng các phím SSH ( được khuyến khích ), bạn cần thực hiện một số bước bổ sung.
Đầu tiên, rời khỏi phiên SSH của bạn với máy trạm. Ta cần kết nối lại trong giây lát với một tham số mới:
exit Sau khi quay lại máy tính local của bạn , bạn cần thêm các SSH key mà bạn sử dụng để kết nối với server Chef với một đại lý SSH. OpenSSH, bộ SSH tiêu chuẩn, bao gồm một tác nhân SSH có thể được khởi động bằng lệnh :
eval $(ssh-agent) Bạn sẽ thấy kết quả giống như thế này (số lượng có thể sẽ khác):
Agent pid 13881 Sau khi tác nhân được khởi động, bạn có thể thêm SSH key của bạn vào đó:
ssh-add Identity added: /home/demo/.ssh/id_rsa (rsa w/o comment) Điều này sẽ giữ SSH key  của bạn được lưu trong bộ nhớ. Bây giờ, bạn có thể chuyển tiếp khóa đã lưu trữ tới máy trạm  của bạn  khi bạn kết nối bằng cách sử dụng tùy chọn -A với ssh . Điều này sẽ cho phép bạn kết nối với bất kỳ máy tính nào từ máy trạm  của bạn  như thể bạn đang kết nối từ máy tính local   của bạn :
ssh -A username@workstation_domain_or_IP Như vậy, bạn có thể kết nối với server Chef của bạn mà không cần password bằng thông tin đăng nhập SSH được chuyển tiếp. Nếu các phím trên server Chef của bạn có thông qua user root, các lệnh bạn cần sẽ trông giống như lệnh này. Hãy nhớ thay đổi domain hoặc địa chỉ IP của server Chef và các tên khóa nếu cần:
scp root@server_domain_or_IP:/root/admin.pem ~/chef-repo/.chef scp root@server_domain_or_IP:/root/digitalocean-validator.pem ~/chef-repo/.chef Nếu SSH key được cấu hình cho server Chef thay thế được sử dụng để xác thực bạn với account regular user , các lệnh của bạn sẽ trông giống như sau:
scp username@server_domain_or_IP:/home/username/admin.pem ~/chef-repo/.chef scp username@server_domain_or_IP:/home/username/digitalocean-validator.pem ~/chef-repo/.chef Cấu hình Knife để quản lý môi trường đầu bếp của bạn
  Đến đây bạn  đã có thông tin đăng nhập Chef trên máy trạm  của bạn ,  ta  có thể  cấu hình  lệnh knife với thông tin nó cần để kết nối và kiểm soát cơ sở hạ tầng Chef của bạn. Điều này được thực hiện thông qua file  knife.rb mà  ta  sẽ đặt trong folder  ~/chef-repo/.chef cùng với các khóa của  ta .
 Mở một file  có tên là knife.rb trong folder  đó trong editor  của bạn:
nano ~/chef-repo/.chef/knife.rb Trong file này, dán thông tin sau:
current_dir = File.dirname(__FILE__) log_level                :info log_location             STDOUT node_name                "name_for_workstation" client_key               "#{current_dir}/name_of_user_key" validation_client_name   "organization_validator_name" validation_key           "#{current_dir}/organization_validator_key" chef_server_url          "https://server_domain_or_IP/organizations/organization_name" syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache" cookbook_path            ["#{current_dir}/../cookbooks"] Các mục sau đây sẽ được điều chỉnh để phù hợp với cơ sở hạ tầng của bạn:
-  node_name: Điều này chỉ định tên màknifesẽ sử dụng để kết nối với server Chef của bạn. Tên này phải trùng với tên user của bạn.
-  client_key: Đây phải là tên và đường dẫn đến khóa user mà bạn đã sao chép từ server Chef. Ta có thể sử dụng đoạn mã#{current_dir}để điền vào đường dẫn nếu khóa nằm trong cùng folder với fileknife.rb
-  validation_client_name: Đây là tên của client xác nhận màknifesẽ sử dụng để khởi động các node mới. Điều này sẽ có dạng tên viết tắt của tổ chức của bạn, theo sau là-validator.
-  validation_key: Giống nhưclient_key, nó bao gồm tên và đường dẫn đến khóa xác thực mà bạn đã sao chép từ server Chef. , bạn có thể sử dụng đoạn mã Ruby#{current_dir}để chỉ định folder hiện tại nếu khóa xác thực nằm trong cùng folder với fileknife.rb
-  chef_server_url: Đây là URL có thể truy cập server Chef. Nó phải bắt đầu bằnghttps://, sau đó là domain hoặc địa chỉ IP của server Chef của bạn. Sau đó, đường dẫn đến tổ chức của bạn phải được chỉ định bằng cách thêm/organizations/ your_organization_name.
 Đối với hướng dẫn của  ta , file  knife.rb sẽ giống như sau. Bạn vẫn cần điều chỉnh domain  hoặc địa chỉ IP của  server  nếu bạn đang làm theo:
current_dir = File.dirname(__FILE__) log_level                :info log_location             STDOUT node_name                "admin" client_key               "#{current_dir}/admin.pem" validation_client_name   "digitalocean-validator" validation_key           "#{current_dir}/digitalocean-validator.pem" chef_server_url          "https://server_domain_or_IP/organizations/digitalocean" syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache" cookbook_path            ["#{current_dir}/../cookbooks"] Khi bạn hoàn tất, hãy  lưu file   knife.rb
 Bây giờ,  ta  sẽ kiểm tra file  cấu hình bằng cách thử một lệnh knife đơn giản.  Ta  cần ở trong folder  ~/chef-repo để file  cấu hình của  ta  được đọc chính xác:
cd ~/chef-repo knife client list Lần thử đầu tiên này sẽ không thành công với một lỗi trông như sau:
ERROR: SSL Validation failure connecting to host: server_domain_or_IP - 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.  Original Exception: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed Điều này xảy ra do ta không có certificate SSL của server Chef trên máy trạm của bạn . Ta có thể có được điều này bằng lệnh :
knife ssl fetch Thao tác này sẽ thêm file  certificate  của  server  Chef vào danh sách trong folder  ~/chef-repo/.chef của  ta :
WARNING: Certificates from server_domain_or_IP will be fetched and placed in your trusted_cert directory (/home/demo/chef-repo/.chef/trusted_certs).  Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading.  Adding certificate for server_domain_or_IP in /home/demo/chef-repo/.chef/trusted_certs/server_domain_or_IP.crt Sau khi certificate SSL được tìm nạp, lệnh trước đó sẽ hoạt động:
knife client list digitalocean-validator Nếu lệnh trên trả về chính xác, máy trạm của bạn hiện đã được cài đặt để kiểm soát môi trường Chef của bạn.
Khởi động nút mới bằng dao
Với server Chef và máy trạm của ta được cấu hình , ta có thể bắt đầu sử dụng Chef để cấu hình các server mới trong cơ sở hạ tầng của ta .
Điều này xảy ra thông qua một quá trình được gọi là "khởi động" trong đó file thực thi ứng dụng client Chef được cài đặt trên máy tính mới và khóa trình xác nhận tổ chức cũng được chuyển theo. Sau đó, nút mới liên hệ với server Chef bằng khóa xác thực và đổi lại, nhận khóa client duy nhất của chính nó và bất kỳ cấu hình nào đã được gán cho nó. Quá trình này đưa server mới về trạng thái ban đầu và cài đặt nó để quản lý trong tương lai.
Để kết nối với server mới, ta cần một số thông tin về nút mới:
- Tên domain hoặc địa chỉ IP nơi có thể liên lạc được
-  Tên  user  được sử dụng để hoàn thành các hành động quản trị. Đây có thể là root, hoặc một user cấu hình vớisudoquyền .
- Một phương pháp đăng nhập với quyền user ở trên. Đây có thể là password hoặc khả năng sử dụng SSH key .
-  Một phương thức thực hiện các  việc admin . Đối với  user  root, điều này là không cần thiết. Đối với user dựa vào quyềnsudo, password thường là cần thiết.
Cú pháp chung của lệnh sẽ là:
knife bootstrap node_domain_or_IP [options] Một số tùy chọn phổ biến mà bạn có thể sử dụng là:
-  -x: Được sử dụng để chỉ định tên user để xác thực thông qua SSH. Điều này thường được yêu cầu.
-  -N: Tên mới của nút, như trong Chef. Bỏ qua điều này thường sẽ dẫn đến tên server được sử dụng cho tên nút Chef.
-  -P: Được sử dụng để chỉ định password cho tên user trên server từ xa. Này là cần thiết nếu một trong hai phiên SSH yêu cầu xác thực password hoặc nếu tên user đòi hỏi một password chosudolệnh.
-  --sudo: Nếu tên user trên server từ xa cần sử dụngsudođể thực hiện các hành động quản trị, thì cờ này là cần thiết. Theo mặc định, nó sẽ nhắc nhập passwordsudo.
-  --use-sudo-password: Nếu bạn đã cung cấp password cho user có cờ-P, việc sử dụng cờ này cùng với cờ--sudosẽ sử dụng password-Pmà không cần nhắc.
-  -A: Tùy chọn này chuyển tiếp các SSH key đến server từ xa để đăng nhập thay vì sử dụng xác thực password .
 Khi sử dụng tùy chọn -A , bạn phải khởi động tác nhân SSH trên máy tính local   của bạn , thêm SSH key   được dùng  để kết nối với nút mới và chuyển tiếp thông tin đó đến máy trạm của bạn bằng cách kết nối với cờ -A ban đầu. Thông tin thêm về cách thực hiện việc này có thể tìm thấy trong phần cấu hình máy trạm liên quan đến việc  download  các khóa từ  server  Chef.
Sử dụng thông tin trên, có thể xây dựng các lệnh khởi động chính xác cho nhiều trường hợp.
 Ví dụ, để bootstrap một nút với tên “thử nghiệm”, sử dụng tên  user  demo , mà được cấu hình với sudo  quyền , và trong đó cần có một password  cho SSH và sudo xác nhận,  ta  có thể gõ:
knife bootstrap node_domain_or_IP -N testing -x demo -P password --sudo --use-sudo-password Nếu  ta  muốn bootstrap bằng  user  root , với xác thực SSH key  bằng các khóa có sẵn trên máy trạm và muốn tiếp tục sử dụng tên  server  của nút làm tên nút Chef,  ta  có thể nhập:
knife bootstrap node_domain_or_IP -x root -A Nếu  ta  muốn sử dụng SSH key  để xác thực với  user  sudo ,  ta  vẫn cần cung cấp password  bằng cờ -P , cờ --sudo cờ --use-sudo-password để tránh  dấu nhắc :
knife bootstrap node_domain_or_IP -x demo -A -P password --sudo --use-sudo-password -N name Nếu bạn đang ở trong trường hợp trên, nhưng không ngại bị kích hoạt cho password  sudo , thay vào đó bạn có thể chỉ cần nhập sau:
knife bootstrap node_domain_or_IP -x demo -A --sudo -N name Khi nút mới của bạn được khởi động, bạn sẽ có một ứng dụng client mới:
knife client list digitalocean-validator name Bạn cũng nên có một nút mới cùng tên:
knife node list name Bạn có thể sử dụng quy trình trên để dễ dàng cài đặt client Chef mới trên bất kỳ số lượng server mới nào.
Nếu bạn muốn tìm hiểu về cách tự động thêm các server DigitalOcean mới vào cơ sở hạ tầng Chef hiện có của bạn mà không cần phải khởi động từng server , hãy xem hướng dẫn này .
Kết luận
 Sau khi làm theo hướng dẫn này, bạn sẽ có một  server  Chef đầy đủ chức năng được  cấu hình  cho cơ sở hạ tầng  của bạn .  Ta  cũng đã  cài đặt  một máy trạm  được dùng  để quản lý và duy trì các cấu hình mà Chef sẽ áp dụng cho cơ sở hạ tầng của bạn.  Ta  đã trình bày cách sử dụng lệnh knife để khởi động các  server  sẽ được cấu hình bởi Chef.
Trong hướng dẫn tiếp theo , ta sẽ trình bày cách thiết kế cấu hình cho các node của bạn bằng cách sử dụng một số cấu trúc Chef. Ta sẽ xem xét các nguyên tắc cơ bản về công thức nấu ăn và sách nấu ăn của Đầu bếp như những cách để kiểm soát cơ sở hạ tầng của bạn bằng các cấu hình khai báo.
Các tin liên quan
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 14.042015-03-02
Cách cài đặt và cấu hình Sphinx trên Ubuntu 14.04
2015-02-18
Cách cài đặt MediaWiki trên Ubuntu 14.04
2015-02-06
Cách cài đặt phpBB trên Ubuntu 14.04
2015-02-04
Cách sử dụng puppet để quản lý chủ đề và plugin WordPress trên Ubuntu 14.04
2015-02-02
Giám sát LEMP với Monit trên Ubuntu 14.04
2015-01-26
Cách đồng bộ hóa lịch và danh bạ bằng chuẩn CardDAV và CalDAV với Baïkal trên Ubuntu 14.04
2015-01-23
Cách cài đặt Webmin với SSL trên Ubuntu 14.04
2015-01-19
Cách bắt đầu với Silex trên Ubuntu 14.04
2015-01-15
Cách triển khai ứng dụng DocPad trên Ubuntu 14.04
2015-01-14
 

