Skip to content

Instantly share code, notes, and snippets.

@minoritea
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minoritea/75a0c23c11f03dcb489c to your computer and use it in GitHub Desktop.
Save minoritea/75a0c23c11f03dcb489c to your computer and use it in GitHub Desktop.

Serverspec

Serverspec Workshop(2)

Minori Tokuda


  1. Vagrant立ち上げ ======================
  • 添付のVagrantファイルを展開し、ディレクトリの中でvagrant upを実行。
  • vagrant ssh server1で一つ目のサーバーに接続
  • gem install serverspec --no-documentでServerspecをインストール
  • sudo vi /etc/hostsで以下を追加
192.168.33.11 server2

  1. ひな形の作成 ======================
  • mkdir remote-spec
  • cd remote-spec
  • serverspec-init
    • OS typeはUN*X
    • backendはssh
    • vagrant instanceはn
    • hostname はserver2

  1. リモート側のテスト(1) ======================
  • remote-specディレクトリ内で、
  • rm spec/server2/sample_spec.rb
  • vim spec/server2/mysql_server_spec.rb で以下を入力
require 'spec_helper'

# check if MySQL server is installed on server2
describe package('mysql-server') do
  it { should be_installed }
end

# confirm connection to MySQL server
describe command('mysqladmin ping -h localhost -uroot --connect_timeout=1') do
  its(:exit_status) { should eq 0 }
end

describe file('/etc/my.cnf') do
  its(:content) { should match /^user=mysql$/ }
end

テスト実行

rake spec:server2 # passwordはvagrant

=> 失敗する


  1. リモート側のテスト(2) ======================

server2にmysql-serverを入れる

  • ssh vagrant@server2 #password => vagrant
  • sudo yum install -y mysql-server
  • sudo service mysqld start

server1でテスト実行

rake spec:server2 # passwordはvagrant

=> 成功する(はず)


  1. ローカルホスト側のテスト(1) ======================
  • remote-specディレクトリ内で、
  • mkdir spec/server1
  • vim spec/server1/mysql_client_spec.rb で以下を入力
require 'spec_helper'

set :backend, :exec

# check if mysql client is installed on localhost
describe package('mysql') do
  it { should be_installed }
end

# confirm connection to server2
describe command('mysqladmin ping -h server2 -uroot --connect_timeout=1') do
  its(:exit_status) { should eq 0 }
end

=> 失敗する


  1. ローカルホスト側のテスト(2) ====================== server1にmysqlを入れる

  • sudo yum install -y mysql

server1からrootでアクセス出来るようにする

  • mysql -uroot -h server2 以下を入力
CREATE USER root@192.168.33.10;
GRANT ALL ON *.* TO root@192.168.33.10;

server1で再度実行

  • rake spec:server1

=> 成功する(はず)


  1. テスト全体の実行 ======================
  • rake spec:all

=> 成功する(はず)


以上

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment