Giới thiệu gem Serverspec
1. Giới thiệu Với Serverspec bạn có thể viết Rspec để test server của bạn đã được config đúng hay chưa. Serverspec kiểm tra trạng thái server của bạn bằng các câu lệnh, SSH, WinRM, Docker API … Vì vậy bạn không cần phải cài đặt bất cứ phần mềm quản lý nào trên server cả (ví dụ: Puppet, ...
1. Giới thiệu
Với Serverspec bạn có thể viết Rspec để test server của bạn đã được config đúng hay chưa.
Serverspec kiểm tra trạng thái server của bạn bằng các câu lệnh, SSH, WinRM, Docker API … Vì vậy bạn không cần phải cài đặt bất cứ phần mềm quản lý nào trên server cả (ví dụ: Puppet, Ansible, CFEngine, Itamae … ). Ngoài ra mục đích thực sự của Serverspec là tái cấu trúc hệ thống của bạn
2. Cài đặt
Add Gemfile:
gem “serverspec”
Chạy câu lệnh
$ bundle
hoặc
$ gem install serverspec
3. Cấu hình
$ serverspec-init Select OS type: 1) UN*X 2) Windows Select number: 1 Select a backend type: 1) SSH 2) Exec (local) Select number: 1 Vagrant instance y/n: n Input target host name: www.example.jp + spec/ + spec/www.example.jp/ + spec/www.example.jp/sample_spec.rb + spec/spec_helper.rb + Rakefile + .rspec
Bạn có thể viết test cho server ở file spec/www.example.jp/sample_spec.rb sẽ có nội dung :
require 'spec_helper' describe package('httpd'), :if => os[:family] == 'redhat' do it { should be_installed } end describe package('apache2'), :if => os[:family] == 'ubuntu' do it { should be_installed } end describe service('httpd'), :if => os[:family] == 'redhat' do it { should be_enabled } it { should be_running } end describe service('apache2'), :if => os[:family] == 'ubuntu' do it { should be_enabled } it { should be_running } end describe service('org.apache.httpd'), :if => os[:family] == 'darwin' do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end
Serverspec với SSH sẽ login tới server dưới dạng là một user config ở file ~/.ssh/config hoặc người dùng hiện tại. Nếu bạn muốn thay đổi người dùng hãy sửa trong spec/spec_helper.rb
options[:user] ||= Etc.getlogin
Chạy tests.
$ rake spec /usr/bin/ruby -S rspec spec/www.example.jp/sample_spec.rb Package "httpd" should be installed Service "httpd" should be enabled should be running Port "80" should be listening Finished in 0.21091 seconds (files took 6.37 seconds to load) 4 examples, 0 failures
Đa nền tảng
Ngoài ra Serverspec còn hỗ trợ rất nhiều nền tảng hệ điều hành như :
- AIX
- Arch Linux
- Darwin(Mac OS X)
- Debian
- Fedora/Red Hat/CentOS
- FreeBSD
- Gentoo Linux
- NixOS
- OpenBSD
- openSUSE
- Plamo Linux
- SmartOS
- Solaris
- SUSE
- Ubuntu
- Windows
Nó cũng có thể tự động phát hiện hệ điều hành của máy chủ. Nhưng nếu bạn muốn set chính xác thì có thể dùng cách:
require 'serverspec' set :os, :family => 'redhat', :release => '7', :arch => 'x86_64'
Sudo password
Nếu server của bạn yêu cầu tài khoản sudo bạn có thể chạy câu lệnh sau:
$ SUDO_PASSWORD=xxxxxxxx rake spec
4. Chú ý
Serverspec chỉ thích hợp cho 1 server đơn hoặc docker container Nếu bạn cho nhiều server gộp lại thì bạn cần phải viết rspec riêng cho mỗi máy