Chef là ứng dụng Infrastructure as Code (IaC) miễn phí và mã nguồn mở. Đây là hệ thống quản lý cấu hình cho phép quản trị viên cung cấp và quản lý cơ sở hạ tầng bằng cách tự động hóa. Một quy trình làm việc Chef hoàn chỉnh bao gồm một hoặc nhiều Chef Workstation, một Chef Server và một tập hợp các nút. Hướng dẫn này cung cấp một số thông tin cơ bản về cách Chef hoạt động và giải thích cách cài đặt và cấu hình Chef trên Ubuntu 20.04.

Chef là gì?

Chef là một ứng dụng IaC để tự động hóa và hợp lý hóa quy trình cung cấp, cấu hình, triển khai và quản lý các nút mạng. Nó cho phép triển khai liên tục và môi trường tự động. Chef có thể quản lý nhiều loại thành phần bao gồm máy chủ, vùng chứa và cơ sở hạ tầng mạng.

Chef hoạt động bằng kiến ​​trúc hub-and-spoke, với Chef Server chính ở trung tâm. Một hoặc nhiều Chef Workstation tương tác với Server, tự động cấu hình một hoặc nhiều nút Chef. Tài sản cấu hình di chuyển từ máy trạm đến máy chủ và cuối cùng đến các nút. Các máy trạm không thể tương tác trực tiếp với các nút. Cơ sở hạ tầng Chef bao gồm các thành phần sau.

  • Chef Workstation : Một workstation là một máy chủ để tạo và kiểm tra mã cấu hình. Sau đó, mã được đẩy đến Chef Server. Một số workstation có thể tương tác với cùng một máy chủ, nhưng mỗi workstation chỉ liên kết đến một máy chủ. Tài liệu Chef Workstation có nhiều thông tin hơn về cách sử dụng workstation.
  • Chef Server : Chef Server là “trung tâm chỉ huy” cho toàn bộ hệ thống. Nó lưu trữ và duy trì tất cả các tệp cấu hình, mã và tập lệnh. Chef Server bao gồm nhiều thành phần, bao gồm máy chủ web và cơ sở dữ liệu PostgreSQL. Nó chịu trách nhiệm đẩy các tài sản có liên quan đến các nút khác nhau và theo dõi các nút do nó quản lý. Mỗi máy chủ đều có khả năng cao, hiệu quả và mạnh mẽ, và có khả năng quản lý một số lượng lớn các nút.
  • Chef Node : Chef Server triển khai và quản lý một node bằng cách sử dụng các tài sản được phát triển trên Chef Workstation. Mỗi node được quản lý bởi một Chef Server duy nhất. Mặc dù phụ thuộc vào server, Chef Node chứa một Chef client. Client truy vấn server để cập nhật và giữ cho node được cập nhật.

Hình minh họa sau đây chỉ ra mối quan hệ giữa ba phần của hệ thống Chef.

Linh kiện đầu bếp

Các máy trạm sử dụng lệnh Chef, chẳng hạn như chỉ knifethị, để tương tác với máy chủ. Chef kết hợp bảo mật và xác thực bổ sung vào tất cả các hoạt động của mình, sử dụng mã hóa khóa công khai. Tuy nhiên, hệ thống Chef phức tạp và có đường cong học tập cao.

