Cách cài đặt Puppet Server và Agent trên AlmaLinux 9

theanh

Administrator
Nhân viên
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 Ruby.

Hướng dẫn này chỉ cho bạn cách cài đặt Puppet Server và Agent trên máy chủ AlmaLinux. Chúng tôi cũng sẽ chỉ cho bạn cách bắt đầu với công cụ quản lý cấu hình Puppet bằng cách tạo triển khai Puppet đầu tiên cho LAMP Stack.

Điều kiện tiên quyết​

Đảm bảo rằng bạn có những điều sau trước khi bắt đầu:
  • 2 máy chủ AlmaLinux - Ví dụ này sử dụng máy chủ AlmaLinux 8:
    hostname: pp-server - Địa chỉ IP: 192.168.10.20 - Được sử dụng làm: Puppet Server
  • hostname: agent1 - Địa chỉ IP: 192.168.10.21 - Được sử dụng làm: Puppet Agent
[*] Người dùng không phải root có thể thực thi sudo để có được quyền root.

Thiết lập /etc/hosts Tệp​

Trước khi bạn chuyển sang cài đặt Puppet, bạn nên sử dụng tên miền cục bộ hoặc FQDN (Tên miền đủ điều kiện) thay vì địa chỉ IP cho môi trường Puppet.

Trong ví dụ này, bạn sẽ sử dụng fqdn hệ thống cho cả Máy chủ và Đại lý Puppet. Mỗi máy chủ có thể truy cập thông qua fqdn và tên máy chủ hệ thống.

Để bắt đầu, hãy chạy lệnh sau để thiết lập fqdn trên mỗi máy chủ.

Chạy lệnh này trên Máy chủ Puppet.
Mã:
sudo hostnamectl set-hostname pp-server.hwdomain.lan
Và lệnh này nằm trên Agent máy.
Mã:
sudo hostnamectl set-hostname agent1.hwdomain.lan
Mở tệp /etc/hosts bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/hosts
Chèn cấu hình sau và đảm bảo thay đổi địa chỉ IP chi tiết và fqdn.
Mã:
192.168.10.20 pp-server.hwdomain.lan pp-server
192.168.10.21 agent1.hwdomain.lan agent1
Lưu và đóng tệp.

Tiếp theo, chạy lệnh sau để xác minh fqdn trên cả Puppet Server và Agent.
Mã:
sudo hostname -f
Bạn sẽ nhận được fqdn trên Puppet Server dưới dạng pp-server.hwdomain.lan và cho máy Agent agent1.hwdomain.lan.

Cuối cùng, hãy chạy lệnh ping bên dưới để đảm bảo rằng mỗi tên máy chủ và fqdn được trỏ đến đúng địa chỉ IP nội bộ của máy chủ.
Mã:
ping -c3 pp-server.hwdomain.lan
ping -c3 pp-server
Mã:
ping -c3 agent1.hwdomain.lan
ping -c3 agent1
Thiết lập tên máy chủ và fqdn trên Máy chủ Puppet.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22352%22%3E%3C/svg%3E


Thiết lập tên máy chủ và fqdn trên Puppet Agent.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E

Cài đặt Puppet​

Trong phần này, bạn sẽ bắt đầu cài đặt Máy chủ Puppet và Agent. Bạn sẽ thiết lập kho lưu trữ Puppet trên cả Máy chủ Puppet và Agent, sau đó cài đặt gói Puppet tương ứng vào từng máy.

Thêm kho lưu trữ Puppet​

Hãy đảm bảo chạy lệnh này trên cả Máy chủ Puppet và Agent.

Thêm kho lưu trữ Puppet vào cả Máy chủ Puppet và Agent bằng lệnh sau.
Mã:
sudo rpm -Uvh https://yum.puppet.com/puppet7-release-el-8.noarch.rpm
Sau khi kho lưu trữ được thêm vào, hãy chạy lệnh dnf bên dưới để xác minh danh sách các kho lưu trữ khả dụng trên cả hai máy chủ.
Mã:
sudo dnf repolist
Bạn sẽ thấy kho lưu trữ Puppet trong danh sách kho lưu trữ.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22284%22%3E%3C/svg%3E

Cài đặt và cấu hình máy chủ Puppet​

Sau khi kho lưu trữ được thêm vào, bạn có thể bắt đầu Cài đặt Puppet Server.

Đầu tiên, hãy chạy lệnh dnf bên dưới để cài đặt gói puppetserver trên pp-server.
Mã:
sudo dnf install puppetserver
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22408%22%3E%3C/svg%3E


