Thứ sáu, 15/08/2014 | 00:00 GMT+7

Cách cài đặt puppet để quản lý cơ sở hạ tầng server của bạn

Lưu ý: Bạn có thể tìm thấy version mới hơn của hướng dẫn này, sử dụng Puppet Server thay vì Puppet with Passenger tại đây: Cách cài đặt Puppet 4 trong cài đặt Master-Agent trên Ubuntu 14.04 .


Puppet, từ Puppet Labs, 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 của bạn nhất quán và chính xác trên cơ sở hạ tầng của bạn. Khi bạn đã quản lý được server của bạn bằng Puppet và các công cụ tự động hóa khác, bạn sẽ giải phóng thời gian có thể dành để cải thiện các khía cạnh khác trong cài đặt tổng thể của bạn .

Puppet có hai loại, puppet Enterprise và puppet open-souce . Nó 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ẽ giới thiệu cách cài đặt Puppet nguồn mở trong cài đặt Agent / Master. Cài đặt này bao gồm một server Puppet Master trung tâm, nơi tất cả dữ liệu cấu hình của bạn sẽ được quản lý và phân phối từ đó, và tất cả các server còn lại của bạn sẽ là các node Puppet Agent , có thể được cấu hình bởi server chính của puppet .

Yêu cầu

Để làm theo hướng dẫn này, bạn phải có quyền truy cập root vào tất cả các server mà bạn muốn cấu hình Puppet. Bạn cần tạo một VPS Ubuntu 14.04 mới để hoạt động như một server chính của Puppet. Nếu bạn không có cơ sở hạ tầng hiện có, vui lòng tạo lại cơ sở hạ tầng mẫu (được mô tả bên dưới) theo hướng dẫn cài đặt DNS tiên quyết.

Trước khi ta bắt đầu cài đặt Puppet, hãy đảm bảo bạn có các yêu cầu sau:

  • DNS mạng riêng: DNS chuyển tiếp và DNS đảo ngược phải được cấu hình và mọi server phải có một tên server duy nhất. Đây là hướng dẫn để cấu hình server DNS mạng riêng của bạn . Nếu bạn chưa cấu hình DNS, bạn phải sử dụng file hosts của bạn để phân giải tên. Ta sẽ giả định bạn sẽ sử dụng mạng riêng của bạn để liên lạc trong cơ sở hạ tầng của bạn.
  • Cổng mở firewall : Phải truy cập được vào cổng chính của Puppet trên cổng 8140. Nếu firewall của bạn quá hạn chế, hãy xem Hướng dẫn UFW này để biết hướng dẫn về cách cho phép các yêu cầu đến trên cổng 8140.

Cơ sở hạ tầng mẫu

Ta sẽ sử dụng cơ sở hạ tầng sau để trình bày cách cài đặt Puppet:

Tên server Role FQDN riêng
host1 VPS chung Ubuntu 14.04 host1.nyc2.example.com
host2 VPS chung Ubuntu 14.04 host2.nyc2.example.com
ns1 Server định danh chính ns1.nyc2.example.com
ns2 Server định danh phụ ns2.nyc2.example.com

Đặc vụ rối sẽ được cài đặt trên tất cả các server này. Các server này sẽ được tham chiếu bởi các network interface riêng tư của chúng, được ánh xạ tới domain phụ “.nyc2.example.com” trong DNS. Đây là cơ sở hạ tầng tương tự được mô tả trong hướng dẫn yêu cầu : Cách cấu hình BIND làm Server DNS Mạng riêng trên Ubuntu 14.04
.

Khi bạn có tất cả các yêu cầu , hãy chuyển sang tạo server Puppet master!

Tạo server chính của puppet

Tạo một VPS Ubuntu 14.04 x64 mới, sử dụng “ puppet ” làm tên server của nó. Thêm mạng riêng của nó vào DNS của bạn với các chi tiết sau:

Tên server Role FQDN riêng
puppet Múa rối rối.nyc2.example.com