Đầu bếp sử dụng thuật ngữ đặc biệt dựa trên từ vựng nấu ăn. Một số thuật ngữ quan trọng hơn bao gồm:

  • Thuộc tính : Chỉ định giá trị cho một mục trên một nút.
  • Bookshelf : Lưu trữ nhiều sách dạy nấu ăn và tài sản khác nhau trên Chef Server bằng cách sử dụng kiểm soát phiên bản.
  • Chef-client : Chạy trên nút và chịu trách nhiệm xác minh xem nút có cập nhật các tài sản được lưu trữ trên máy chủ hay không.
  • Chef-repo : Một thư mục trên Chef Workstation chứa các sách hướng dẫn nấu ăn cục bộ và các tệp cấu hình.
  • Cookbook : Phương pháp chính để quản lý các nút. Nó chứa thông tin mô tả trạng thái cuối cùng của một nút. Máy chủ Chef và nút sử dụng cookbook để hướng dẫn cấu hình. Cookbook chứa các công thức , cùng với các thuộc tính, thư viện, mẫu và tập lệnh. Các cookbook này có thể được phát triển trên máy trạm hoặc tải xuống từ Chef Supermarket .
  • Môi trường : Thu thập các nút thành các nhóm để tổ chức chúng tốt hơn. Các cấu hình và tập lệnh tương tự có thể được áp dụng cho toàn bộ nhóm.
  • Knife : Một Chef Workstation sử dụng knifecông cụ để tương ứng với Chef Server. Một knifelệnh thường có định dạng knife subcommand [ARGUMENT] (options).
  • Recipe : Một recipe được chứa trong một cookbook. Nó giải thích các tài nguyên để thêm, thay đổi hoặc chạy trên node. Recipe được viết bằng Ruby.
  • Tài nguyên : Tài nguyên là một phần của công thức. Nó chứa loại, tên và danh sách các cặp khóa-giá trị cho một thành phần.
  • Bếp thử nghiệm : Đây là mô-đun máy trạm giúp người dùng thử nghiệm công thức nấu ăn trước khi triển khai.

Linode có Hướng dẫn hữu ích cho người mới bắt đầu về Chef . Để biết thông tin chi tiết về Chef, hãy xem tài liệu Chef . Chef cũng cung cấp tài nguyên đào tạo Learn Chef .

Trước khi bạn bắt đầu

  1. Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tôi .
  2. Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.
  3. Cần có ít nhất ba hệ thống Linode chạy Ubuntu 20.04 để triển khai hệ thống Chef. Một máy chủ dành cho Chef Workstation, máy chủ thứ hai dành cho Chef Server, trong khi máy chủ thứ ba đại diện cho một nút đang được quản trị. Do nhu cầu bộ nhớ của Chef, Chef Server yêu cầu Linode 8GB. Hai máy chủ còn lại có thể là Linode 2GB. Cả Chef Server và Chef Workstation đều phải được cấu hình bằng các hướng dẫn trước đó. Chef được sử dụng để thiết lập nút mục tiêu.
  4. Đảm bảo tất cả máy chủ Linode được cập nhật bằng lệnh sau.sudo apt update && sudo apt upgrade
  5. Gán tên miền cho Chef Server. Để biết thông tin về tên miền và trỏ tên miền đến Linode, hãy xem hướng dẫn Linode DNS Manager .
  6. Cấu hình tên máy chủ của Chef Server sao cho khớp với tên miền. Điều này cho phép phân bổ chứng chỉ SSL diễn ra bình thường. Để đặt tên máy chủ của máy chủ Ubuntu, hãy sử dụng lệnh sudo hostnamectl set-hostname <hostname>, thay thế <hostname>bằng tên miền thực tế của bạn.

Ghi chú: Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo. Nếu bạn không quen với sudo lệnh, hãy xem hướng dẫn Người dùng và Nhóm .

Cách cài đặt và cấu hình Chef Server

Vì Chef Server hoạt động như một trung tâm cho toàn bộ hệ thống, tốt nhất là cài đặt và cấu hình nó trước. Chef Server sử dụng nhiều tài nguyên, vì vậy điều quan trọng là phải sử dụng Linode chuyên dụng có ít nhất 8GB bộ nhớ.

Cách cài đặt máy chủ Chef

Có thể tải xuống Chef Server Core bằng cách sử dụng wget. Các bước sau đây sẽ hướng dẫn cách tải xuống bản phát hành mới nhất của Chef cho bản phát hành Ubuntu 20.04. Đối với các bản phát hành khác của Ubuntu, hãy xem trang tải xuống Chef . Để biết hướng dẫn chi tiết hơn, hãy xem trang cài đặt Chef Server . Để cài đặt Chef Server, hãy làm theo các bước sau.

1.Tải xuống lõi Chef Server bằng cách sử dụng wget.

wget https://packages.chef.io/files/stable/chef-server/15.1.7/ubuntu/20.04/chef-server-core_15.1.7-1_amd64.deb

2.Cài đặt lõi máy chủ.

