Thứ tư, 29/04/2015 | 00:00 GMT+7

Cách thiết lập môi trường puppet masterless trên Ubuntu 14.04

Trong thế giới điện toán cloud hiện đại, quản lý cấu hình là một bước quan trọng. Các công cụ quản lý cấu hình cho phép bạn triển khai cấu hình một cách tin cậy cho các server của bạn . Một trong những công cụ quản lý cấu hình hoàn thiện hơn trong không gian này là Puppet .

Trong một môi trường Puppet điển hình, user viết các module Puppet trên máy trạm của họ, đẩy các module đến một server điều khiển version (ví dụ: Git), sau đó kéo các module đó xuống một Puppet master. Server đang chạy ứng dụng Puppet kết nối định kỳ với server Puppet để xem có điều gì thay đổi không và áp dụng các thay đổi nếu có.

Kịch bản này hoạt động tốt cho đến khi bạn phải bắt đầu mở rộng số lượng server đang đăng ký hoặc các module trở nên khá phức tạp. Tại thời điểm đó, bạn có hai tùy chọn: tập hợp Puppet Master của bạn để xử lý tải (có thể sẽ yêu cầu bạn mua version thương mại của Puppet) hoặc chỉ cần thả toàn bộ Puppet master. Bài viết này sẽ xem xét tùy chọn thứ hai.

Cài đặt Puppet không có chính chủ yêu cầu một bản sao của tất cả các module Puppet được sao chép vào từng nút thông qua Git và sau đó để Puppet áp dụng các thay đổi local . Nhược điểm của phương pháp này là mỗi server download tất cả các module , sau đó áp dụng những gì có liên quan, vì vậy nó không phải là lựa chọn tốt nhất cho các cài đặt có thông tin nhạy cảm. Tuy nhiên, việc chạy mà không cần một chuyên gia về Rối mang lại cho bạn sự linh hoạt và hoạt động hiệu quả mà không cần phải mở rộng cơ sở hạ tầng của bạn.

Yêu cầu

Nếu bạn chưa quen với Puppet, thì bạn có thể cần tạm dừng ở đây để đọc bài viết này về Puppet trước, vì hướng dẫn này giả định kiến thức hoạt động của công cụ. Nếu bạn chưa quen với Git, bạn cũng có thể xem phần giới thiệu này về loạt bài Git .

Trong hướng dẫn này, ta sẽ làm việc với hai Server: một chạy dưới dạng server Git và server còn lại ta sẽ áp dụng các thay đổi qua Puppet. Ta sẽ đề cập đến địa chỉ IP của các server này với your_git_server_ipyour_puppet_server_ip tương ứng.

Vì vậy, để làm theo hướng dẫn này, bạn cần :

Cách dễ nhất để cài đặt Git Labs là sử dụng hình ảnh bằng một cú nhấp chuột: trên trang tạo server bên dưới Chọn hình ảnh , nhấp vào tab Ứng dụng , sau đó nhấp vào GitLab 7.10.0 CE trên 14.04 . Bạn cũng có thể làm theo hướng dẫn này để cài đặt Git Labs theo cách thủ công.

Bước 1 - Tạo repository Git

Bước đầu tiên là tạo một repository để lưu trữ tất cả các module và file kê khai Puppet của ta .

Đầu tiên, hãy mở giao diện user Git Labs bằng cách truy cập http:// your_git_server_ip trong trình duyệt yêu thích của bạn. Tạo account bằng cách điền các chi tiết ở bên phải trong User mới? Tạo account và nhấn nút Đăng ký màu xanh lục. Bạn sẽ nhận được email kích hoạt account và sau khi kích hoạt account của bạn , bạn có thể đăng nhập trên trang chính.

Nhấp vào nút Dự án mới màu xanh lục trên trang chính.Nhập " puppet " cho đường dẫn Dự án và nhấp vào Tạo dự án . Nhập “ puppet ” vào trường Đường dẫn dự án và chọn Công khai cho Mức độ hiển thị , sau đó nhấp vào nút Tạo dự án màu xanh lục.

Đảm bảo bạn sao chép URL SSH, mà bạn sẽ thấy ở phía trên cùng của màn hình dự án, vì ta cần nó ở bước sau. Nó sẽ giống như git@ your_git_server_ip : username /puppet.git .

Bước 2 - Thêm SSH key vào Git Labs

Trong bước này, ta sẽ tạo một SSH key trên server Puppet , sau đó thêm khóa đó vào server Git Labs.

Đăng nhập vào server Múa rối như root. (Vì các file của Puppet sẽ thuộc quyền sở hữu của root, ta cần có quyền cài đặt repo Git ban đầu trong folder Puppet.)

Tạo SSH key cho user root. Đảm bảo không nhập passphrase (password bảo vệ) vì khóa này sẽ được sử dụng bởi tập lệnh chứ không phải user .

  • ssh-keygen -t rsa

Tiếp theo, hiển thị public key của bạn bằng lệnh sau.

  • cat ~/.ssh/id_rsa.pub

Sao chép khóa này. Nó trông giống như ssh-rsa long_alphanumeric_string root@ hostname .