Nếu bạn vừa cài đặt DNS của bạn và không chắc chắn về cách thêm server của bạn vào DNS, hãy tham khảo phần Duy trì Bản ghi DNS của hướng dẫn DNS.Về cơ bản, bạn cần thêm bản ghi “A” và “PTR” và cho phép server lưu trữ mới thực hiện các truy vấn đệ quy. Ngoài ra, hãy đảm bảo bạn cấu hình domain tìm kiếm của bạn để các server của bạn có thể sử dụng tên server ngắn để tra cứu lẫn nhau.

Việc sử dụng " puppet " làm tên server của puppet đơn giản hóa một chút cài đặt tác nhân, vì nó là tên mặc định mà tác nhân sẽ sử dụng khi cố gắng kết nối với bản chính.

Bây giờ ta cần cài đặt NTP.

Cài đặt NTP

Vì nó hoạt động như một cơ quan cấp certificate cho các node tác nhân, server chủ bù nhìn phải duy trì thời gian hệ thống chính xác để tránh các sự cố tiềm ẩn khi nó cấp certificate tác nhân - certificate có thể hết hạn nếu có sự chênh lệch về thời gian. Ta sẽ sử dụng Giao thức thời gian mạng (NTP) cho mục đích này.

Trước tiên, hãy thực hiện đồng bộ hóa một lần bằng lệnh ntpdate :

sudo ntpdate pool.ntp.org 

Thời gian hệ thống của bạn sẽ được cập nhật, nhưng bạn cần cài đặt daemon NTP để thời gian tự động cập nhật nhằm giảm thiểu thời gian trôi. Cài đặt nó bằng lệnh apt sau:

sudo apt-get update && sudo apt-get -y install ntp 

