Puppet là một công cụ quản lý cấu hình và tự động hóa tập trung. DevOps tạo ra quản lý cấu hình để triển khai máy chủ và ứng dụng, và tất cả cấu hình để tự động hóa được lưu trữ trên "Puppet Server" trung tâm. Sau đó, các nút "Agent" sẽ kéo cấu hình mới từ "Puppet Server" và áp dụng trạng thái như đã xác định.
Tất cả các kết nối giữa các nút "Puppet Server" và "Agent" đều được mã hóa theo mặc định bằng chứng chỉ SSL/TLS. Puppet sử dụng Ngôn ngữ dành riêng cho miền (DSL) để mô tả cấu hình hệ thống và tương tự như cú pháp của Ruby.
Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình máy chủ Puppet và tác nhân trên Debian 11 Bullseye. Bạn sẽ cài đặt máy chủ Puppet trên máy chủ có tên máy chủ là 'puppet-server' và tác nhân Puppet trên máy chủ có tên máy chủ là 'agent'. Cuối cùng, bạn sẽ tạo các bản kê khai puppet đầu tiên để cài đặt ngăn xếp LEMP cơ bản trên nút 'agent'.
Để thiết lập FQDN, hãy chạy lệnh 'hostnamectl' bên dưới.
Chạy lệnh sau để thiết lập fqdn 'puppet-server.localdomain.lan' trên 'puppet-server'.
Chạy lệnh sau để thiết lập fqdn 'agent.localdomain.lan' trên Nút 'agent'.
Tiếp theo, chỉnh sửa tệp '/etc/hosts' bằng trình soạn thảo vim như bên dưới.
Sao chép và dán cấu hình sau.
Lưu tệp và thoát.
Cuối cùng, chạy lệnh 'ping' bên dưới để xác minh kết nối giữa 'puppet-server' và 'agent'.
Nếu cấu hình của bạn đúng, bạn sẽ thấy kết quả sau. 'puppet-server.localdomain.lan' được giải quyết thành máy chủ '192.168.5.100' và 'agent.localdomain.lan' được giải quyết thành nút tác nhân '192.168.5.150'.
Tải xuống gói kho lưu trữ bằng lệnh 'wget' bên dưới.
Tiếp theo, cài đặt tệp deb 'puppet7-release-bullseye.deb' bằng lệnh 'dpkg' bên dưới.
Sau khi cài đặt hoàn tất, hãy chạy lệnh 'apt' bên dưới để cập nhật và làm mới chỉ mục gói Debian.
Bây giờ bạn đã sẵn sàng để cài đặt các gói Puppet.
Để cài đặt Puppet Server, hãy chạy lệnh apt bên dưới. Lệnh này cũng tự động cài đặt các gói khác như Java OpenJDK.
Nhập 'Y' để xác nhận cài đặt.
Sau khi cài đặt hoàn tất, bạn sẽ cần tải môi trường bash cho Puppet Server.
Theo mặc định, Puppet lưu trữ tệp nhị phân của nó trên thư mục '/opt/puppetlabs/bin'. Chạy lệnh sau để áp dụng biến môi trường '$PATH' mới cho Puppet Server.
Tùy chọn, bạn cũng có thể áp dụng biến môi trường '$PATH' bằng cách chạy lệnh sau.
Bây giờ hãy xác minh biến môi trường '$PATH' bằng lệnh bên dưới. Đảm bảo rằng thư mục '/opt/puppetlabs/bin' nằm trong danh sách biến môi trường '$PATH'.
Sau đó, bạn có thể chạy lệnh 'puppetserver' một cách bình thường. Bên dưới, bạn có thể kiểm tra phiên bản Puppet.
Bạn sẽ nhận được kết quả tương tự như ảnh chụp màn hình bên dưới.
Tiếp theo, chỉnh sửa cấu hình máy chủ Puppet '/etc/default/puppetserver' bằng trình soạn thảo vim.
Thay đổi phân bổ bộ nhớ tối đa cho Máy chủ Puppet. Tùy thuộc vào bộ nhớ hệ thống của bạn. Trong hướng dẫn này, chúng tôi có 2GB bộ nhớ và sẽ phân bổ cho máy chủ Puppet 1GB. Và chúng ta sẽ sử dụng cấu hình bên dưới.
Lưu tệp cấu hình và thoát.
Tiếp theo, tải lại trình quản lý systemd để áp dụng tệp dịch vụ Puppet mới.
Sau đó, khởi động và kích hoạt dịch vụ 'puppetserver' bằng lệnh bên dưới.
Dịch vụ 'puppetserver' sẽ được thiết lập và chạy. Chạy lệnh bên dưới để xác minh 'puppetserver'.
Bạn sẽ thấy đầu ra tương tự như ảnh chụp màn hình bên dưới.
Ngoài ra, nếu bạn đang sử dụng tường lửa UFW trên hệ thống của mình, hãy đảm bảo mở cổng '8140' sẽ được Máy chủ Puppet sử dụng.
Chạy lệnh bên dưới để liên kết mọi kết nối đến từ mạng con cục bộ '192.168.5.0/24' đến Máy chủ Puppet trên cổng '8140'.
Dưới đây là các quy tắc tường lửa UFW hiện tại mà bạn nên xem.
Chạy các lệnh 'puppet' bên dưới để thiết lập Puppet Server. Đây sẽ là thiết lập tên miền Puppet Server mặc định và khoảng thời gian chạy trong phần 'main', và môi trường và dns_alt_names trong phần 'server'.
Bây giờ hãy kiểm tra cấu hình Puppet Server '/etc/puppetlabs/puppet/puppet.conf' bằng lệnh 'cat' bên dưới.
Bạn sẽ thấy cấu hình Puppet Server như bên dưới.
Cuối cùng, khởi động lại dịch vụ 'puppetserver' để áp dụng cấu hình mới bằng cách chạy lệnh 'systemctl' bên dưới.
Tại thời điểm này, bạn đã hoàn tất cài đặt và cấu hình Puppet Server.
Trước khi cài đặt Puppet Agent, hãy đảm bảo rằng bạn đã hoàn tất cấu hình FQDN và thêm kho lưu trữ Puppet.
Bây giờ chúng ta hãy cài đặt và cấu hình Puppet Agent.
Cài đặt gói 'puppet-agent' bằng lệnh apt bên dưới.
Sau khi cài đặt hoàn tất, hãy chạy lệnh bên dưới để khởi động và kích hoạt dịch vụ Puppet.
Bạn sẽ thấy đầu ra tương tự như ảnh chụp màn hình bên dưới.
Tiếp theo, bạn sẽ thiết lập biến môi trường '$PATH' để thêm đường dẫn nhị phân Puppet '/opt/puppetlabs/bin/'. Thực hiện thao tác này cho phép bạn chạy lệnh 'puppet' trực tiếp mà không cần đường dẫn đầy đủ của tệp nhị phân.
Một cách khác để thực hiện là thêm biến môi trường '$PATH' mới vào cấu hình '~/.bashrc' bằng lệnh sau.
Bây giờ hãy xác minh cấu hình biến môi trường '$PATH' bằng lệnh sau.
Bạn sẽ thấy đường dẫn nhị phân Puppet '/opt/puppetlabs/bin' được thêm vào biến môi trường '$PATH'.
Trước tiên, hãy đảm bảo rằng fqdn của Puppet Server có thể truy cập được từ máy 'agent'. Hãy kiểm tra bằng lệnh 'ping' bên dưới.
Tiếp theo, hãy chạy các lệnh bên dưới để cấu hình Puppet Agent. Điều này sẽ xác định tên miền Puppet Server và ca_server trên phần 'agent'.
Xác minh cấu hình Puppet được tạo trong tệp '/etc/puppetlabs/puppet/puppet.conf'.
Bạn sẽ thấy đầu ra tương tự như ảnh chụp màn hình bên dưới.
Bây giờ, hãy chạy lệnh bên dưới để khởi động lại dịch vụ Puppet và áp dụng các thay đổi mới. Sau đó, hãy xác minh dịch vụ Puppet và đảm bảo rằng nó đang hoạt động và chạy.
Dưới đây là đầu ra của trạng thái dịch vụ Puppet.
Tiếp theo, hãy chạy lệnh bên dưới để đăng ký tác nhân Puppet với máy chủ Puppet. Lệnh này sẽ tạo chứng chỉ TLS mới và tạo yêu cầu ký chứng chỉ mới cho máy chủ Puppet.
Bây giờ hãy di chuyển đến thiết bị đầu cuối Máy chủ Puppet và chạy lệnh bên dưới để kiểm tra các yêu cầu ký chứng chỉ, sau đó xác minh việc ký chứng chỉ cho Puppet Agent 'agent.localdomain.lan'.
Bạn sẽ thấy thông báo như 'Yêu cầu chứng chỉ đã ký thành công ....'.
Tiếp theo, hãy chạy lệnh bên dưới để xác minh danh sách các chứng chỉ trên Máy chủ Puppet.
Bạn sẽ thấy hai chứng chỉ khác nhau, chứng chỉ cho Máy chủ Puppet và Puppet Agent.
Bây giờ hãy di chuyển lại đến thiết bị đầu cuối Puppet Agent và bạn sẽ thấy các thông báo như 'Thông báo: Đã hoàn tất khởi tạo SSL', nghĩa là các yêu cầu ký chứng chỉ đã hoàn tất thành công.
Lúc này, bạn đã sẵn sàng tạo một bản kê khai Puppet đầu tiên mới.
Thay đổi thư mục làm việc hiện tại của bạn thành '/etc/puppetlabs/code/environments/production/'.
Tiếp theo, tạo một thư mục bố cục manifest mới cho LEMP Stack trong thư mục 'modules'.
Di chuyển đến thư mục 'modules/lemp' và tạo một tệp manifest Puppet mới 'manifests/init.pp' bằng trình soạn thảo vim/nano.
Sao chép và dán ngôn ngữ cú pháp puppet sau để cài đặt LEMP Stack, đảm bảo mỗi dịch vụ LEMP Stack đang hoạt động và tạo một tệp index.html tùy chỉnh mới.
Lưu tệp và thoát.
Tiếp theo, chạy lệnh bên dưới để xác thực tệp kê khai Puppet 'init.pp'.
Nếu bạn không thấy bất kỳ thông báo đầu ra nào, cấu hình đã chính xác.
Bây giờ hãy tạo một cấu hình khác 'manifests/site.pp' bằng trình soạn thảo vim/nano.
Định nghĩa máy chủ đích là 'agent.localdomain.lan' và áp dụng tệp kê khai Puppet mới 'lemp'.
Lưu tệp và thoát.
Xác minh lại cấu hình tệp kê khai Puppet bằng lệnh sau.
Nhưng bạn cũng có thể áp dụng manifest Puppet theo cách thủ công từ máy Puppet Agent.
Quay lại máy chủ đầu cuối 'agent' và chạy lệnh bên dưới để áp dụng manifest Puppet theo cách thủ công.
Lệnh này sẽ chạy manifest Puppet trên máy Puppet Agent và cài đặt LEMP Stack thông qua manifest Puppet 'lemp'.
Dưới đây là kết quả bạn sẽ nhận được.
Bây giờ hãy chạy lệnh bên dưới để xác minh từng dịch vụ Nginx, MariaDB và PHP-FPM.
Bạn sẽ thấy mỗi dịch vụ đều đang hoạt động và chạy.
Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP của nút Agent vào thanh địa chỉ. Và bạn sẽ thấy tệp index.html tùy chỉnh bên dưới.
Bây giờ bạn đã áp dụng thành công triển khai LEMP Stack cho máy Agent bằng cách sử dụng Puppet manifests.
Trong bước tiếp theo, bạn có thể muốn thiết lập một nút khác và tạo một Puppet manifest phức tạp hơn cho các lần triển khai của mình.
Tất cả các kết nối giữa các nút "Puppet Server" và "Agent" đều được mã hóa theo mặc định bằng chứng chỉ SSL/TLS. Puppet sử dụng Ngôn ngữ dành riêng cho miền (DSL) để mô tả cấu hình hệ thống và tương tự như cú pháp của Ruby.
Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình máy chủ Puppet và tác nhân trên Debian 11 Bullseye. Bạn sẽ cài đặt máy chủ Puppet trên máy chủ có tên máy chủ là 'puppet-server' và tác nhân Puppet trên máy chủ có tên máy chủ là 'agent'. Cuối cùng, bạn sẽ tạo các bản kê khai puppet đầu tiên để cài đặt ngăn xếp LEMP cơ bản trên nút 'agent'.
Điều kiện tiên quyết
- Bạn sẽ cần hai máy chủ Debian 11 khác nhau.'puppet-server' có địa chỉ IP là '192.168.5.100' và fqdn là 'puppet-server.localdomainl.lan'.
- 'agent' có địa chỉ IP là '192.168.5.150' và fqdn là 'agent.localdomain.lan'.
Thiết lập FQDN
Đầu tiên, bạn sẽ thiết lập Tên miền đủ điều kiện (FQDN) và tệp '/etc/hosts' trên cả 'puppet-server' và 'agent'. Điều này sẽ đảm bảo cả hai máy chủ có thể giao tiếp với tên miền cục bộ.Để thiết lập FQDN, hãy chạy lệnh 'hostnamectl' bên dưới.
Chạy lệnh sau để thiết lập fqdn 'puppet-server.localdomain.lan' trên 'puppet-server'.
Mã:
hostnamectl set-hostname puppet-server.localdomain.lan
Mã:
hostnamectl set-hostname agent.localdomain.lan
Mã:
sudo vim /etc/hosts
Mã:
192.168.5.100 puppet-server.localdomain.lan
192.168.5.150 agent.localdomain.lan
Cuối cùng, chạy lệnh 'ping' bên dưới để xác minh kết nối giữa 'puppet-server' và 'agent'.
Mã:
ping puppet-server.localdomain.lan -c3
ping agent.localdomain.lan -c3
Thêm kho lưu trữ Puppet
Theo mặc định, Puppelabs cung cấp các gói kho lưu trữ cho các bản phân phối Linux khác nhau, bao gồm cả Debian 11 Bullseye mới nhất. Trong bước này, bạn sẽ thêm và cài đặt kho lưu trữ Puppet vào cả 'puppet-server' và 'agent'. Vào thời điểm viết bài này, phiên bản mới nhất của Puppet là v7.x.Tải xuống gói kho lưu trữ bằng lệnh 'wget' bên dưới.
Mã:
wget https://apt.puppet.com/puppet7-release-bullseye.deb
Mã:
sudo dpkg -i puppet7-release-bullseye.deb
Mã:
sudo apt update
Cài đặt Puppet Server
Trong bước này, bạn sẽ cài đặt gói máy chủ Puppet trên 'puppet-server'. Tại thời điểm viết bài này, phiên bản mới nhất của Puppet là v7.Để cài đặt Puppet Server, hãy chạy lệnh apt bên dưới. Lệnh này cũng tự động cài đặt các gói khác như Java OpenJDK.
Mã:
sudo apt install puppetserver
Sau khi cài đặt hoàn tất, bạn sẽ cần tải môi trường bash cho Puppet Server.
Theo mặc định, Puppet lưu trữ tệp nhị phân của nó trên thư mục '/opt/puppetlabs/bin'. Chạy lệnh sau để áp dụng biến môi trường '$PATH' mới cho Puppet Server.
Mã:
source /etc/profile.d/puppet-agent.sh
echo $PATH
Mã:
echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc
Mã:
echo $PATH
Mã:
puppetserver -v
Tiếp theo, chỉnh sửa cấu hình máy chủ Puppet '/etc/default/puppetserver' bằng trình soạn thảo vim.
Mã:
sudo vim /etc/default/puppetserver
Mã:
JAVA_ARGS="-Xms1g -Xmx1g"
Tiếp theo, tải lại trình quản lý systemd để áp dụng tệp dịch vụ Puppet mới.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl start enable --now puppetserver
Dịch vụ 'puppetserver' sẽ được thiết lập và chạy. Chạy lệnh bên dưới để xác minh 'puppetserver'.
Mã:
sudo systemctl status puppetserver
Ngoài ra, nếu bạn đang sử dụng tường lửa UFW trên hệ thống của mình, hãy đảm bảo mở cổng '8140' sẽ được Máy chủ Puppet sử dụng.
Chạy lệnh bên dưới để liên kết mọi kết nối đến từ mạng con cục bộ '192.168.5.0/24' đến Máy chủ Puppet trên cổng '8140'.
Mã:
sudo ufw allow from 192.168.5.0/24 đến bất kỳ cổng giao thức tcp nào 8140
sudo ufw status
Cấu hình Puppet Server
Trong bước này, bạn sẽ chỉnh sửa cấu hình Puppet Server. Và điều này có thể được thực hiện bằng cách chỉnh sửa cấu hình Puppet trực tiếp hoặc bằng cách tạo cấu hình bằng dòng lệnh 'puppet'.Chạy các lệnh 'puppet' bên dưới để thiết lập Puppet Server. Đây sẽ là thiết lập tên miền Puppet Server mặc định và khoảng thời gian chạy trong phần 'main', và môi trường và dns_alt_names trong phần 'server'.
Mã:
puppet config set server puppet-server.localdomain.lan --section main
puppet config set runinterval 1h --section main
puppet config set environment production --section server
puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan --section server
Mã:
cat /etc/puppetlabs/puppet/puppet.conf
Cuối cùng, khởi động lại dịch vụ 'puppetserver' để áp dụng cấu hình mới bằng cách chạy lệnh 'systemctl' bên dưới.
Mã:
sudo systemctl restart puppetserver
Cài đặt và cấu hình Puppet Agent
Trong bước này, bạn sẽ cài đặt và cấu hình Puppet Agent trên máy khách 'agent'.Trước khi cài đặt Puppet Agent, hãy đảm bảo rằng bạn đã hoàn tất cấu hình FQDN và thêm kho lưu trữ Puppet.
Bây giờ chúng ta hãy cài đặt và cấu hình Puppet Agent.
Cài đặt gói 'puppet-agent' bằng lệnh apt bên dưới.
Mã:
sudo apt install puppet-agent
Sau khi cài đặt hoàn tất, hãy chạy lệnh bên dưới để khởi động và kích hoạt dịch vụ Puppet.
Mã:
sudo /opt/puppetlabs/bin/puppet resource service puppet sure=running enable=true
Tiếp theo, bạn sẽ thiết lập biến môi trường '$PATH' để thêm đường dẫn nhị phân Puppet '/opt/puppetlabs/bin/'. Thực hiện thao tác này cho phép bạn chạy lệnh 'puppet' trực tiếp mà không cần đường dẫn đầy đủ của tệp nhị phân.
Mã:
source /etc/profile.d/puppet-agent.sh
echo $PATH
Mã:
echo "xuất PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc
Mã:
echo $PATH
Đang đăng ký Puppet Agent vào Puppet Server
Sau khi cài đặt Puppet Agent, bây giờ bạn sẽ thiết lập Puppet Agent để đăng ký nó vào Puppet Server chính.Trước tiên, hãy đảm bảo rằng fqdn của Puppet Server có thể truy cập được từ máy 'agent'. Hãy kiểm tra bằng lệnh 'ping' bên dưới.
Mã:
ping puppet-server.localdomain.lan -c3
Tiếp theo, hãy chạy các lệnh bên dưới để cấu hình Puppet Agent. Điều này sẽ xác định tên miền Puppet Server và ca_server trên phần 'agent'.
Mã:
puppet config set server puppet-server.localdomain.lan --section agent
puppet config set ca_server puppet-server.localdomain.lan --section agent
Mã:
cat /etc/puppetlabs/puppet/puppet.conf
Bây giờ, hãy chạy lệnh bên dưới để khởi động lại dịch vụ Puppet và áp dụng các thay đổi mới. Sau đó, hãy xác minh dịch vụ Puppet và đảm bảo rằng nó đang hoạt động và chạy.
Mã:
sudo systemctl restart puppet
sudo systemctl status puppet
Tiếp theo, hãy chạy lệnh bên dưới để đăng ký tác nhân Puppet với máy chủ Puppet. Lệnh này sẽ tạo chứng chỉ TLS mới và tạo yêu cầu ký chứng chỉ mới cho máy chủ Puppet.
Mã:
puppet ssl bootstrap
Mã:
puppetserver ca list --all
puppetserver ca sign --certname agent.localdomain.lan
Tiếp theo, hãy chạy lệnh bên dưới để xác minh danh sách các chứng chỉ trên Máy chủ Puppet.
Mã:
puppetserver ca list-all
Bây giờ hãy di chuyển lại đến thiết bị đầu cuối Puppet Agent và bạn sẽ thấy các thông báo như 'Thông báo: Đã hoàn tất khởi tạo SSL', nghĩa là các yêu cầu ký chứng chỉ đã hoàn tất thành công.
Lúc này, bạn đã sẵn sàng tạo một bản kê khai Puppet đầu tiên mới.
Tạo bản kê khai Puppet đầu tiên
Trong bước này, bạn sẽ tạo một bản kê khai Puppet đầu tiên mới để cài đặt LEMP Stack (Nginx, MariaDB và PHP-FPM). Tất cả các manifest cho môi trường sản xuất phải được lưu trữ tại thư mục Puppet Server '/etc/puppetlabs/code/environments/production/'.Thay đổi thư mục làm việc hiện tại của bạn thành '/etc/puppetlabs/code/environments/production/'.
Mã:
cd /etc/puppetlabs/code/environments/production/
Mã:
mkdir -p modules/lemp/{manifests,files}
Mã:
cd modules/lemp/
nano manifests/init.pp
Mã:
class lemp {
Package { đảm bảo => 'đã cài đặt' }
$lemppackages = [ 'nginx', 'mariadb-server', 'php-fpm' ]
package { $lemppackages: }
Service { đảm bảo => 'đang chạy', bật => 'true'}
$lempsvc = [ 'nginx', 'mariadb', 'php7.4-fpm' ]
service { $lempsvc: }
file { '/var/www/html/index.html':
đảm bảo => file,
content => "[HEADING=1]Welcome to Nginx - Managed by Puppet[/HEADING]",
mode = > '0644',
}
}
Tiếp theo, chạy lệnh bên dưới để xác thực tệp kê khai Puppet 'init.pp'.
Mã:
puppet parser validate init.pp
Bây giờ hãy tạo một cấu hình khác 'manifests/site.pp' bằng trình soạn thảo vim/nano.
Mã:
cd /etc/puppetlabs/code/environments/production/
vim manifests/sites.pp
Mã:
node 'agent.localdomain.lan' {
include lemp
}
Xác minh lại cấu hình tệp kê khai Puppet bằng lệnh sau.
Mã:
puppet parser validate site.pp
Xác minh và áp dụng tệp kê khai Puppet
Bây giờ bạn đã tạo một tệp kê khai Puppet đầu tiên mới để triển khai LEMP Stack. Tại thời điểm này, nút Puppet Agent sẽ tự động đồng bộ tất cả các manifest với Puppet Server và áp dụng cấu hình manifest mới.Nhưng bạn cũng có thể áp dụng manifest Puppet theo cách thủ công từ máy Puppet Agent.
Quay lại máy chủ đầu cuối 'agent' và chạy lệnh bên dưới để áp dụng manifest Puppet theo cách thủ công.
Mã:
puppet agent -t
Dưới đây là kết quả bạn sẽ nhận được.
Bây giờ hãy chạy lệnh bên dưới để xác minh từng dịch vụ Nginx, MariaDB và PHP-FPM.
Mã:
sudo systemctl status nginx
sudo systemctl status mariadb
sudo systemctl status php7.4-fpm
Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP của nút Agent vào thanh địa chỉ. Và bạn sẽ thấy tệp index.html tùy chỉnh bên dưới.
Bây giờ bạn đã áp dụng thành công triển khai LEMP Stack cho máy Agent bằng cách sử dụng Puppet manifests.
Kết luận
Xin chúc mừng! Bây giờ bạn đã cài đặt thành công Puppet Server và Agent trên Debian 11 Bullseye. Ngoài ra, bạn đã học cách tạo Puppet manifest đầu tiên để cài đặt LEMP Stack.Trong bước tiếp theo, bạn có thể muốn thiết lập một nút khác và tạo một Puppet manifest phức tạp hơn cho các lần triển khai của mình.