Cách cài đặt Puppet 4 trên Ubuntu 16.04
Puppet là một công cụ quản lý cấu hình giúp administrator hệ thống tự động hóa việc cung cấp, cấu hình và quản lý cơ sở hạ tầng server . Lập kế hoạch trước và sử dụng các công cụ quản lý cấu hình như Puppet có thể cắt giảm thời gian lặp lại các việc cơ bản và giúp đảm bảo cấu hình nhất quán và chính xác trên cơ sở hạ tầng của bạn.Puppet có hai loại, puppet Enterprise và puppet open-souce . Cả hai đều chạy trên hầu hết các bản phân phối Linux, các nền tảng UNIX khác nhau và Windows.
Trong hướng dẫn này, ta sẽ trình bày cách cài đặt open-souce Puppet 4 trong cài đặt tác nhân chủ trên Ubuntu 16.04. Trong cài đặt này, server chính của Puppet — chạy phần mềm Server Puppet — được dùng để kiểm soát tất cả các server khác của bạn, được gọi là các node tác nhân Puppet .
Yêu cầu
Để làm theo hướng dẫn này, bạn cần ba server Ubuntu 16.04 , mỗi server có user không phải root có quyền sudo
. Bạn có thể tìm hiểu thêm về cách cài đặt user có quyền sudo trong hướng dẫn Cài đặt server ban đầu với Ubuntu 16.04 của ta .
Một bậc thầy về puppet
Một server sẽ là server Puppet . Server puppet sẽ chạy Server puppet , server này sử dụng nhiều tài nguyên và yêu cầu:
- ít nhất 4GB bộ nhớ
- ít nhất 2 lõi CPU
Để quản lý các cơ sở hạ tầng lớn hơn, Puppet master sẽ yêu cầu nhiều tài nguyên hơn.
Hai đặc vụ puppet
Hai server còn lại sẽ là các node của tác nhân Puppet , do Puppet master quản lý. Ta sẽ gọi chúng là db1
và web1
.
Khi ba server này hoạt động, bạn đã sẵn sàng bắt đầu.
Bước 1 - Cấu hình / etc / hosts
Server chính của puppet và các node mà chúng quản lý cần có khả năng giao tiếp với nhau. Trong hầu hết các trường hợp, điều này sẽ được thực hiện bằng cách sử dụng DNS, được cấu hình trên dịch vụ được lưu trữ bên ngoài hoặc trên các server DNS tự lưu trữ được duy trì như một phần của cơ sở hạ tầng.
Tuy nhiên, DNS là lĩnh vực chuyên môn của riêng nó, ngay cả trên các dịch vụ được lưu trữ, vì vậy để tập trung vào các nguyên tắc cơ bản của chính Puppet và loại bỏ sự phức tạp tiềm ẩn trong việc khắc phục sự cố khi ta đang học, trong hướng dẫn này, ta sẽ sử dụng /etc/hosts
thay vào đó.
Trên mọi máy
Trên mỗi máy, hãy chỉnh sửa file /etc/hosts
. Ở cuối file , chỉ định server chính của Puppet như sau, thay thế địa chỉ IP cho server Puppet của bạn :
- sudo nano /etc/hosts
. . . puppet_ip_address puppet . . .
Khi bạn hoàn tất, hãy lưu và thoát.
Lưu ý: Theo mặc định, các nhân viên của Puppet sẽ tìm kiếm bậc thầy Puppet tại puppet
để giúp cài đặt Puppet dễ dàng hơn. Điều này nghĩa là ta phải sử dụng tên puppet
trong /etc/hosts
. Nếu puppet
không giải quyết được rối chủ, các đặc vụ sẽ không thể liên hệ nếu không cấu hình giá trị server
trong puppet .conf của tác nhân .
Bước 2 - Cài đặt server puppet
Puppet Server là phần mềm đẩy cấu hình từ Puppet master đến các server khác. Nó chỉ chạy trên Puppet master; các server khác sẽ chạy Tác nhân puppet .
Lưu ý: Trình quản lý gói Ubuntu có chứa các gói cho Puppet, nhưng nhiều administrator cần quản lý nhiều hệ điều hành và version . Trong trường hợp này, làm việc với các repository Puppet Labs chính thức có thể đơn giản hóa việc quản trị bằng cách cho phép bạn duy trì cùng một version Puppet trên tất cả các hệ thống.
Ta sẽ kích hoạt repository bộ sưu tập Puppet Labs chính thức bằng các lệnh sau:
- curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
- sudo dpkg -i puppetlabs-release-pc1-xenial.deb
- sudo apt-get update
Khi apt-get update
hoàn tất, đảm bảo ta sẽ lấy từ repository Puppet Labs, ta sẽ cài đặt gói trình puppetserver
:
- sudo apt-get install puppetserver
Nhấn Y
để tiếp tục. Sau khi cài đặt xong và trước khi khởi động server , ta sẽ dành một chút thời gian để cấu hình bộ nhớ.
Cấu hình phân bổ bộ nhớ
Theo mặc định, Server puppet được cấu hình để sử dụng 2 GB RAM. Bạn có thể tùy chỉnh cài đặt này dựa trên dung lượng bộ nhớ trống của server chính và số lượng nút tác nhân mà nó sẽ quản lý.
Để tùy chỉnh nó, hãy mở /etc/default/puppetserver
:
- sudo nano /etc/default/puppetserver
Sau đó, tìm dòng JAVA_ARGS
và sử dụng các tham số -Xms
và -Xmx
để đặt phân bổ bộ nhớ. Ta sẽ tăng lên 3 gigabyte:
JAVA_ARGS="-Xms3g -Xmx3g -XX:MaxPermSize=256m"
Lưu và thoát khi bạn hoàn tất.
Mở firewall
Khi ta khởi động Server puppet , nó sẽ sử dụng cổng 8140 để giao tiếp, vì vậy ta sẽ đảm bảo nó đang mở:
- sudo ufw allow 8140
Tiếp theo, ta sẽ khởi động server Puppet .
Khởi động server puppet
Ta sẽ sử dụng systemctl
để khởi động server Puppet :
- sudo systemctl start puppetserver
Điều này sẽ mất một thời gian để hoàn thành.
Khi ta quay lại dấu nhắc lệnh, ta sẽ xác minh ta đã thành công vì systemctl
không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ:
- sudo systemctl status puppetserver
Ta sẽ thấy một dòng có nội dung “hoạt động (đang chạy)” và dòng cuối cùng sẽ giống như sau:
OutputDec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.
Bây giờ ta đã đảm bảo server đang chạy, ta sẽ cấu hình nó để bắt đầu khi server khởi động :
- sudo systemctl enable puppetserver
Với server đang chạy, bây giờ ta đã sẵn sàng cài đặt Puppet Agent trên hai máy tác nhân, db1
và web1
.
Bước 3 - Cài đặt tác nhân puppet
Phần mềm tác nhân Puppet phải được cài đặt trên bất kỳ server nào mà server Puppet sẽ quản lý. Trong hầu hết các trường hợp, điều này sẽ bao gồm mọi server trong cơ sở hạ tầng của bạn.
Lưu ý: Tác nhân Puppet có thể chạy trên tất cả các bản phân phối Linux chính, một số nền tảng UNIX và Windows. Hướng dẫn cài đặt khác nhau trên mỗi hệ điều hành. Hướng dẫn cài đặt Puppet agent trên CentOS có sẵn tại đây và bạn có thể tìm thấy hướng dẫn cho bộ mục tiêu cài đặt hoàn chỉnh trong Hướng dẫn sử dụng Puppet Reference .
Bật repository Puppet Labs chính thức
Trước tiên, ta sẽ kích hoạt repository bộ sưu tập Puppet Labs chính thức bằng các lệnh sau:
- wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
- sudo dpkg -i puppetlabs-release-pc1-xenial.deb
- sudo apt-get update
Cài đặt gói tác nhân Puppet
Sau đó, ta sẽ cài đặt gói đặc vụ puppet-agent
:
- sudo apt-get install puppet-agent
Ta sẽ khởi động tác nhân và cho phép nó bắt đầu khi server khởi động :
- sudo systemctl start puppet
- sudo systemctl enable puppet
Cuối cùng, ta sẽ lặp lại các bước này trên web1
:
- wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
- sudo dpkg -i puppetlabs-release-pc1-xenial.deb
- sudo apt-get update
- sudo apt-get install puppet-agent
- sudo systemctl enable puppet
- sudo systemctl start puppet
Bây giờ cả hai nút tác nhân đều đang chạy phần mềm tác nhân Puppet , ta sẽ ký các certificate trên phần mềm Puppet .
Bước 4 - Ký certificate trên Puppet Master
Lần đầu tiên Puppet chạy trên một nút tác nhân, nó sẽ gửi một yêu cầu ký certificate đến Puppet master. Trước khi Server puppet có thể giao tiếp và điều khiển nút tác nhân, nó phải ký certificate của nút tác nhân cụ thể đó.
Liệt kê các certificate request hiện tại
Để liệt kê tất cả các certificate request chưa được ký, hãy chạy lệnh sau trên Puppet master:
- sudo /opt/puppetlabs/bin/puppet cert list
Phải có một yêu cầu cho mỗi server lưu trữ bạn cài đặt , giống như sau:
Output: "db1.localdomain" (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C "web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0
Dấu +
ở phía trước certificate cho biết nó đã được ký. Việc không có dấu cộng cho thấy certificate mới của ta chưa được ký.
Ký yêu cầu
Để ký một certificate request , hãy sử dụng lệnh puppet cert sign
, với tên server của certificate khi nó được hiển thị trong certificate request .
Ví dụ, để ký certificate của db1, bạn sẽ sử dụng lệnh sau:
- sudo /opt/puppetlabs/bin/puppet cert sign db1.localdomain
Đầu ra tương tự như ví dụ bên dưới cho biết rằng certificate request đã được ký:
Output:Notice: Signed certificate request for db.localdomain Notice: Removing file Puppet::SSL::CertificateRequest db1.localdomain at '/etc/puppetlabs/puppet/ssl/ca/requests/db1.localdomain.pem'
Hiện tại, Puppet master có thể giao tiếp và kiểm soát nút chứa certificate đã ký. Bạn cũng có thể ký tất cả các yêu cầu hiện tại cùng một lúc.
Ta sẽ sử dụng tùy chọn --all
để ký certificate còn lại:
- sudo /opt/puppetlabs/bin/puppet cert sign --all
Bây giờ tất cả các certificate đã được ký, Puppet có thể quản lý cơ sở hạ tầng. Bạn có thể tìm hiểu thêm về cách quản lý certificate trong cheat sheets Cách quản lý certificate Puppet 4 .
Bước 5 - Xác minh cài đặt
Puppet sử dụng ngôn ngữ dành riêng cho domain để mô tả cấu hình hệ thống và những mô tả này được lưu vào các file được gọi là “tệp kê khai”, có phần mở rộng là file .pp
. Bạn có thể tìm hiểu thêm về những điều này trong hướng dẫn Bắt đầu với Mã Rối: Thao tác và Mô-đun , nhưng hiện tại ta sẽ tạo một chỉ thị ngắn gọn để xác minh Server Puppet có thể quản lý Tác nhân như mong đợi.
Ta sẽ bắt đầu bằng cách tạo file kê khai mặc định, site.pp
, ở vị trí mặc định:
- sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp
Ta sẽ sử dụng ngôn ngữ dành riêng cho domain của Puppet để tạo file có tên là it_works.txt
trên các node tác nhân nằm trong tmp
chứa địa chỉ IP công cộng của server tác nhân và đặt quyền thành -rw-r--r--
:
- file {'/tmp/it_works.txt': # resource type file and filename
- ensure => present, # make sure it exists
- mode => '0644', # file permissions
- content => "It works on ${ipaddress_eth0}!\n", # Print the eth0 IP fact
- }
Theo mặc định Server puppet chạy các lệnh trong file kê khai của nó theo mặc định cứ sau 30 phút. Nếu file được loại bỏ, ensure
chỉ thị sẽ gây ra nó phải được tái tạo. Các mode
chỉ thị sẽ cài đặt cho phép file , và các content
chỉ thị thêm nội dung vào các chỉ thị.
Ta cũng có thể kiểm tra file kê khai trên một nút duy nhất bằng cách sử dụng puppet agent --test
. Lưu ý --test
không phải là một lá cờ cho một cuộc chạy khô khan; nếu thành công, nó sẽ thay đổi cấu hình của tác nhân.
Thay vì chờ đợi trình điều khiển Puppet áp dụng các thay đổi, ta sẽ áp dụng file kê khai ngay bây giờ trên db1
:
- sudo /opt/puppetlabs/bin/puppet agent --test
Đầu ra sẽ giống như sau:
OutputInfo: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for db1.localdomain Info: Applying configuration version '1481131595' Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0' Notice: Applied catalog in 0.03 seconds
Khi hoàn tất, ta sẽ kiểm tra nội dung file :
- cat /tmp/it_works.txt
Output It works on 203.0.113.0!
Lặp lại điều này cho web1
hoặc, nếu bạn thích, hãy kiểm tra lại sau nửa giờ hoặc lâu hơn để xác minh trình điều khiển Puppet đang chạy tự động.
Lưu ý: Bạn có thể kiểm tra file log trên Puppet master để xem lần cuối Puppet biên dịch danh mục cho một tác nhân, điều này cho biết rằng mọi thay đổi cần thiết phải được áp dụng.
- tail /var/log/puppetlabs/puppetserver/puppetserver.log
Output excerpt . . . 2016-12-07 17:35:00,913 INFO [qtp273795958-70] [puppetserver] Puppet Caching node for web1.localdomain 2016-12-07 17:35:02,804 INFO [qtp273795958-68] [puppetserver] Puppet Caching node for web1.localdomain 2016-12-07 17:35:02,965 INFO [qtp273795958-68] [puppetserver] Puppet Compiled catalog for web1.localdomain in environment production in 0.13 seconds . . .
Xin chúc mừng! Bạn đã cài đặt thành công Puppet ở chế độ Master / Agent.
Kết luận
Đến đây bạn đã có cài đặt Puppet đại lý / master cơ bản, bạn đã sẵn sàng tìm hiểu thêm về cách sử dụng Puppet để quản lý cơ sở hạ tầng server của bạn . Hãy xem hướng dẫn sau: Bắt đầu với Mã rối: Manifests và Mô-đun .
Các tin liên quan
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 16.042016-12-09
Cách sử dụng Vault để bảo vệ dữ liệu nhạy cảm có thể xem được trên Ubuntu 16.04
2016-12-09
Cách cài đặt Discourse trên Ubuntu 16.04
2016-12-02
Cách thiết lập giám sát hiệu suất thời gian thực với Netdata trên Ubuntu 16.04
2016-12-01
Cách sắp xếp công việc theo nhóm với ONLYOFFICE trên Ubuntu 14.04
2016-11-22
Cách triển khai CockroachDB trên Cụm ba node trên Ubuntu 16.04
2016-11-18
Cách thu thập các chỉ số cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 16.04
2016-11-03
Cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 14.04
2016-11-02
Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 16.04
2016-11-01
Cách cài đặt và cấu hình ownCloud trên Ubuntu 16.04
2016-10-31