Thông thường, cập nhật cấu hình NTP để sử dụng “vùng group ” gần server NTP của bạn hơn về mặt địa lý. Trong trình duyệt web, hãy đi tới Dự án NTP Pool và tìm kiếm một vùng chung đóng trung tâm dữ liệu về mặt địa lý mà bạn đang sử dụng. Ta sẽ sử dụng group USA ( http://www.pool.ntp.org/zone/us ) trong ví dụ của ta , vì các server được đặt trong trung tâm dữ liệu ở New York.

Mở ntp.conf để chỉnh sửa:

sudo vi /etc/ntp.conf 

Thêm server thời gian từ trang Dự án NTP Pool vào đầu file :

server 0.us.pool.ntp.org server 1.us.pool.ntp.org server 2.us.pool.ntp.org server 3.us.pool.ntp.org 

Lưu và thoát. Khởi động lại NTP để thêm server thời gian mới.

sudo service ntp restart 

Bây giờ server của ta đang giữ thời gian chính xác, hãy cài đặt phần mềm Puppet master.

Cài đặt Puppet Master

Có nhiều cách để cài đặt Puppet nguồn mở. Ta sẽ sử dụng gói debian có tên là rốimaster-hành khách , được cung cấp bởi Puppet Labs. Gói điều khiển rối - hành khách bao gồm tổng thể rối cộng với web server sẵn sàng production (Hành khách với Apache), loại bỏ một vài bước cấu hình so với sử dụng gói administrator rối cơ bản.

Download gói Puppet Labs:

cd ~; wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb 

Cài đặt gói:

sudo dpkg -i puppetlabs-release-trusty.deb 

Cập nhật danh sách các gói có sẵn của apt:

sudo apt-get update 

Cài đặt gói puppetmaster-passenger :

sudo apt-get install puppetmaster-passenger 

Các gói chính Puppet, Passenger, Apache và các gói bắt buộc khác hiện đã được cài đặt. Bởi vì ta đang sử dụng Passenger với Apache, quá trình chính của Puppet được Apache điều khiển, tức là nó chạy khi Apache đang chạy.

Trước khi tiếp tục, hãy dừng trình điều khiển Puppet bằng cách dừng dịch vụ apache2 :

sudo service apache2 stop 

Tiếp theo, ta muốn khóa version Puppet.

Khóa version

Các thay đổi từ version này sang version khác đôi khi có thể khiến môi trường Puppet của bạn ngừng hoạt động bình thường. Vì lý do này, bạn cần duy trì một version Puppet nhất quán trên toàn bộ cơ sở hạ tầng của bạn . Nếu bạn quyết định nâng cấp lên một version mới hơn, hãy chắc chắn rằng bạn nâng cấp tổng thể của bạn trước khi bất kỳ nút đại lý, như là bậc thầy không thể quản lý các đại lý có một số version cao hơn.

Hãy tìm kiếm version cài đặt Puppet của ta bằng lệnh sau:

puppet help | tail -n 1 

Trong thời gian viết, kết quả từ lệnh trước đó là Puppet v3.6.2 . Ta có thể sử dụng tính năng ghim của apt để khóa cài đặt Puppet của ta thành 3.6.* , Điều này sẽ ngăn không cho apt nâng cấp Puppet lên bản phát hành chính cao hơn. Tạo một file mới có tên trong folder tùy chọn apt:

sudo vi /etc/apt/preferences.d/00-puppet.pref 

Thêm các dòng sau để khóa các gói puppet , puppet-common và con puppetmaster-passenger thành 3.6.* (Thay đổi điều này để phù hợp với version đã cài đặt của bạn):

# /etc/apt/preferences.d/00-puppet.pref Package: puppet puppet-common puppetmaster-passenger Pin: version 3.6* Pin-Priority: 501 

Lưu và thoát. Phiên bản Puppet của bạn hiện đã bị khóa.

Bước tiếp theo là cài đặt tên và certificate chính cho Puppet của bạn.

Cài đặt tên và certificate

Puppet sử dụng certificate SSL để xác thực giao tiếp giữa nút chính và nút đại lý. Puppet master hoạt động như một tổ chức phát hành certificate (CA) và phải tạo các certificate của chính nó được sử dụng để ký các certificate request tác nhân. Ta sẽ cài đặt các certificate thạc sĩ ngay bây giờ.

Xóa certificate hiện có

Xóa mọi certificate SSL hiện có đã được tạo trong quá trình cài đặt gói. Vị trí mặc định của certificate SSL của Puppet là /var/lib/puppet/ssl :

sudo rm -rf /var/lib/puppet/ssl 

Cấu hình certificate

Khi tạo certificate của chủ puppet , hãy bao gồm mọi tên DNS mà tại đó các node tác nhân có thể liên hệ với chủ. Trong trường hợp ví dụ của ta , ta sẽ sử dụng “ puppet ” và “ puppet .nyc2.example.com”, tên server rút gọn và FQDN, tương ứng.

Chỉnh sửa file rối.conf của chủ nhân:

sudo vi /etc/puppet/puppet.conf 

Nó trông giống như sau :

[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter templatedir=$confdir/templates  [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY 

Xóa dòng bằng tùy chọn templatedir vì tùy chọn đó không được dùng nữa.

Thêm hai dòng sau vào cuối phần [main] (thay thế văn bản được đánh dấu bằng FQDN riêng):

certname = puppet dns_alt_names = puppet,puppet.nyc2.example.com 

Điều quan trọng là sử dụng chỉ định certname cho “ puppet ” vì cấu hình Apache / Passenger certificate request được đặt tên là “ puppet ”. Nếu bạn quyết định rằng bạn muốn có một khác nhau certname cài đặt , hãy chắc chắn để chỉnh sửa các file cấu hình Apache ( /etc/apache2/sites-available/puppetmaster.conf ) để thay đổi tên của đường dẫn certificate SSL.

Lưu và thoát.

Tạo certificate mới

Bây giờ tạo certificate CA mới bằng cách chạy lệnh sau:

sudo puppet master --verbose --no-daemonize 

Bạn sẽ thấy một số dòng kết quả cho biết rằng các khóa và certificate SSL đang được tạo. Khi bạn thấy Notice: Starting Puppet master version 3.6.2 , quá trình cài đặt certificate đã hoàn tất. Nhấn CTRL-C để quay lại shell .

Đầu ra mẫu:

Info: Creating a new SSL key for ca Info: Creating a new SSL certificate request for ca Info: Certificate Request fingerprint (SHA256): EC:7D:ED:15:DE:E3:F1:49:1A:1B:9C:D8:04:F5:46:EF:B4:33:91:91:B6:5D:19:AC:21:D6:40:46:4A:50:5A:29 Notice: Signed certificate request for ca ... Notice: Signed certificate request for puppet Notice: Removing file Puppet::SSL::CertificateRequest puppet at '/var/lib/puppet/ssl/ca/requests/puppet.pem' Notice: Removing file Puppet::SSL::CertificateRequest puppet at '/var/lib/puppet/ssl/certificate_requests/puppet.pem' Notice: Starting Puppet master version 3.6.2 

Nếu bạn muốn xem thông tin certificate của certificate vừa được tạo, hãy nhập thông tin sau:

sudo puppet cert list -all 

Lệnh trước thực sự liệt kê tất cả các certificate đã ký và các certificate request chưa ký. Hiện tại, chỉ certificate chính mới hiển thị vì chưa có certificate nào khác được thêm vào:

+ "puppet" (SHA256) 05:22:F7:65:64:CF:46:0E:09:2C:5D:FD:8C:AC:9B:31:17:2B:7B:05:93:D5:D1:01:52:72:E6:DF:84:A0:07:37 (alt names: "DNS:puppet", "DNS:puppet.nyc2.example.com") 

Dịch vụ tổng thể về puppet của ta gần như đã sẵn sàng để bắt đầu. Đầu tiên ta hãy xem cấu hình chính.

Cấu hình Puppet Master

Tệp cấu hình puppet chính, puppet.conf , bao gồm ba phần: [main] , [master][agent] . Như bạn có thể đã đoán, phần “chính” chứa cấu hình chung, phần “chính” dành riêng cho chủ nhân puppet và “tác nhân” được sử dụng để cấu hình tác nhân puppet . Ngoài những thay đổi mà ta đã thực hiện trước đó, các cài đặt mặc định sẽ hoạt động tốt đối với cài đặt cơ bản.

Tệp cấu hình có nhiều tùy chọn có thể liên quan đến cài đặt của bạn . Mô tả đầy đủ về file hiện có tại Puppet Labs: Tệp Cấu hình Chính (rối.conf) .

Nếu bạn muốn chỉnh sửa nó, hãy chạy lệnh sau:

sudo vi /etc/puppet/puppet.conf 

Hãy xem file kê khai chính.

Tệp kê khai chính

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 . Tệp kê khai chính mặc định được đặt tại /etc/puppet/manifests/site.pp . Ta sẽ đề cập đến một số file kê khai cơ bản sau, nhưng ta sẽ tạo file trình giữ chỗ ngay bây giờ:

sudo touch /etc/puppet/manifests/site.pp 

Bắt đầu kỹ thuật múa rối

Bây giờ ta đã sẵn sàng để bắt đầu làm chủ Puppet . Khởi động nó bằng cách chạy dịch vụ apache2 :

sudo service apache2 start 

Trình điều khiển puppet của bạn đang chạy, nhưng nó chưa quản lý bất kỳ nút tác nhân nào. Hãy cùng tìm hiểu cách cài đặt và thêm các tác nhân Puppet!

Cài đặt tác nhân puppet

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 bao gồm mọi server trong cơ sở hạ tầng của bạn. Như đã đề cập trong phần giới thiệu, Puppet agent 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. Vì cài đặt trên mỗi hệ điều hành hơi khác nhau, ta sẽ chỉ đề cập đến cài đặt trên server Ubuntu và Debian.

Hướng dẫn cài đặt Puppet trên các nền tảng khác có trong Tài liệu của Puppet Labs – hãy đảm bảo làm theo phần “Cài đặt Puppet trên Agent Nodes” cho hệ điều hành bạn chọn.

Lưu ý: Giả định tất cả các node Puppet của bạn, bao gồm cả các node tác nhân, đều được cấu hình để sử dụng DNS của bạn. Nếu bạn đang tạo một server hoàn toàn mới, hãy đảm bảo thêm nó vào DNS của bạn trước khi cài đặt tác nhân Puppet .

Nút tác nhân Ubuntu / Debian

Lưu ý : Tất cả các node tác nhân mẫu của ta , host1 , host2 , ns1ns2 , đều là VPS Ubuntu 14.04. Ta sẽ lặp lại bước này cho từng server để mỗi server có thể được quản lý bởi Puppet master.

Trên nút tác nhân puppet của bạn, download gói Puppet Labs:

cd ~; wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb 

Cài đặt gói:

sudo dpkg -i puppetlabs-release-trusty.deb 

Cập nhật danh sách các gói có sẵn của apt:

sudo apt-get update 

Cài đặt gói tác nhân Puppet ( puppet ):

sudo apt-get install puppet 

Tác nhân bù nhìn bị vô hiệu hóa theo mặc định. Để thay đổi điều này, hãy cập nhật file mặc định của nó:

sudo vi /etc/default/puppet 

Và thay đổi giá trị của START thành “yes”:

START=yes 

Lưu và thoát /etc/default/puppet .

Khóa version

Giống như với Puppet master, ta sẽ muốn sử dụng tính năng apt pin để khóa version của Puppet agent:

sudo vi /etc/apt/preferences.d/00-puppet.pref 

Thêm các dòng sau để khóa gói puppetpuppet-common thành 3.6.* (Thay đổi điều này để phù hợp với version đã cài đặt của bạn):

# /etc/apt/preferences.d/00-puppet.pref Package: puppet puppet-common Pin: version 3.6* Pin-Priority: 501 

Lưu và thoát. Phiên bản Puppet của bạn hiện đã bị khóa.

Cấu hình tác nhân

Trước khi chạy tác nhân, ta phải thực hiện một vài thay đổi cấu hình.

Chỉnh sửa con puppet.conf của puppet.conf :

sudo vi /etc/puppet/puppet.conf 

Nó sẽ giống hệt như file cấu hình ban đầu của Puppet master.

, xóa dòng templatedir . Sau đó xóa phần [master] và tất cả các dòng bên dưới phần đó.

Giả sử rằng có thể tiếp cận được người điều khiển Puppet tại “ puppet ”, tác nhân sẽ có thể kết nối với người điều khiển. Nếu cái chủ không có sẵn ở “ puppet ”, bạn cần thêm FQDN của puppet . Ta khuyên bạn nên cấu hình điều này dù (thay thế FQDN bằng FQDN của bạn ):

[agent] server = puppet.nyc2.example.com 

Lưu và thoát.

Tác nhân Puppet đã sẵn sàng chạy. Làm như vậy bằng cách chạy lệnh sau:

sudo service puppet start 

Nếu mọi thứ được cấu hình đúng cách, bạn sẽ không thấy bất kỳ kết quả nào. Lần đầu tiên bạn chạy tác nhân Puppet , nó sẽ tạo certificate SSL và gửi yêu cầu ký kết đến trình chủ Puppet . Sau khi trình chủ puppet ký certificate của tác nhân, nó sẽ có thể giao tiếp với nút tác nhân.

Lưu ý : Nếu đây là tác nhân Puppet đầu tiên của bạn, bạn nên cố gắng ký certificate trên Puppet master trước khi thêm các agent khác của bạn . Khi bạn đã xác minh mọi thứ hoạt động bình thường, thì bạn có thể quay lại và thêm các node tác nhân còn lại một cách tự tin.

Đăng ký yêu cầu trên chính

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 cái chủ 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ể đó. Ta sẽ mô tả cách ký và kiểm tra các yêu cầu ký.

Liệt kê các certificate request hiện tại

Trên Puppet master, hãy chạy lệnh sau để liệt kê tất cả các certificate request chưa được ký:

sudo puppet cert list 

Nếu bạn vừa cài đặt nút tác nhân đầu tiên, bạn sẽ thấy một yêu cầu. Nó trông giống như sau , với FQDN của nút tác nhân là tên server :

"host1.nyc2.example.com" (SHA256) B1:96:ED:1F:F7:1E:40:53:C1:D4:1B:3C:75:F4:7C:0B:A9:4C:1B:5D:95:2B:79:C0:08:DD:2B:F4:4A:36:EE:E3 

Lưu ý không có + ở phía trước của nó. Điều này cho thấy rằng nó vẫn 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 mà bạn muốn ký. Ví dụ: để ký host1.nyc2.example.com , bạn sẽ sử dụng lệnh sau:

sudo puppet cert sign host1.nyc2.example.com 

Bạn sẽ thấy kết quả sau cho biết rằng certificate request đã được ký:

Notice: Signed certificate request for host1.nyc2.example.com Notice: Removing file Puppet::SSL::CertificateRequest host1.nyc2.example.com at '/var/lib/puppet/ssl/ca/requests/host1.nyc2.example.com.pem' 

Hiện tại, Puppet master có thể giao tiếp và kiểm soát nút chứa certificate đã ký.

Nếu bạn muốn ký tất cả các yêu cầu hiện tại, hãy sử dụng tùy chọn -all , như sau:

sudo puppet cert sign --all 

Thu hồi certificate

Bạn có thể cần xóa server khỏi Puppet hoặc xây dựng lại server sau đó thêm lại server đó vào Puppet. Trong trường hợp này, bạn cần thu hồi certificate của server từ Puppet master. Để làm điều này, bạn cần sử dụng hành động clean :

sudo puppet cert clean hostname 

Các certificate được liên kết của server được chỉ định sẽ bị xóa khỏi Puppet.

Xem tất cả các yêu cầu đã ký

Nếu bạn muốn xem tất cả các yêu cầu, có dấu và không dấu , hãy chạy lệnh sau:

sudo puppet cert list --all 

Bạn sẽ thấy danh sách tất cả các yêu cầu. Các yêu cầu đã ký được đặt trước dấu + và các yêu cầu chưa ký không có dấu + .

  "ns2.nyc2.example.com"   (SHA256) E4:F5:26:EB:B1:99:1F:9D:6C:B5:4B:BF:86:14:40:23:E0:50:3F:C1:45:D0:B5:F0:68:6E:B2:0F:41:C7:BA:76 + "host1.nyc2.example.com" (SHA256) 71:A2:D3:82:15:0D:80:20:D4:7E:E3:42:C2:35:87:83:79:2B:57:1D:D5:5A:EC:F6:8B:EE:51:69:53:EB:6B:A1 + "host2.nyc2.example.com" (SHA256) F4:79:A6:7C:27:0C:EA:8E:BC:31:66:FF:F2:01:AB:B1:35:7B:9F:5E:C8:C9:CE:82:EE:E8:2F:23:9F:0C:2B:ED + "puppet"                 (SHA256) 05:22:F7:65:64:CF:46:0E:09:2C:5D:FD:8C:AC:9B:31:17:2B:7B:05:93:D5:D1:01:52:72:E6:DF:84:A0:07:37 (alt names: "DNS:puppet", "DNS:puppet.nyc2.example.com") 

Chúc mừng! Cơ sở hạ tầng của bạn hiện đã sẵn sàng để Puppet quản lý!

Bắt đầu với Puppet

Bây giờ cơ sở hạ tầng của bạn đã được cài đặt để quản lý bằng Puppet, ta sẽ hướng dẫn bạn cách thực hiện một số tác vụ cơ bản để giúp bạn bắt đầu.

Sự kiện được thu thập như thế nào

Puppet thu thập dữ kiện về mỗi nút của nó bằng một công cụ gọi là facter . Facter, theo mặc định, thu thập thông tin hữu ích cho cấu hình hệ thống (ví dụ: tên hệ điều hành, tên server , địa chỉ IP, SSH key , v.v.). Có thể thêm các dữ kiện tùy chỉnh nếu bạn cần các thông tin khác để thực hiện các cấu hình của bạn .

Các dữ kiện thu thập được có thể hữu ích trong nhiều tình huống. Ví dụ: bạn có thể tạo mẫu cấu hình web server và tự động điền địa chỉ IP thích hợp cho một server ảo cụ thể. Hoặc bạn có thể xác định rằng hệ điều hành server của bạn là “Ubuntu”, vì vậy bạn nên chạy dịch vụ apache2 thay vì httpd . Đây là những ví dụ cơ bản, nhưng chúng sẽ cung cấp cho bạn ý tưởng về cách các dữ kiện được dùng .

Để xem danh sách các dữ kiện tự động được thu thập trên nút tác nhân của bạn, hãy chạy lệnh sau:

facter 

Cách Thực thi Tệp kê khai Chính

Nhân viên múa rối kiểm tra định kỳ với người điều khiển rối (thường là 30 phút một lần). Trong thời gian này, nó sẽ gửi dữ kiện về chính nó cho master và kéo một danh mục hiện tại – một danh sách tổng hợp các tài nguyên và trạng thái mong muốn của chúng có liên quan đến tác nhân, được xác định bởi file kê khai chính. Sau đó, nút tác nhân sẽ cố gắng áp dụng các thay đổi thích hợp để đạt được trạng thái mong muốn. Chu kỳ này sẽ tiếp tục miễn là Puppet master đang chạy và giao tiếp với các node tác nhân.

Thực thi ngay lập tức trên một nút tác nhân cụ thể

Cũng có thể bắt đầu kiểm tra một nút tác nhân cụ thể theo cách thủ công, bằng cách chạy lệnh sau (trên nút tác nhân được đề cập):

puppet agent --test 

Chạy điều này sẽ áp dụng file kê khai chính cho tác nhân đang chạy thử nghiệm. Bạn có thể thấy kết quả như sau:

Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts in /var/lib/puppet/lib/facter/pe_version.rb Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb Info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb Info: Loading facts in /var/lib/puppet/lib/facter/facter_dot_d.rb Info: Caching catalog for host1.nyc2.example.com Info: Applying configuration version '1407966707' 

Lệnh này hữu ích để xem file kê khai chính sẽ ảnh hưởng như thế nào đến một server ngay lập tức.

Manifests một lần

Lệnh puppet apply cho phép bạn thực hiện các file kê khai không liên quan đến file kê khai chính theo yêu cầu. Nó chỉ áp dụng file kê khai cho nút mà bạn chạy ứng dụng từ đó. Đây là một ví dụ:

sudo puppet apply /etc/puppet/modules/test/init.pp 

Chạy file kê khai theo kiểu này rất hữu ích nếu bạn muốn kiểm tra file kê khai mới trên một nút tác nhân hoặc nếu bạn chỉ muốn chạy file kê khai một lần (ví dụ: khởi tạo nút tác nhân đến trạng thái mong muốn).

Tệp kê khai đơn giản

Như bạn có thể nhớ lại, file kê khai chính trên Puppet master có tại /etc/puppet/manifests/site.pp .

Trên tổng thể, chỉnh sửa nó bây giờ:

sudo vi /etc/puppet/manifests/site.pp 

Bây giờ thêm các dòng sau để mô tả tài nguyên file :

file {'/tmp/example-ip':                                            # resource type file and filename   ensure  => present,                                               # make sure it exists   mode    => 0644,                                                  # file permissions   content => "Here is my Public IP Address: ${ipaddress_eth0}.\n",  # note the ipaddress_eth0 fact } 

Bây giờ lưu và thoát. Các comment nội dòng phải giải thích tài nguyên mà ta đang xác định. Bằng tiếng Anh đơn giản, điều này sẽ đảm bảo rằng tất cả các node tác nhân sẽ có một file tại /tmp/example-ip , với quyền -rw-r--r-- và văn bản chứa địa chỉ IP công cộng của nút.

Bạn có thể đợi cho đến khi tác nhân tự động đăng ký với chủ hoặc bạn có thể chạy lệnh thử nghiệm - puppet agent --test (từ một trong các node tác nhân của bạn). Sau đó chạy lệnh sau để in file :

cat /tmp/example-ip 

Bạn sẽ thấy kết quả giống như sau (với địa chỉ IP của nút đó):

Here is my Public IP Address: 128.131.192.11. 

Chỉ định một nút

Nếu bạn muốn xác định tài nguyên cho các node cụ thể, hãy xác định một node trong file kê khai.

Trên trang cái, hãy chỉnh sửa site.pp :

sudo vi /etc/puppet/manifests/site.pp 

Bây giờ thêm các dòng sau:

node 'ns1', 'ns2' {    # applies to ns1 and ns2 nodes   file {'/tmp/dns':    # resource type file and filename     ensure => present, # make sure it exists     mode => 0644,     content => "Only DNS servers get this file.\n",   } }  node default {}       # applies to nodes that aren't explicitly defined 

Lưu và thoát.

Bây giờ Puppet sẽ đảm bảo một file tại /tmp/dns sẽ tồn tại trên ns1ns2 . Bạn có thể cần chạy lệnh thử nghiệm của puppet agent --test (từ ns1 hoặc ns2), nếu bạn không muốn đợi kéo tác nhân puppet đã lên lịch.

Lưu ý nếu bạn không xác định tài nguyên, Puppet sẽ cố gắng hết sức để không chạm vào tài nguyên đó. Vì vậy, nếu bạn đã xóa các tài nguyên này khỏi file kê khai, Puppet sẽ không xóa các file mà nó đã tạo. Nếu bạn muốn nó xóa các file , hãy thay đổi ensure absent .

Những ví dụ này không hữu ích gì, nhưng chúng chứng minh rằng Puppet đang hoạt động bình thường.

Sử dụng một module

Bây giờ ta hãy sử dụng một module . Các module rất hữu ích để group các nhiệm vụ lại với nhau. Có rất nhiều module có sẵn trong cộng đồng Puppet và bạn thậm chí có thể viết riêng của bạn .

Trên Puppet master, hãy cài đặt module puppetlabs-apache từ foreapi:

sudo puppet module install puppetlabs-apache 

Cảnh báo : Không sử dụng module này trên cài đặt Apache hiện có. Nó sẽ xóa mọi cấu hình Apache không được Puppet quản lý.

Bây giờ hãy chỉnh sửa site.pp :

sudo vi /etc/puppet/manifest/site.pp 

Bây giờ thêm các dòng sau để cài đặt Apache trên host2 :

node 'host2' {   class { 'apache': }             # use apache module   apache::vhost { 'example.com':  # define vhost resource     port    => '80',     docroot => '/var/www/html'   } } 

Lưu và thoát. Bây giờ, lần tới khi Puppet cập nhật host2, nó sẽ cài đặt gói Apache và cấu hình một server ảo có tên “example.com”, lắng nghe trên cổng 80 và với một tài liệu root /var/www/html .

Trên host2 , chạy lệnh sau:

sudo puppet agent --test 

Bạn sẽ thấy một loạt kết quả cho biết Apache đang được cài đặt. Sau khi hoàn tất, hãy truy cập địa chỉ IP công cộng của host2 . Bạn sẽ thấy trang chào mừng Apache mặc định.

Chúc mừng! Bạn đã sử dụng module Puppet đầu tiên của bạn !

Kết luận

Đến đây bạn đã có cài đặt Puppet đại lý / master cơ bản, bây giờ 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 .


Tags:

Các tin liên quan

Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12
Thiết lập server ban đầu với CentOS 7
2014-07-21
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên CentOS 7
2014-07-21
Cách sử dụng NSD, một server DNS chỉ ủy quyền, trên Ubuntu 14.04
2014-07-03
Cách cấu hình bind server lưu trữ hoặc chuyển tiếp DNS trên Ubuntu 14.04
2014-07-01
cách cấu hình bind làm server DNS chỉ ủy quyền trên Ubuntu 14.04
2014-07-01
So sánh các loại server DNS: Cách chọn cấu hình DNS phù hợp
2014-07-01
5 Thiết lập server Chung cho Ứng dụng Web của Bạn
2014-05-30
Cách sử dụng npm để quản lý gói Node.js trên server Linux
2014-05-14