Bây giờ, trên trang Control panel Git Labs của bạn, hãy nhấp vào biểu tượng Cài đặt profile trên thanh trên cùng, thứ hai từ bên phải. Trong menu bên trái, nhấp vào Khóa SSH , sau đó nhấp vào nút Thêm SSH key màu xanh lục. Trong trường Tiêu đề , hãy thêm mô tả về khóa (như “Khóa puppet root ”) và dán public key của bạn vào trường Khóa . Cuối cùng, nhấp vào Thêm khóa .

Bước 3 - Cài đặt Puppet và Git

Trong bước này, ta sẽ cài đặt Puppet và Git.

Trên server Puppet , trước tiên hãy download gói Puppet cho Ubuntu 14.04.

  • wget http://apt.puppetlabs.com/puppetlabs-release-trusty.deb

Cài đặt gói.

  • dpkg -i /tmp/puppetlabs-release-trusty.deb

Cập nhật danh sách gói hệ thống của bạn.

  • apt-get update

Cuối cùng, cài đặt Puppet và git.

  • apt-get install puppet git-core

Đến đây, bạn nên cấu hình môi trường Git của bạn theo các hướng dẫn trong hướng dẫn này .

Bước 4 - Đẩy cấu hình puppet ban đầu

Với Puppet và Git được cài đặt, ta đã sẵn sàng thực hiện lần đẩy đầu tiên vào repository Puppet của ta .

Đầu tiên, di chuyển đến folder /etc/puppet , nơi chứa các file cấu hình.

  • cd /etc/puppet

Khởi tạo repository git tại đây.

  • git init

Thêm mọi thứ trong folder hiện tại.

  • git add .

Commit những thay đổi này với một comment mô tả.

  • git commit -m "Initial commit of Puppet files"

Thêm dự án Git mà ta đã tạo trước đó làm nguồn root bằng cách sử dụng URL SSH mà bạn đã sao chép ở Bước 1.

  • git remote add origin git@your_server_ip:username/puppet.git

Và cuối cùng, đẩy các thay đổi.

  • git push -u origin master

Bước 5 - Xóa cấu hình của puppet

Bây giờ Puppet đã được cài đặt, ta có thể kết hợp mọi thứ lại với nhau. Đến đây, bạn có thể đăng xuất với quyền root và thay vào đó đăng nhập với quyền là user không phải root có quyền sudo mà bạn đã tạo trong yêu cầu . Việc hoạt động với quyền là user root không phải là thực hành tốt trừ khi thực sự cần thiết.

Để có được nền tảng phù hợp, ta cần thực hiện một vài thay đổi. Đầu tiên, ta sẽ xóa file /etc/puppet/puppet.conf . Sử dụng editor yêu thích của bạn (vim, nano, v.v.) chỉnh sửa /etc/puppet/puppet.conf với các thay đổi sau.

Hãy bắt đầu bằng cách thực hiện một vài thay đổi đối với file /etc/puppet/puppet.conf cho cài đặt cụ thể của ta . Mở file bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/puppet/puppet.conf

Tệp sẽ trông như thế này:

Bản root /etc/puppet/puppet.conf
 [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 

Trước tiên, hãy xóa mọi thứ từ dòng [master] xuống, vì ta không chạy một trình điều khiển Puppet . Cũng xóa dòng cuối cùng trong phần [main] bắt đầu bằng templatedir , vì điều này không được dùng nữa. Cuối cùng, thay đổi dòng có nội dung factpath=$vardir/lib/facter thành factpath=$confdir/facter để thay thế. $confdir tương đương với /etc/puppet/ , tức là repository Puppet của ta .

Đây là puppet.conf của bạn sau khi bạn hoàn thành các thay đổi ở trên.

Đã sửa đổi /etc/puppet/puppet.conf
 [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$confdir/facter 

Bước 6 - Thêm module puppet

Bây giờ Puppet đã được cài đặt , nhưng nó không hoạt động. Cách Puppet hoạt động là xem xét các file được gọi là file kê khai để xác định những gì nó sẽ làm, vì vậy trong bước này, ta sẽ tạo một module hữu ích để Puppet chạy.

Mô-đun đầu tiên của ta , mà ta sẽ gọi là cron-ngụy, sẽ triển khai Puppet qua Git. Nó sẽ cài đặt một móc Git sẽ chạy Puppet sau khi hợp nhất thành công (ví dụ: git pull) và nó sẽ cài đặt một công việc cron để thực hiện một git pull cứ sau 30 phút.

Đầu tiên, chuyển vào folder Mô-đun puppet .

  • cd /etc/puppet/modules

Tiếp theo, tạo một folder cron-puppet chứa manifests và thư files .

  • sudo mkdir -p cron-puppet/manifests cron-puppet/files

Tạo và mở file có tên init.pp trong folder manifests .

  • sudo nano cron-puppet/manifests/init.pp

Sao chép mã sau vào init.pp Đây là những gì yêu cầu Puppet kéo từ Git sau mỗi nửa giờ.

init.pp
 class cron-puppet {     file { 'post-hook':         ensure  => file,         path    => '/etc/puppet/.git/hooks/post-merge',         source  => 'puppet:///modules/cron-puppet/post-merge',         mode    => 0755,         owner   => root,         group   => root,     }     cron { 'puppet-apply':         ensure  => present,         command => "cd /etc/puppet ; /usr/bin/git pull",         user    => root,         minute  => '*/30',         require => File['post-hook'],     } } 

Lưu file , sau đó mở một file khác được gọi là post-merge trong thư files .

  • sudo nano cron-puppet/files/post-merge

Sao chép tập lệnh bash sau vào post-merge . Tập lệnh bash này sẽ chạy sau khi hợp nhất Git thành công và ghi lại kết quả của quá trình chạy.

hậu hợp nhất
 #!/bin/bash -e ## Run Puppet locally using puppet apply /usr/bin/puppet apply /etc/puppet/manifests/site.pp  ## Log status of the Puppet run if [ $? -eq 0 ] then     /usr/bin/logger -i "Puppet has run successfully" -t "puppet-run"     exit 0 else     /usr/bin/logger -i "Puppet has ran into an error, please run Puppet manually" -t "puppet-run"     exit 1 fi 

Lưu file này

Cuối cùng, ta phải yêu cầu Puppet chạy module này bằng cách tạo một file kê khai global , về mặt nguyên tắc có tại /etc/puppet/manifests/site.pp .

  • sudo nano /etc/puppet/manifests/site.pp

Dán phần sau vào site.pp Điều này tạo ra một phân loại nút được gọi là 'mặc định'. Bất cứ thứ gì có trong nút 'mặc định' sẽ được chạy trên mọi server . Ở đây, ta yêu cầu nó chạy module cron-puppet của ta .

site.pp
 node default {     include cron-puppet } 

Lưu và đóng file . Bây giờ, hãy đảm bảo module của ta hoạt động bằng cách chạy nó.

  • sudo puppet apply /etc/puppet/manifests/site.pp

Sau khi chạy thành công, bạn sẽ thấy một số kết quả kết thúc bằng một dòng như thế này.

...  Notice: Finished catalog run in 0.18 seconds 

Cuối cùng, hãy commit các thay đổi của ta đối với repository Git. Đầu tiên, hãy đăng nhập với quyền user root, vì đó là user có quyền truy cập SSH key vào repository .

Tiếp theo, thay đổi thành folder /etc/puppet .

  • cd /etc/puppet

Thêm mọi thứ trong folder đó vào commit .

  • git add .

Commit các thay đổi bằng một thông báo mô tả.

  • git commit -m "Added the cron-puppet module"

Cuối cùng, đẩy các thay đổi.

  • git push -u origin master

Kết luận

Để thêm nhiều server hơn, chỉ cần làm theo bước 3 ở trên để cài đặt Puppet và Git trên server mới, sau đó sao chép repository Git thành /etc/puppet và áp dụng file kê khai site.pp

Bạn thậm chí có thể tự động hóa cài đặt này bằng cách sử dụng dữ liệu user khi bạn tạo Server. Đảm bảo bạn sử dụng SSH key khi tạo Server và đã thêm SSH key đó vào server GitLab của bạn . Sau đó, chỉ cần đánh dấu vào hộp kiểm Bật dữ liệu user trên màn hình tạo server và nhập tập lệnh bash sau, thay thế các biến được đánh dấu màu đỏ bằng biến của bạn .

#!/bin/bash -e  ## Install Git and Puppet wget -O /tmp/puppetlabs.deb http://apt.puppetlabs.com/puppetlabs-release-`lsb_release -cs`.deb dpkg -i /tmp/puppetlabs.deb apt-get update apt-get -y install git-core puppet  # Clone the 'puppet' repo cd /etc mv puppet/ puppet-bak git clone http://your_git_server_ip/username/puppet.git /etc/puppet  # Run Puppet initially to set up the auto-deploy mechanism puppet apply /etc/puppet/manifests/site.pp 

Đó là tất cả! Như vậy, bạn có một hệ thống Puppet không có chủ và có thể tạo ra bất kỳ số lượng server bổ sung nào mà không cần phải đăng nhập vào chúng.


Tags:

Các tin liên quan

Cách backup server Ubuntu 14.04 bằng Bacula
2015-04-17
Cách cài đặt WordPress với OpenLiteSpeed trên Ubuntu 14.04
2015-04-16
Cách triển khai Wordpress với Shipyard trên Ubuntu 14.04
2015-04-14
Cách quản lý Jenkins với Rancher trên Ubuntu 14.04
2015-03-25
Cách cài đặt Sandstorm trên Ubuntu 14.04
2015-03-19
Cách bảo vệ thông tin đăng nhập tài khoản WordPress của bạn với xác thực hai yếu tố trên Ubuntu 14.04
2015-03-16
Cách cài đặt Ruby on Rails với rbenv trên Ubuntu 14.04
2015-03-13
Cách thiết lập Gog trên Ubuntu 14.04
2015-03-11
Cách thiết lập hệ thống quản lý cấu hình Chef 12 trên server Ubuntu 14.04
2015-03-03
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 14.04
2015-03-02