Cách thiết lập Puppet Master và Agent trên CentOS 8

theanh

Administrator
Nhân viên
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
  • 2 hoặc nhiều máy chủ CentOS 8
  • Quyền root
Những gì chúng ta sẽ làm:
  • 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
Sau đó, chỉnh sửa tệp '/etc/hosts' để cấu hình máy chủ FQDN.
Mã:
vim /etc/hosts
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 đó.
Mã:
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
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.
Mã:
systemctl restart systemd-hostnamed
Sau đó, kiểm tra tên máy chủ và FQDN bằng lệnh sau.
Mã:
hostname
hostname -f
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.
Mã:
dnf install chrony
Sau đó, chỉnh sửa cấu hình chrony '/etc/chrony.conf' bằng trình soạn thảo vim.
Mã:
vim /etc/chrony.conf
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.
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
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.
Mã:
systemctl start chronyd
systemctl enable chronyd
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.
Mã:
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
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.
Mã:
dnf repolist
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.
Mã:
vim /etc/sysconfig/selinux
Bây giờ hãy thay đổi cấu hình giá trị 'SELINUX' thành "disabled".
Mã:
SELINUX=disabled
Lưu và đóng, sau đó khởi động lại máy chủ.
Mã:
sudo reboot
Sau khi bạn đã đăng nhập lại, hãy kiểm tra trạng thái SELinux bằng lệnh sau.
Mã:
sestatus
Và bạn sẽ nhận được trạng thái SELinux bị vô hiệu hóa.

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
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.
Mã:
vim /etc/sysconfig/puppetserver
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.
Mã:
JAVA_ARGS="-Xms1g -Xmx1g ...."
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'.
Mã:
cd /etc/puppetlabs/
vim 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.
Mã:
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Sau đó, định nghĩa cấu hình máy chủ chính của puppet như bên dưới.
Mã:
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
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ụ.
Mã:
systemctl enable puppetserver
systemctl start puppetserver
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.
Mã:
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
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.


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
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.
Mã:
cd /etc/puppetlabs/
vim puppet/puppet.conf
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.
Mã:
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
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.
Mã:
/opt/puppetlabs/bin/puppet resource service puppet sure=running enable=true
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.
Mã:
/opt/puppetlabs/bin/puppetserver ca list
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.
Mã:
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
Và bây giờ, tác nhân puppet đã được đăng ký với máy chủ chính.


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
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.

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
Dán cấu hình sau.
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
 }
}
Lưu và đóng.



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
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'
Mã:
systemctl status httpd
netstat -plntu
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.

Tham khảo​

 
Back
Bên trên