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 thực hiện bộ đệm trình duyệt với module tiêu đề của Nginx trên Ubuntu 16.04
2016-10-31
 