Ngoài ra, hãy nhập y khi muốn thêm khóa GPG của kho lưu trữ Puppet.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22278%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy chạy lệnh sau để tải cấu hình hệ thống Puppet vào hệ thống của bạn. Sau đó, hãy xác minh biến môi trường PATH để đảm bảo rằng thư mục bin của Puppet Server đã được thêm vào.
Mã:
source /etc/profile.d/puppet-agent.sh
echo $PATH
Nếu thành công, bạn sẽ thấy thư mục /opt/puppetlabs/bin khả dụng trên PATH của hệ thống.

Tiếp theo, hãy chạy lệnh sau để định vị tệp nhị phân puppetserver và xác minh puppsetserver phiên bản.
Mã:
which puppetserver
puppetserver -v
Trong đầu ra này, bạn sẽ thấy tệp nhị phân puppetserver có sẵn tại /opt/puppetlabs/bin/puppetserver. Và puppetserver hiện tại được cài đặt là v7.11.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22558%22%20height=%22247%22%3E%3C/svg%3E

Cài đặt Puppet Agent​

Bạn đã sẵn sàng cài đặt Puppet Agent trên máy agent1.hwdomain.lan.

Trên máy Agent, hãy chạy lệnh sau để cài đặt gói puppet-agent. Nhập y khi được nhắc và nhấn ENTER.
Mã:
sudo dnf install puppet-agent

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22214%22%3E%3C/svg%3E


Ngoài ra, nhập y một lần nữa để thêm khóa GPG của kho lưu trữ Puppet.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22273%22%3E%3C/svg%3E


Sau khi puppet-agent được cài đặt, hãy chạy lệnh sau để tải cấu hình hệ thống Puppet vào phiên hiện tại của bạn. Sau đó, hãy kiểm tra biến môi trường PATH của hệ thống.
Mã:
source /etc/profile.d/puppet-agent.sh
echo $PATH
Nếu cấu hình hệ thống Puppet được tải, bạn sẽ thấy thư mục /opt/puppetlabs/bin có sẵn trên PATH của hệ thống.

Chạy lệnh sau để định vị tệp nhị phân puppet và xác minh puppet-agent phiên bản.
Mã:
which puppet
puppet -v
Bạn sẽ thấy tệp nhị phân puppet nằm ở /opt/puppetlabs/bin/puppet và phiên bản puppet-agent là v7.11.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22611%22%20height=%22314%22%3E%3C/svg%3E


Cuối cùng, chạy lệnh systemctl bên dưới để khởi động và kích hoạt dịch vụ puppet trên máy Agent.
Mã:
sudo systemctl start puppet
sudo systemctl enable puppet
Sau đó, chạy lệnh sau để đảm bảo dịch vụ puppet chạy.
Mã:
sudo systemctl status puppet
Nếu mọi việc diễn ra tốt đẹp, bạn sẽ thấy đầu ra như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22217%22%3E%3C/svg%3E

Cấu hình Puppet Server​

Sau khi cài đặt cả Puppet Server và Agent, bước tiếp theo bạn sẽ cấu hình cài đặt Puppet Server. Bạn sẽ thiết lập tên máy chủ mặc định cho Puppet Server, thiết lập runinterval cho các tác nhân, sau đó khởi động và kích hoạt dịch vụ Puppe Server.

Đầu tiên, hãy mở tệp /etc/sysconfig/puppetserver bằng trình soạn thảo vim.
Mã:
sudo nano /etc/sysconfig/puppetserver
Trong tham số JAVA_ARGS, hãy tăng phân bổ bộ nhớ tối đa cho Puppet Server. Cấu hình này phụ thuộc vào bộ nhớ hệ thống hiện tại của bạn. Trong ví dụ này, Puppet Server có 4GB bộ nhớ và sẽ phân bổ 2GB cho Puppet Server.
Mã:
# Modify this if you'd like to change the memory allocation, enable JMX, etc
JAVA_ARGS="-Xms2g -Xmx2g"
Lưu tệp và thoát khỏi trình chỉnh sửa sau khi hoàn tất.

Bây giờ, hãy chạy lệnh puppet bên dưới để thay đổi tên máy chủ mặc định thành pp-server.hwdomain.lan và runinterval thành 1 giờ. Tham số runinterval có nghĩa là tần suất Agent áp dụng danh mục Puppet.
Mã:
puppet config set server pp-server.hwdomain.lan --section main
puppet config set runinterval 1h --section main
Tiếp theo, chạy lệnh sau để thiết lập môi trường mặc định cho sản xuất và tên thay thế cho Máy chủ Puppet thành pp-serverpp-server.hwdomain.lan.
Mã:
puppet config set environment production --section server
puppet config set dns_alt_names pp-server,pp-server.hwdomain.lan --section server




