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_ip
và your_puppet_server_ip
tương ứng.
Vì vậy, để làm theo hướng dẫn này, bạn cần :
- Một server Ubuntu 14.04 với user không phải root có quyền sudo và các SSH key được thêm vào .
- Một Dropet Ubuntu 14.04 khác có thêm SSH key và cài đặt Git Labs.
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:
[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.
[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ờ.
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.
#!/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 .
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.
Các tin liên quan
Cách backup server Ubuntu 14.04 bằng Bacula2015-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