sudo dpkg -i chef-server-core_*.deb
Selecting previously unselected package chef-server-core.
(Reading database ... 108635 files and directories currently installed.)
Preparing to unpack chef-server-core_15.1.7-1_amd64.deb ...
Unpacking chef-server-core (15.1.7-1) ...
Setting up chef-server-core (15.1.7-1) ...
Thank you for installing Chef Infra Server!

3.Để bảo mật tốt hơn và tiết kiệm dung lượng máy chủ, hãy xóa .debtệp đã tải xuống.

rm chef-server-core_*.deb

4.Khởi động máy chủ Chef. Trả lời yeskhi được nhắc chấp nhận giấy phép sản phẩm.

sudo chef-server-ctl reconfigure

Cách cấu hình người dùng và tổ chức Chef

Để sử dụng Chef, hãy cấu hình một tổ chức và ít nhất một người dùng trên Chef Server. Điều này cho phép truy cập máy chủ cho các máy trạm và nút. Để tạo các tài khoản này, hãy làm theo các bước sau.

1.Tạo một .chefthư mục để lưu trữ khóa. Đây phải là một thư mục con nằm bên trong thư mục gốc.

mkdir .chef

2.Sử dụng chef-server-ctllệnh để tạo tài khoản người dùng cho quản trị viên Chef. Có thể tạo thêm tài khoản người dùng sau. Thay thế các trường USER_NAMEFIRST_NAMELAST_NAMEEMAIL, và PASSWORDbằng thông tin có liên quan. Đối với --filenameđối số, hãy thay thế USER_NAME.pembằng tên người dùng đã sử dụng trước đó trong lệnh.

sudo chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~/.chef/USER_NAME.pem

3.Xem lại danh sách người dùng và xác nhận tài khoản hiện đã tồn tại.

sudo chef-server-ctl user-list
USER_NAME

4.Tạo một tổ chức mới, cũng sử dụng chef-server-ctllệnh. Thay thế ORG_NAMEvà ORG_FULL_NAMEbằng tên thực tế của tổ chức. ORG_NAMETrường phải toàn bộ là chữ thường. Giá trị for USER_NAMEphải là cùng tên được sử dụng trong user-createlệnh. Đối với --filenameđối số, trong ORG_NAME.pem, hãy thay thế ORG_NAMEbằng tên tổ chức được sử dụng ở nơi khác trong lệnh.

sudo chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USER_NAME --filename ~/.chef/ORG_NAME.pem

5.Liệt kê các tổ chức để xác nhận tổ chức mới đã được tạo thành công.

sudo chef-server-ctl org-list
ORG_NAME

Cách cài đặt và cấu hình Chef Workstation

Chef Workstation dành cho người dùng tạo và thử nghiệm công thức nấu ăn. Bất kỳ Linode nào có ít nhất 2GB bộ nhớ đều có thể được sử dụng cho tác vụ này. Không giống như Chef Server, một máy trạm cũng có thể được sử dụng cho các tác vụ khác. Tuy nhiên, trong một tổ chức lớn hơn lưu trữ nhiều người dùng, thường hiệu quả hơn khi tập trung các hoạt động của máy trạm trên một máy chủ lưu trữ nhiều tài khoản.

Cách cài đặt Chef Workstation

Các bước cài đặt Chef Workstation tương tự như các bước cài đặt Server. Tải xuống tệp chính xác bằng cách sử dụng wget, sau đó cài đặt. Để cài đặt Chef Workstation, hãy làm theo các bước sau.

1.Tải xuống các tệp nguồn cho Chef Workstation. Đối với các bản phát hành khác nhau của Workstation hoặc tải xuống các bản phát hành trước đó, hãy xem trang Tải xuống Chef Workstation . Để biết thêm thông tin về quy trình cài đặt, hãy xem Tài liệu cài đặt Chef Workstation .

wget https://packages.chef.io/files/stable/chef-workstation/22.10.1013/ubuntu/20.04/chef-workstation_22.10.1013-1_amd64.deb

2.Cài đặt Chef Workstation.

sudo dpkg -i chef-workstation_*.deb
Thank you for installing Chef Workstation!

3.Xóa tệp nguồn.

rm chef-workstation_*.deb

4.Xác nhận phiên bản chính xác của Chef Workstation đã được cài đặt.