Sau khi các lệnh puppet đó được thực thi, các thiết lập sẽ được lưu trữ tại cấu hình Puppet mặc định /etc/puppetlabs/puppet/puppet.conf. Chạy lệnh sau để hiển thị nội dung tệp /etc/puppetlabs/puppet/puppet.conf.
Mã:
cat /etc/puppetlabs/puppet/puppet.conf
Bạn sẽ nhận được cấu hình tương tự như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22706%22%20height=%22413%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để tải lại Trình quản lý systemd.
Mã:
sudo systemctl daemon-reload
Sau đó, hãy khởi động và kích hoạt dịch vụ puppetserver bằng lệnh systemctl sau.
Mã:
sudo systemctl start puppetserver
sudo systemctl enable puppetserver
Sau khi puppetserver được khởi động, hãy chạy lệnh sau để xác minh nó.
Mã:
sudo systemctl status puppetserver
Nếu puppetserver đang chạy, bạn sẽ nhận được kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22186%22%3E%3C/svg%3E

Cấu hình Firewalld trên Puppet Server​

Sau khi cấu hình Puppet Server, bạn phải mở cổng 8140 trên Puppet Server và cho phép mạng của bạn truy cập vào cổng đó. Bây giờ chúng ta sẽ chuyển sang thiết lập firewalld và mở cổng 8140 trên pp-server.hwdomain.lan.

Chạy lệnh sau để thêm mạng cục bộ của bạn vào firewalld và mở cổng TCP 8140 mà Puppet Server sẽ sử dụng.
Mã:
sudo firewall-cmd --add-source=192.168.10.0/24 --permanent
sudo firewall-cmd --add-port=8140/tcp --permanent
Sau đó, tải lại firewalld và xác minh danh sách các quy tắc đã bật bằng cách sử dụng lệnh sau lệnh.
Mã:
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Bạn sẽ thấy mạng192.168.10.0/24 được thêm vào tường lửa và cổng 8140 khả dụng trên tường lửa.

Đăng ký Puppet Agent vào Máy chủ Puppet​

Phần này đề cập đến việc thêm và đăng ký Puppet Agent vào Máy chủ Puppet. Bạn sẽ đăng ký agent.hwdomain.lan với Puppet Server pp-server.hwdomain.lan.

Để thực hiện việc đó, hãy làm theo các bước sau:
  • Xác định Puppet Server mặc định ở phía tác nhân và khởi động lại Puppet Agent.
  • Khởi tạo yêu cầu ký chứng chỉ từ Puppet Agent.
  • Ký yêu cầu chứng chỉ trên Puppet Server.
  • Xác minh danh sách chứng chỉ đã ký.
Xác định Puppet Server mặc định mà tác nhân có thể kết nối và ca_server sẽ được sử dụng để xác minh tác nhân. Trong ví dụ này, Puppet Server đang chạy trong fqdn pp-server.hwdomain.lan.
Mã:
puppet config set server pp-server.hwdomain.lan --section agent
puppet config set ca_server pp-server.hwdomain.lan --section agent
Chạy lệnh sau để xác minh cấu hình Puppet Agent /etc/puppetlabs/puppet/puppet.conf. Đảm bảo rằng bạn có cấu hình serverca_server chính xác.
Mã:
cat /etc/puppetlabs/puppet/puppet.conf
Bạn sẽ nhận được kết quả tương tự:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22297%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để khởi động lại dịch vụ puppet trên máy Agent và xác minh trạng thái của nó nó.
Mã:
sudo systemctl restart puppet
sudo systemctl status puppet
Nếu bạn có cấu hình Puppet Agent phù hợp, bạn sẽ thấy máy chủ Puppet có trạng thái đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22200%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh sau để khởi tạo Puppet Agent máy.
Mã:
puppet ssl bootstrap
Điều này sẽ tạo ra một chứng chỉ mới trên máy Agent và xác thực với Puppet Server.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22131%22%3E%3C/svg%3E


Di chuyển đến Puppet Server và chạy lệnh sau để xác minh danh sách các chứng chỉ (cả đang chờ xử lý và đã chấp nhận). sau đó, chấp nhận và ký yêu cầu chứng chỉ từ máy Agent agent1.hwdomain.lan.
Mã:
puppetserver ca list --all
puppetserver ca sign --certname agent1.hwdomain.lan
Sau khi Puppet Server ký chứng chỉ, bạn sẽ thấy thông báo "Đã ký thành công yêu cầu chứng chỉ cho agent1.hwdomain.lan".





Sau đó, trên máy Puppet Agent, bạn sẽ thấy thông báo "Thông báo: Đã hoàn tất khởi tạo SSL".

Cuối cùng, hãy kiểm tra lại danh sách các chứng chỉ đã ký trên Máy chủ Puppet bằng lệnh sau.
Mã:
puppetserver ca list --all
Nếu mọi thứ thành công, bạn sẽ thấy chứng chỉ máy agent1.hwdomain.lan trong phần Chứng chỉ đã ký.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2292%22%3E%3C/svg%3E


