Puppet là một công cụ quản lý cấu hình mã nguồn mở và khung tự động hóa máy chủ. Puppet có thể chạy trên các hệ điều hành giống Unix cũng như trên các hệ thống Microsoft Windows. Nó cho phép bạn quản lý và thực hiện các tác vụ quản trị và cấu hình hàng trăm hệ thống từ một máy chủ chính.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách cài đặt Puppet trên CentOS 8. Tôi sẽ cài đặt và cấu hình một máy chủ CentOS 8 làm 'master' của puppet và máy chủ còn lại làm 'agent'.
Điều kiện tiên quyết
Thiết lập Hostname
Đầu tiên, chúng ta sẽ thiết lập hosts và FQDN cho cả hai máy chủ. Người điều khiển rối sẽ có tên máy chủ là 'master' với FQDN là 'master.hakase-labs.io', và tác nhân sẽ có tên máy chủ là 'agent01' với FQDN là 'agent01.hakase-labs.io'.
Thiết lập tên máy chủ bằng lệnh 'hostnamectl' bên dưới.
Sau đó, chỉnh sửa tệp '/etc/hosts' để cấu hình máy chủ FQDN.
Thay đổi địa chỉ IP và tên miền bằng tên của riêng bạn và dán vào đó.
Lưu và đóng.
Bây giờ hãy khởi động lại dịch vụ có tên máy chủ để áp dụng tên máy chủ và FQDN mới.
Sau đó, kiểm tra tên máy chủ và FQDN bằng lệnh sau.
Bạn sẽ nhận được tên máy chủ mới và FQDN đã được định cấu hình và áp dụng cho hệ thống.
Thiết lập máy chủ NTP
Đối với máy chủ NTP, chúng ta sẽ sử dụng "chrony" cho các máy chủ của mình.
Cài đặt chrony bằng lệnh dnf bên dưới.
Sau đó, chỉnh sửa cấu hình chrony '/etc/chrony.conf' bằng trình soạn thảo vim.
Bây giờ hãy thay đổi máy chủ nhóm với nhóm gần nhất ở quốc gia của bạn. Bạn có thể kiểm tra nhóm NTP khả dụng bằng cách sử dụng 'https://www.pool.ntp.org/zone/COUNTRYID'.
Sao chép tất cả máy chủ NTP khả dụng của quốc gia bạn và dán vào tệp 'chrony.conf' như bên dưới.
Lưu và đóng.
Bây giờ hãy khởi động dịch vụ chronyd và thêm nó vào thời gian khởi động.
Cấu hình máy chủ NTP đã hoàn tất.
Thêm kho lưu trữ Puppet cho CentOS 8
Đối với kho lưu trữ puppet CentOS 8 server, bạn có thể cài đặt thủ công bằng lệnh rpm như bên dưới.
Sau đó, kiểm tra tất cả kho lưu trữ khả dụng trên hệ thống bằng lệnh dnf bên dưới.
Và bạn sẽ nhận được thông báo kho lưu trữ puppet đã được thêm vào hệ thống CentOS 8.
Vô hiệu hóa SELinux
Để vô hiệu hóa SELinux, bạn có thể chỉnh sửa cấu hình '/etc/sysconfig/selinux' bằng trình soạn thảo vim.
Bây giờ hãy thay đổi cấu hình giá trị 'SELINUX' thành "disabled".
Lưu và đóng, sau đó khởi động lại máy chủ.
Sau khi bạn đã đăng nhập lại, hãy kiểm tra trạng thái SELinux bằng lệnh sau.
Và bạn sẽ nhận được trạng thái SELinux bị vô hiệu hóa.
Cài đặt puppetserver bằng lệnh dnf bên dưới.
Sau đó, chúng ta cần chỉnh sửa 'init settings' cho puppetserver và thay đổi phân bổ bộ nhớ tùy thuộc vào RAM mà chúng ta có.
Sửa thiết lập init của puppetserver nằm tại '/etc/sysconfig/puppetserver' bằng trình soạn thảo vim.
Bây giờ hãy thay đổi cấu hình 'JAVA_ARGS' để phân bổ bộ nhớ tùy thuộc vào RAM của bạn.
Lưu và đóng.
Tiếp theo, hãy vào thư mục '/etc/puppetlabs' và sửa tệp cấu hình puppet 'puppet.conf'.
Trong cấu hình chính, hãy định nghĩa tên thay thế DNS với FQDN của chính server.
Sau đó, định nghĩa cấu hình máy chủ chính của puppet như bên dưới.
Lưu và đóng.
Bây giờ hãy thêm dịch vụ puppetserver vào thời gian khởi động và khởi động dịch vụ.
Pupserver đang hoạt động trên máy chủ CentOS 8 với cổng TCP mặc định là '8140'.
Thêm cổng puppetserver '8140' vào tường lửa bằng lệnh sau.
Và kết quả là quá trình cài đặt và cấu hình puppet master đã hoàn tất thành công.
Đăng nhập vào máy chủ 'agent01' và cài đặt gói puppet-agent bằng lệnh dnf bên dưới.
Sau đó, hãy vào thư mục '/etc/puppetlabs' và chỉnh sửa tệp cấu hình 'puppet.conf' bằng trình soạn thảo vim.
Thay đổi cấu hình 'certname' và 'server' bằng cấu hình của riêng bạn và dán vào cấu hình.
Lưu và đóng.
Tiếp theo, khởi động dịch vụ puppet và đăng ký tác nhân Puppet với máy chủ chính bằng lệnh sau.
Và bạn sẽ nhận được kết quả như bên dưới.
Hiện tại, tác nhân puppet đã hoạt động và đang cố gắng đăng ký với máy chủ chính Puppet.
Bây giờ, hãy quay lại máy chủ chính Puppet và kiểm tra chứng chỉ đang chờ xử lý yêu cầu.
Và bạn sẽ nhận được chứng chỉ 'agent01.hakase-labs.io' trong danh sách.
Bây giờ hãy ký chứng chỉ 'agent01' bằng lệnh bên dưới.
Và bây giờ, tác nhân puppet đã được đăng ký với máy chủ chính.
Và bạn sẽ nhận được kết quả như bên dưới.
Kết quả là, tác nhân Puppet đã kéo cấu hình từ puppet master và áp dụng nó vào máy chủ mà không có bất kỳ lỗi nào.
Và đối với bước này, chúng ta sẽ kiểm tra thiết lập của mình bằng cách tạo manifest puppet đầu tiên để cài đặt gói httpd.
Đi tới thư mục '/etc/puppetlabs/code/environments/production/manifests' và tạo tệp manifest puppet đầu tiên 'httpd.pp'.
Dán cấu hình sau.
Lưu và đóng.
Bây giờ hãy đến nút tác nhân Puppet 'agento01' và chạy lệnh sau.
Và bạn sẽ thấy kết quả như bên dưới.
Tác nhân Puppet đã kéo cấu hình mới từ máy chủ Puppet để cài đặt gói httpd và khởi động dịch vụ httpd.
Trên nút 'agent01', hãy kiểm tra trạng thái dịch vụ httpd và kiểm tra cổng HTTP '80'
Và bạn sẽ thấy dịch vụ httpd đang hoạt động trên máy chủ 'agent01' với cổng HTTP mặc định là '80'. Gói httpd đã được cài đặt thông qua bản kê khai puppet mà chúng tôi đã tạo ở trên cùng.
Và kết quả là quá trình cài đặt và cấu hình Puppet master và agent trên máy chủ CentOS 8 đã hoàn tất thành công.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách cài đặt Puppet trên CentOS 8. Tôi sẽ cài đặt và cấu hình một máy chủ CentOS 8 làm 'master' của puppet và máy chủ còn lại làm 'agent'.
Điều kiện tiên quyết
- 2 hoặc nhiều máy chủ CentOS 8
- Quyền root
- Cài đặt trước Puppet
- Cài đặt và cấu hình máy chủ Puppet
- Cài đặt và cấu hình Puppet Agent
- Xác minh cấu hình Puppet Agent
- Tạo Puppet Manifest đầu tiên
Bước 1 - Cài đặt trước Puppet
Trong bước đầu tiên này, chúng ta sẽ chuẩn bị cả máy chủ chính và máy chủ agent cho cài đặt puppet. Chúng ta sẽ thiết lập hosts và FQDN của máy chủ, thiết lập máy chủ NTP và thêm kho lưu trữ puppet cho máy chủ CentOS 8.Thiết lập Hostname
Đầu tiên, chúng ta sẽ thiết lập hosts và FQDN cho cả hai máy chủ. Người điều khiển rối sẽ có tên máy chủ là 'master' với FQDN là 'master.hakase-labs.io', và tác nhân sẽ có tên máy chủ là 'agent01' với FQDN là 'agent01.hakase-labs.io'.
Thiết lập tên máy chủ bằng lệnh 'hostnamectl' bên dưới.
Mã:
hostnamectl set-hostname hostname
Mã:
vim /etc/hosts
Mã:
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
Bây giờ hãy khởi động lại dịch vụ có tên máy chủ để áp dụng tên máy chủ và FQDN mới.
Mã:
systemctl restart systemd-hostnamed
Mã:
hostname
hostname -f
Thiết lập máy chủ NTP
Đối với máy chủ NTP, chúng ta sẽ sử dụng "chrony" cho các máy chủ của mình.
Cài đặt chrony bằng lệnh dnf bên dưới.
Mã:
dnf install chrony
Mã:
vim /etc/chrony.conf
Sao chép tất cả máy chủ NTP khả dụng của quốc gia bạn và dán vào tệp 'chrony.conf' như bên dưới.
Mã:
máy chủ 0.id.pool.ntp.org iburst
máy chủ 1.id.pool.ntp.org iburst
máy chủ 2.id.pool.ntp.org iburst
máy chủ 3.id.pool.ntp.org iburst
Bây giờ hãy khởi động dịch vụ chronyd và thêm nó vào thời gian khởi động.
Mã:
systemctl start chronyd
systemctl enable chronyd
Thêm kho lưu trữ Puppet cho CentOS 8
Đối với kho lưu trữ puppet CentOS 8 server, bạn có thể cài đặt thủ công bằng lệnh rpm như bên dưới.
Mã:
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Mã:
dnf repolist
Vô hiệu hóa SELinux
Để vô hiệu hóa SELinux, bạn có thể chỉnh sửa cấu hình '/etc/sysconfig/selinux' bằng trình soạn thảo vim.
Mã:
vim /etc/sysconfig/selinux
Mã:
SELINUX=disabled
Mã:
sudo reboot
Mã:
sestatus
Bước 2 - Cài đặt và cấu hình Puppetserver
Trong bước này, chúng ta sẽ cài đặt và cấu hình puppetserver trên nút chính.Cài đặt puppetserver bằng lệnh dnf bên dưới.
Mã:
sudo dnf install puppetserver
Sửa thiết lập init của puppetserver nằm tại '/etc/sysconfig/puppetserver' bằng trình soạn thảo vim.
Mã:
vim /etc/sysconfig/puppetserver
Mã:
JAVA_ARGS="-Xms1g -Xmx1g ...."
Tiếp theo, hãy vào thư mục '/etc/puppetlabs' và sửa tệp cấu hình puppet 'puppet.conf'.
Mã:
cd /etc/puppetlabs/
vim puppet/puppet.conf
Mã:
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Mã:
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Bây giờ hãy thêm dịch vụ puppetserver vào thời gian khởi động và khởi động dịch vụ.
Mã:
systemctl enable puppetserver
systemctl start puppetserver
Thêm cổng puppetserver '8140' vào tường lửa bằng lệnh sau.
Mã:
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
Bước 3 - Cài đặt và cấu hình Puppet Agent
Sau khi cài đặt máy chủ Puppet master 'master.hakase-labs.io', chúng ta sẽ cài đặt một puppet agent trên máy chủ 'agent01'.Đăng nhập vào máy chủ 'agent01' và cài đặt gói puppet-agent bằng lệnh dnf bên dưới.
Mã:
sudo dnf install puppet-agent
Mã:
cd /etc/puppetlabs/
vim puppet/puppet.conf
Mã:
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Tiếp theo, khởi động dịch vụ puppet và đăng ký tác nhân Puppet với máy chủ chính bằng lệnh sau.
Mã:
/opt/puppetlabs/bin/puppet resource service puppet sure=running enable=true
Hiện tại, tác nhân puppet đã hoạt động và đang cố gắng đăng ký với máy chủ chính Puppet.
Bây giờ, hãy quay lại máy chủ chính Puppet và kiểm tra chứng chỉ đang chờ xử lý yêu cầu.
Mã:
/opt/puppetlabs/bin/puppetserver ca list
Bây giờ hãy ký chứng chỉ 'agent01' bằng lệnh bên dưới.
Mã:
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
Bước 4 - Xác minh cấu hình tác nhân Puppet
Bây giờ hãy xác minh cấu hình tác nhân Puppet và kiểm tra kết nối giữa tác nhân puppet và máy chủ chính bằng lệnh sau.
Mã:
/opt/puppetlabs/bin/puppet agent --test
Kết quả là, tác nhân Puppet đã kéo cấu hình từ puppet master và áp dụng nó vào máy chủ mà không có bất kỳ lỗi nào.
Bước 5 - Tạo Manifest đầu tiên
Ở giai đoạn này, quá trình cài đặt và cấu hình Puppet cho master và agent đã hoàn tất.Và đối với bước này, chúng ta sẽ kiểm tra thiết lập của mình bằng cách tạo manifest puppet đầu tiên để cài đặt gói httpd.
Đi tới thư mục '/etc/puppetlabs/code/environments/production/manifests' và tạo tệp manifest puppet đầu tiên 'httpd.pp'.
Mã:
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
Mã:
node 'agent01.hakase-labs.io' {
gói { 'httpd':
đảm bảo => "đã cài đặt",
}
dịch vụ { 'httpd':
đảm bảo => đang chạy,
bật => true
}
}
Bây giờ hãy đến nút tác nhân Puppet 'agento01' và chạy lệnh sau.
Mã:
/opt/puppetlabs/bin/puppet agent --test
Tác nhân Puppet đã kéo cấu hình mới từ máy chủ Puppet để cài đặt gói httpd và khởi động dịch vụ httpd.
Trên nút 'agent01', hãy kiểm tra trạng thái dịch vụ httpd và kiểm tra cổng HTTP '80'
Mã:
systemctl status httpd
netstat -plntu
Và kết quả là quá trình cài đặt và cấu hình Puppet master và agent trên máy chủ CentOS 8 đã hoàn tất thành công.