chef -v
Chef Workstation version: 22.10.1013
Chef Infra Client version: 17.10.0
Chef InSpec version: 4.56.20
Chef CLI version: 5.6.1
Chef Habitat version: 1.6.521
Test Kitchen version: 3.3.2
Cookstyle version: 7.32.1

Cách cấu hình trạm làm việc Chef

Một số mục khác phải được cấu hình trước khi Máy trạm hoạt động. Các tác vụ bao gồm tạo kho lưu trữ, chỉnh sửa tệp hostsvà tạo thư mục con. Để cấu hình đầy đủ máy trạm, hãy làm theo các bước sau.

1.Tạo chef-repokho lưu trữ. Thư mục này lưu trữ các sách dạy nấu ăn và công thức nấu ăn của Chef. Nhập yeskhi được hỏi có chấp nhận giấy phép sản phẩm hay không.

chef generate repo chef-repo
Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.

2.Chỉnh sửa /etc/hoststệp. Tệp này chứa các ánh xạ giữa tên máy chủ và địa chỉ IP của chúng. Thêm một mục nhập cho Chef Server, chứa tên máy chủ, cũng là tên miền và địa chỉ IP của máy chủ. Trong ví dụ này, điều này được chỉ ra trong dòng 192.0.1.0 example.com. Cũng phải có một mục nhập cho máy chủ cục bộ. Đây là dòng 192.0.2.0 chefworkstationtrong ví dụ. Mục nhập này phải chứa địa chỉ IP cục bộ và tên máy chủ của máy chủ lưu trữ Chef Workstation. Tệp phải giống với ví dụ sau.

127.0.0.1 localhost
192.0.1.0 example.com
192.0.2.0 chefworkstation

3.Tạo một .chefthư mục con. Đây là nơi knifelưu trữ tệp, cùng với các tệp để mã hóa và bảo mật.

mkdir ~/chef-repo/.chef
cd chef-repo

Cách Thêm Khóa Riêng RSA

Khóa riêng RSA cho phép bảo mật tốt hơn giữa Chef Server và các máy trạm liên quan thông qua việc sử dụng mã hóa. Trước đó, khóa riêng RSA được tạo trên Chef Server. Sao chép các khóa này vào máy trạm cho phép máy trạm giao tiếp với máy chủ. Để bật mã hóa bằng khóa riêng RSA, hãy làm theo các bước sau.

Ghi chú: Xác thực mật khẩu SSH phải được bật trên Chef Server để hoàn tất trao đổi khóa. Nếu xác thực mật khẩu SSH đã bị tắt để bảo mật tốt hơn, hãy bật lại trước khi tiếp tục. Sau khi các khóa đã được lấy và thêm vào máy trạm, xác thực mật khẩu SSH có thể được tắt lại. Xem hướng dẫn của Linode về 

Cách bảo mật máy chủ của bạn để biết thêm thông tin.

1.Trên máy trạm, tạo cặp khóa RSA. Khóa này có thể được sử dụng để truy cập ban đầu vào máy chủ Chef để sao chép các tệp mã hóa riêng tư.

ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

2.Nhấn phím Enter để chấp nhận tên tệp mặc định id_rsavà id_rsa.pub. Ubuntu lưu trữ các tệp này trong /home/username/.sshthư mục.

Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):

3.Nhập mật khẩu khi được nhắc, sau đó nhập lại. Mã định danh và khóa công khai được lưu vào thư mục.

Your identification has been saved in /home/username/.ssh/id_rsa
Your public key has been saved in /home/username/.ssh/id_rsa.pub

4.Sao chép khóa công khai mới từ máy trạm đến Chef Server. Trong lệnh sau, sử dụng tên tài khoản cho Chef Server cùng với địa chỉ IP của nó.

ssh-copy-id username@192.0.1.0

5.Sử dụng scplệnh để sao chép .pemcác tệp từ Chef Server vào máy trạm. Trong ví dụ sau, thay thế usernamebằng tài khoản người dùng cho Chef Server và 192.0.1.0bằng địa chỉ IP thực tế của Chef Server.