Bây giờ, bạn đã cài đặt và cấu hình thành công Puppet Server và Agent trên hai máy chủ AlmaLinux khác nhau. Trong bước tiếp theo, bạn sẽ tạo bản kê khai Puppet đầu tiên để triển khai tự động ứng dụng của mình.

Tạo bản kê khai Puppet đầu tiên​

Phần này dành riêng làm điểm khởi đầu để sử dụng quản lý cấu hình cas Puppet nhằm tự động triển khai ứng dụng của bạn. Bạn sẽ tạo bản kê khai Puppet đầu tiên để cài đặt LAMP Stack trên Puppet Agent agent1.hwdomain.lan.

Hãy đảm bảo chạy lệnh sau và tạo bản kê khai Puppet trên Puppet Server.

Đi đến thư mục /etc/puppetlabs/code/environments/production/ và tạo một thư mục modules mới cho dự án modules/lamp/ của bạn.
Mã:
cd /etc/puppetlabs/code/environments/production/
mkdir -p modules/lamp/{manifests,files}
Di chuyển đến thư mục modules/lamp/ và tạo một tệp mới manifests/init.pp bằng cách sử dụng nano biên tập viên.
Mã:
cd modules/lamp/
nano manifests/init.pp
Chèn tập lệnh Puppet sau vào tệp. Lệnh này sẽ cài đặt các gói LAMP Stack trên máy tác nhân, đảm bảo các dịch vụ LAMP stack đang chạy và được bật, tạo tệp index.html tùy chỉnh vào thư mục /var/www/html/index.html và tạo tệp PHPINFO mới /var/www/html/info.php.
Mã:
class lamp {

 Package { ensure => 'installed' }
 $lamppackages = [ 'httpd', 'mariadb-server', 'php' ]
 package { $lamppackages: }

 Service { ensure => 'running', enable => 'true'}
 $lampsvc = [ 'httpd', 'mariadb' ]
 service { $lampsvc: }

 file { '/var/www/html/index.html':
 ensure => file,
 content => "[HEADING=1]Welcome to httpd - Managed by Puppet[/HEADING]",
 mode => '0644',
 }

 file { '/var/www/html/info.php':
 ensure => file,
 content => "",
 mode => '0644',
 }

}
Lưu và đóng tệp khi hoàn tất.

Tiếp theo, di chuyển lại đến thư mục /etc/puppetlabs/code/environments/production/ và tạo một tệp khác manifests/sites.pp bằng nano biên tập viên.
Mã:
cd /etc/puppetlabs/code/environments/production/
nano manifests/sites.pp
Xác định Puppet Agent và mô-đun mà bạn muốn sử dụng. Trong ví dụ này, bạn sẽ triển khai mô-đun lamp tới máy Agent agent1.hwdomain.lan.
Mã:
node 'agent1.hwdomain.lan' {
 include lamp
}
Lưu tệp và thoát khỏi trình chỉnh sửa.

Áp dụng Puppet Manifest trên Agent​

Trên máy Agent, hãy chạy lệnh sau để kéo và áp dụng triển khai.
Mã:
puppet agent -t
Bây giờ, Puppet Agent sẽ truy xuất triển khai danh mục từ Puppet Server, lưu trữ tạm thời trên máy Agent, sau đó áp dụng triển khai.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E


Sau khi mọi thứ hoàn tất, hãy chạy lệnh systemctl bên dưới để xác minh cả httpd và MariaDB dịch vụ.

Kiểm tra dịch vụ httpd để đảm bảo dịch vụ đang chạy và được bật.
Mã:
sudo systemctl is-enabled httpd
sudo systemctl status httpd

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22363%22%3E%3C/svg%3E


Kiểm tra dịch vụ MariaDB để đảm bảo dịch vụ đang chạy và đã bật.
Mã:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22257%22%3E%3C/svg%3E


Khởi chạy trình duyệt web của bạn và truy cập địa chỉ IP của Puppet Agent (ví dụ: http://192.168.10.21/). Nếu triển khai thành công, bạn sẽ nhận được trang index.html tùy chỉnh như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22115%22%3E%3C/svg%3E


Bây giờ hãy điều hướng đến đường dẫn URL /info.php (ví dụ: http://192.168.10.21/info.php). Nếu PHP được cài đặt, bạn sẽ nhận được trang chi tiết của PHPINFO như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22588%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng, bạn đã hoàn tất cài đặt Puppet Server và Agent trên máy chủ AlmaLinux của mình. Bạn cũng đã tạo bản kê khai Puppet đầu tiên để triển khai ngăn xếp LAMP, đây là điểm khởi đầu tốt. Bây giờ bạn có thể tạo bản kê khai Puppet của riêng mình để triển khai các ứng dụng của mình.
 
Back
Bên trên