Giới thiệu gem Serverspec
Bài đăng này đã không được cập nhật trong 7 năm
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
All rights reserved