scp username@192.0.1.0:~/.chef/*.pem ~/chef-repo/.chef/
Enter passphrase for key '/home/username/.ssh/id_rsa':
username.pem                                                                       100% 1674     1.7MB/s   00:00
testcompany.pem                                                                 100% 1678     4.7MB/s   00:00    

6.Liệt kê nội dung của .chefthư mục con để đảm bảo .pemcác tập tin đã được sao chép thành công.

ls ~/chef-repo/.chef
username.pem  testcompany.pem

Cách cấu hình Git trên máy trạm Chef

Hệ thống kiểm soát phiên bản giúp Chef Workstation theo dõi mọi thay đổi đối với cookbook và khôi phục các phiên bản trước đó nếu cần. Ví dụ này sử dụng Git, tương thích với hệ thống Chef. Các bước sau đây giải thích cách cấu hình Git, khởi tạo kho lưu trữ Git, thêm tệp mới và cam kết chúng.

1.Cấu hình Git bằng git configlệnh. Thay thế usernamevà user@email.combằng giá trị của riêng bạn.

git config --global user.name username
git config --global user.email user@email.com

2.Thêm .chefthư mục vào .gitignoretệp. Điều này đảm bảo các tệp hệ thống và tệp tự động tạo không được hiển thị trong đầu ra của git statusvà các lệnh Git khác.

echo ".chef" > ~/chef-repo/.gitignore

3.Đảm bảo chef-repothư mục là thư mục làm việc hiện tại. Thêm và cam kết các tệp hiện có bằng cách sử dụng git addvà git commit.

cd ~/chef-repo
git add .
git commit -m "initial commit"
[master (root-commit) a3208a3] initial commit
13 files changed, 343 insertions(+)
create mode 100644 .chef-repo.txt
...
create mode 100644 policyfiles/README.md

4.Chạy git statuslệnh để đảm bảo tất cả các tệp đã được cam kết.

git status
On branch master
nothing to commit, working tree clean

Cách tạo ra một Chef Cookbook

Để tạo một sách dạy nấu ăn mới của Chef, hãy sử dụng chef generatelệnh.

chef generate cookbook my_cookbook

Cách cấu hình tiện ích Knife

Tiện ích Chef Knife giúp máy trạm Chef giao tiếp với máy chủ. Tiện ích này cung cấp phương pháp quản lý sổ tay nấu ăn, nút và môi trường Chef. Chef sử dụng tệp config.rbtrong .chefthư mục con để lưu trữ cấu hình Knife. Để cấu hình Knife, hãy làm theo các bước sau.

1.Tạo một config.rbtệp trong ~/chef-repo/.chefthư mục. Ví dụ này sử dụng vi, nhưng có thể sử dụng bất kỳ trình soạn thảo văn bản nào.

cd ~/chef-repo/.chef
vi config.rb

2.Sử dụng tệp sau đây config.rblàm ví dụ về cách cấu hình Knife. Sao chép cấu hình mẫu này vào tệp.

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'node_name'
client_key               "USER.pem"
validation_client_name   'ORG_NAME-validator'
validation_key           "ORG_NAME-validator.pem"
chef_server_url          'https://example.com/organizations/ORG_NAME'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

3.Thực hiện những thay đổi sau:

  • node_namephải là tên của tài khoản người dùng được tạo khi cấu hình Máy chủ Chef.
  • Đối với client_key, hãy thay thế USERbằng tên người dùng được liên kết với .pemtệp, theo sau là .pem.
  • validation_client_nameyêu cầu giống như ORG_NAMEkhi tạo tổ chức theo sau là -validator.
  • trường này validation_keyphải chứa tên được sử dụng ORG_NAMEkhi tổ chức được thành lập, theo sau là -validator.pem.
  • Đối với chef_server_url, hãy đổi example.comtên miền. Theo sau tên miền là /organizations/và ORG_NAMEđược sử dụng khi tạo tổ chức.
  • Giữ nguyên các trường còn lại.

4.Quay lại thư chef-repomục và lấy chứng chỉ SSL cần thiết từ máy chủ bằng knife fetchlệnh

Ghi chú: Chứng chỉ SSL được tạo khi máy chủ Chef được cài đặt. Các chứng chỉ được tự ký. Điều này có nghĩa là cơ quan cấp chứng chỉ chưa xác minh chúng. Trước khi lấy chứng chỉ, hãy đăng nhập vào máy chủ Chef và đảm bảo tên máy chủ và tên miền đủ điều kiện (FQDN) giống nhau. Các giá trị này có thể được xác nhận bằng lệnh hostname và hostname -f.

5.Để xác nhận config.rbtệp là đúng, hãy chạy knife client listlệnh. Tên trình xác thực có liên quan sẽ được hiển thị.

knife client list
testcompany-validator

Cách khởi động một node

Tại thời điểm này, cả Chef Server và Chef Workstation đều đã được cấu hình. Bây giờ chúng có thể được sử dụng để khởi động nút. Quá trình khởi động cài đặt máy khách chef trên nút và thực hiện xác thực. Sau đó, nút có thể truy xuất bất kỳ bản cập nhật cần thiết nào từ Chef Server. Để khởi động nút, hãy làm theo các bước sau.

1.Đăng nhập vào nút mục tiêu, là nút cần khởi động và chỉnh sửa tệp /etc/hosts. Thêm các mục nhập cho nút, tên miền máy chủ Chef và máy trạm. Tệp phải giống với ví dụ sau, sử dụng tên thực tế của Máy chủ Chef, máy trạm và nút mục tiêu, cùng với địa chỉ IP của chúng.

127.0.0.1 localhost
192.0.100.0 targetnode
192.0.2.0 chefworkstation
192.0.1.0 example.com

2.Quay lại Linode lưu trữ Chef Workstation và thay đổi thư mục làm việc thành ~/chef-repo/.chef.

cd ~/chef-repo/.chef

3.Khởi động nút bằng knife bootstraplệnh. Chỉ định địa chỉ IP của nút mục tiêu cho node_ip_address. Đây là địa chỉ của nút để khởi động. Trong ví dụ sau, sử dụng tên người dùng và mật khẩu thực tế cho tài khoản thay cho usernamevà password. Nhập tên của nút thay cho nodename. Trả lời Ykhi được hỏi “Bạn có chắc chắn muốn tiếp tục kết nối không”.

Ghi chú: Tùy chọn khởi động bằng xác thực cặp khóa có vẻ như không còn được hỗ trợ nữa.

knife bootstrap node_ip_address -U username -P password --sudo --use-sudo-password --node-name nodename

4.Xác nhận nút đã được khởi động thành công. Liệt kê các nút máy khách bằng lệnh knife client list. Tất cả các nút đã khởi động phải được liệt kê.

knife client list
target-node
testcompany-validator

5.Thêm nút khởi động vào /etc/hoststệp máy trạm như sau. Thay thế 192.0.100.0 targetnodebằng địa chỉ IP và tên của nút khởi động.

127.0.0.1 localhost
192.0.1.0 example.com
192.0.2.0 chefworkstation
192.0.100.0 targetnode

Cách tải xuống và áp dụng a Cookbook (Tùy chọn)

Cookbook là cách hiệu quả nhất để giữ cho các nút mục tiêu được cập nhật. Ngoài ra, cookbook có thể xóa tệp validation.pemđược tạo trên nút khi nó được khởi động. Điều quan trọng là phải xóa tệp này vì lý do bảo mật.

Không bắt buộc phải tải xuống hoặc tạo sách dạy nấu ăn để sử dụng Chef. Nhưng phần này cung cấp một ví dụ ngắn gọn về cách tải xuống sách dạy nấu ăn và áp dụng vào một nút.

1.Trên máy trạm Chef, hãy chuyển đến ~/chef-repo/.chefthư mục.

cd ~/chef-repo/.chef

2.Tải xuống cron-delvalidatesách dạy nấu ăn từ Chef Supermarket. Để biết thêm thông tin về supermarketlệnh, hãy xem tài liệu của Chef supermarket .

knife supermarket download cron-delvalidate
Downloading cron-delvalidate from Supermarket at version 0.1.3 to /home/username/chef-repo/.chef/cron-delvalidate-0.1.3.tar.gz
Cookbook saved: /home/username/chef-repo/.chef/cron-delvalidate-0.1.3.tar.gz

3.Nếu sách dạy nấu ăn được tải xuống dưới dạng .tar.gztệp, hãy sử dụng tarlệnh để giải nén tệp đó. Di chuyển thư mục đã giải nén đến thư cookbooksmục.

tar -xf cron-delvalidate-0.1.3.tar.gz
cp -r  cron-delvalidate ~/chef-repo/cookbooks/

4.Xem lại tệp của sách hướng dẫn nấu ăn default.rbđể xem công thức. Công thức này được viết bằng Ruby và minh họa cách một công thức điển hình được cấu trúc. Công thức này chứa một công việc cron có tên là clientrun. Công việc này khởi tạo một công việc cron mới để chạy chef-clientlệnh theo giờ. Công việc này cũng xóa validation.pemtệp không cần thiết.

#
# Cookbook Name:: cron-delvalidate
# Recipe:: Chef-Client Cron & Delete Validation.pem
#
#
cron "clientrun" do
  minute '0'
  hour '*/1'
  command "/usr/bin/chef-client"
  action :create
