Đây không phải là lần đầu tiên 2ndQuadrant xem xét Puppet. Gabriele Bartolini đã viết một bài báo gồm hai phần về cách cấu hình nhanh máy chủ PostgreSQL thông qua Puppet và Vagrant, kèm theo việc phát hành mã được sử dụng trong ví dụ trên GitHub (http://github.com/2ndquadrant-it/vagrant -puppet-postgresql).
Được chia thành ba phần, mục đích của bài viết này là chứng minh sự tự động hóa thiết lập và cấu hình của Barman để sao lưu máy chủ thử nghiệm PostgreSQL.
Bài viết này là bản cập nhật những gì được viết bởi Gabriele với ý tưởng tạo ra hai máy ảo thay vì một, một máy chủ PostgreSQL và một máy chủ Barman.
it2ndq/barman
là mô-đun do 2ndQuadrant Italy phát hành để quản lý việc cài đặt Barman thông qua Puppet. Mô-đun có giấy phép GPLv3 và có sẵn trên GitHub tại địa chỉ http://github.com/2ndquadrant-it/puppet-barman. Quy trình sau được viết cho Ubuntu 14.04 Trusty Tahr nhưng có thể được thực hiện theo cách tương tự trên các bản phân phối khác.
Yêu cầu
Để khởi động mô-đun cho Barman trên máy ảo, chúng tôi cần phần mềm sau:
- VirtualBox
- Vagrant
- Ruby> =1,9
- Con rối
- thủ thư-con rối
Vagrant
Vagrant là một trình quản lý máy ảo, có khả năng hỗ trợ nhiều phần mềm ảo hóa với VirtualBox làm mặc định.
Chúng tôi cài đặt VirtualBox theo cách này:
$ sudo apt-get install virtualbox virtualbox-dkms |
Phiên bản mới nhất của Vagrant có thể được tải xuống từ trang web và cài đặt bằng lệnh:
$ sudo dpkg -i /path/to/vagrant_1.7.2_x86_64.deb |
Ruby
Về Ruby, lời khuyên của chúng tôi là sử dụng rbenv
, tạo ra một môi trường phát triển Ruby để chỉ định phiên bản cho người dùng hiện tại, do đó tránh làm ô nhiễm môi trường hệ thống. Để cài đặt rbenv
chúng tôi khuyên bạn nên sử dụng rbenv-installer
(http://github.com/fesplugas/rbenv-installer).
Hãy tải xuống và thực thi tập lệnh:
$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash |
Ở cuối, tập lệnh sẽ nhắc bạn nối các dòng sau vào ~/.bash_profile
tệp:
export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi |
Bây giờ chúng ta cần tải lại ~/.bash_profile
vừa thay đổi :
$ exec bash -l |
Tại thời điểm này, chúng tôi cài đặt cục bộ phiên bản Ruby (trong trường hợp này là 2.1.5) và đặt người dùng chạy phiên bản này thay vì phiên bản hệ thống:
$ rbenv install 2.1.5 $ rbenv global 2.1.5 |
Con rối
Con rối không chỉ được yêu cầu trên máy ảo mà còn trên máy chạy chúng. Do đó, chúng ta cần cài đặt Puppet gem.
$ gem install puppet |
Thủ thư-con rối
Cuối cùng, librarian-puppet
là một công cụ để tự động hóa việc quản lý các mô-đun Con rối. Giống như con rối, librarian-puppet
có thể được cài đặt dưới dạng đá quý:
$ gem install librarian-puppet |
Vagrant:cấu hình
Bây giờ chúng ta đã có sẵn các phần phụ thuộc, chúng ta có thể bắt đầu viết các cấu hình Vagrant và Puppet cho hệ thống sao lưu của mình.
Chúng tôi bắt đầu bằng cách tạo một thư mục làm việc:
$ mkdir ~/vagrant_puppet_barman $ cd ~/vagrant_puppet_barman |
Vagrant cần chúng tôi viết một tệp có tên là Vagrantfile
nơi nó tìm kiếm cấu hình của máy ảo.
Vagrantfile
sau khởi động hai máy ảo đáng tin cậy của Ubuntu, được gọi là pg
và backup
, với địa chỉ ip 192.168.56.221
và 192.168.56.222
. Trên cả hai máy, việc cấp phép sẽ được thực hiện thông qua một tập lệnh shell nội tuyến.
Tập lệnh này khởi chạy puppet-bootstrap
(http://github.com/hashicorp/puppet-bootstrap), một script tự động cài đặt và cấu hình Puppet trên nhiều loại máy khác nhau. Vì nó không cần phải chạy nhiều lần, nên trong tập lệnh, một bài kiểm tra đã được chèn để ngăn các lần thực thi tiếp theo.
Vagrant.configure("2") do |config| { :pg => { :ip => '192.168.56.221', :box => 'ubuntu/trusty64' }, :backup => { :ip => '192.168.56.222', :box => 'ubuntu/trusty64' } }.each do |name,cfg| config.vm.define name do |local| local.vm.box = cfg[:box] local.vm.hostname = name.to_s + '.local.lan' local.vm.network :private_network, ip: cfg[:ip] family = 'ubuntu' bootstrap_url = 'http://raw.github.com/hashicorp/puppet-bootstrap/master/' + family + '.sh' # Run puppet-bootstrap only once local.vm.provision :shell, :inline => <<-eos if [ ! -e /tmp/.bash.provision.done ]; then curl -L #{bootstrap_url} | bash touch /tmp/.bash.provision.done fi eos end end end |
Đưa lên máy ảo
Chúng tôi đã xác định hai máy ảo Ubuntu Trusty có chứa Puppet. Đây không phải là Vagrantfile
cuối cùng nhưng đã cho phép tạo ra hai máy. Nếu bạn tò mò, có thể xác minh rằng hai máy đã được tạo bằng lệnh:
$ vagrant up |
và sau đó kết nối bằng các lệnh sau:
$ vagrant ssh pg $ vagrant ssh backup |
Cuối cùng, máy có thể bị phá hủy bằng:
$ vagrant destroy -f |
Kết luận
Trong phần đầu tiên của hướng dẫn này, chúng ta đã biết cách định cấu hình các phần phụ thuộc và kết thúc với hai máy ảo mà chúng ta sẽ cài đặt, thông qua Puppet, PostgreSQL và Barman. Việc viết tệp kê khai Con rối cho quá trình cài đặt thực tế sẽ là chủ đề của bài viết tiếp theo.
Tạm biệt!