end

file "/etc/chef/validation.pem" do
  action :delete
end

5.Thêm công thức vào danh sách chạy cho nút. Trong lệnh sau, thay thế nodenamebằng tên của nút.

knife node run_list add nodename 'recipe[cron-delvalidate::default]'
nodename:
  run_list: recipe[cron-delvalidate::default]

6.Tải sách dạy nấu ăn và công thức nấu ăn lên Máy chủ đầu bếp.

knife cookbook upload cron-delvalidate
Uploading cron-delvalidate [0.1.3]
Uploaded 1 cookbook.

7.Chạy chef-clientlệnh trên nút bằng knife sshtiện ích. Lệnh này khiến nút kéo các công thức trong danh sách chạy của nó từ máy chủ. Nó cũng xác định xem có bất kỳ bản cập nhật nào không. Chef Server truyền các công thức đến nút mục tiêu. Khi công thức chạy, nó xóa tệp và cài đặt một công việc cron để giữ cho nút được cập nhật trong tương lai. Trong lệnh sau, hãy thay thế nodenamebằng tên thực tế của nút mục tiêu. Thay thế usernamebằng tên của tài khoản người dùng có sudoquyền truy cập. Nhập mật khẩu cho tài khoản khi được nhắc thực hiện.

knife ssh 'name:nodename' 'sudo chef-client' -x username
nodename Chef Infra Client, version 17.10.3
nodename Patents: https://www.chef.io/patents
nodename Infra Phase starting
nodename Resolving cookbooks for run list: ["cron-delvalidate::default"]
nodename Synchronizing cookbooks:
nodename   - cron-delvalidate (0.1.3)
nodename Installing cookbook gem dependencies:
nodename Compiling cookbooks...
nodename Loading Chef InSpec profile files:
nodename Loading Chef InSpec input files:
nodename Loading Chef InSpec waiver files:
nodename Converging 2 resources
nodename Recipe: cron-delvalidate::default
nodename   * cron[clientrun] action create
nodename     - add crontab entry for cron[clientrun]
nodename   * file[/etc/chef/validation.pem] action delete (up to date)
nodename
nodename Running handlers:
nodename Running handlers complete
nodename Infra Phase complete, 1/2 resources updated in 03 seconds

Phần kết luận

Chef là một ứng dụng cơ sở hạ tầng dưới dạng mã (IaC) để tự động triển khai và quản lý các nút cơ sở hạ tầng. Kiến trúc Chef bao gồm Chef Server, nơi lưu trữ tất cả các quy trình và Chef Workstation, nơi mã cơ sở hạ tầng được phát triển. Các nút được quản lý giao tiếp với máy chủ để nhận các bản cập nhật. Để sử dụng Chef, hãy cài đặt phần mềm Chef Server và Chef Workstation. Chia sẻ khóa RSA giữa máy chủ và máy trạm, đồng thời cài đặt kiểm soát phiên bản và tiện ích Chef Knife trên máy trạm. Khởi động các nút mục tiêu bằng tiện knife bootstrapích. Sau khi một nút được khởi động, có thể tải xuống sách dạy nấu ăn và công thức nấu ăn bằng danh sách chạy của nút. Để biết thêm thông tin, hãy xem tài liệu Chef .

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.