メニュー
本ハンズオンのゴール
- Serverspec の各種バックエンドを試してみます
- Docker バックエンドを利用して Dockerfile のテストを作成し、テストを行います
- Infrataster を利用して Web サイトの振る舞いのテストを行います
- おまけで Jenkins を利用してテスト、Docker Hub へのコンテナイメージの自動化も行います
注意
- 資料の見方
- 事前準備について
- 資料内で紹介する各種ツールのバージョンについて
- 後片付けはしっかりと
参考資料
- 参考 URL
- 参考書籍
- ハンズオン資料
- ハンズオン教材
1. 事前準備
1.1. Serverspec を実行する仮想マシンを用意する
1.2. 仮想マシンに Ruby をインストールする
1.3. 仮想マシンに Serverspec をインストールする
1.4. 仮想マシンに Docker Engine をインストールする
1.5. 構成の確認
本ハンズオンのゴール
- Serverspec で提供される各種バックエンドを試してみます
- Docker バックエンドを利用して Dockerfile のテストを作成し、テストを行います
- Infrataster を利用して Web サイトの振る舞いのテストを行います
注意
資料の見方
以下、実行するコマンドの表示です。
# コメントです
# ハンズオン内で実行するコマンドです(コピー&ペーストで貼り付けて利用して下さい)
command "foo" "bar"
以下、出力例の表示です。
# コマンドの実行後の出力例です
foo
bar
上記に実行例と異なる出力を確認した場合にはお声がけ下さい。
事前準備について
- ハンズオンを円滑に進めるにあたって事前準備は出来るだけ行うようにして下さい
資料内で紹介する各種ツールのバージョンについて
資料内で紹介する各種ツールのバージョンは以下の通りです。
- OS
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
- Ruby
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
- Serverspec
$ bundle exec gem list | grep serverspec
serverspec (2.36.0)
- Infrataster
$ bundle exec gem list | grep infrataster
infrataster (0.3.2)
- Docker Engine
$ docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
後片付けはしっかりと
本日作成した仮想マシンはハンズオン終了後、不要であれば削除しておきましょう。
参考資料
参考 URL
参考書籍
ハンズオン資料
ハンズオン教材
1. 事前準備
概要
1-1. Serverspec を実行する仮想マシンを用意する
1-2. 作成した仮想マシンに Ruby をインストールする
1-3. 作成した仮想マシンに Serverspec をインストールする
1-4. 作成した仮想マシンに Docker Engine をインストールする
1-5. 構成
1.1. Serverspec を実行する仮想マシンを用意する
1.1.1. 仮想マシンを用意する
Serverspec を動かす仮想マシンを Ubuntu Serve 14.04 LTS 64bit で作成しておきましょう。
環境 | AMI ID / イメージ名 / Vagrant Box | 参考手順 |
---|---|---|
AWS | ami-a21529cc | 体育会系 Amazon EC2 を Vagrant 経由で起動する手順 |
IDCF Cloud | Ubuntu Serve 14.04 LTS 64bit | 体育会系 IDCF Cloud の仮想マシンを Vagrant 経由で起動する手順 |
ローカルマシン | ubuntu/trusty64 | vagrant init ubuntu/trusty64; vagrant up --provider virtualbox |
上記の何れかの構成でセットアップされた仮想マシンを前提にハンズオンを進めます。
1.1.2. 作成した仮想マシンに SSH でログイン出来るようにしておく
- 作成した仮想マシンに事前に SSH でログイン出来ることを確認しておきましょう
1.1.3. 作成した仮想マシンに HTTP でアクセス出来るようにしておく
- 作成した仮想マシンに事前に HTTP でアクセス出来ることを確認しておきましょう
1.2. 作成した仮想マシンに Ruby をインストールする
1.2.1. rbenv をインストールする
作成した仮想マシンにログインして以下のコマンドを実行する。
#
# 備考:idcf クラウドを利用していて root にてログインしている場合には sudo を付ける必要はありません
#
# apt-get update を実行する
sudo apt-get update
# Ruby のインストールに必要なパッケージを事前にインストールする
sudo apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev git
# rbenv を git clone する
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
# Ruby をビルドする為に必要な ruby-build を git clone する
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# rbenv へのパスを通す
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# rbenv を初期化する
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# rbenv を利用する為に .bash_profile の再読み込みを行う
source ~/.bash_profile
以下のコマンドを実行して rbenv のバージョンを確認する。
# rbenv のバージョンを確認する
rbenv --version
以下のように出力されることを確認する。
#
# 備考:バージョン番号に差異があるかもしれません
#
rbenv 1.0.0-21-g9fdce5d
以下のコマンドを実行して rbenv のサブコマンドを確認する。
rbenv
以下のように出力されることを確認する。
rbenv 1.0.0-21-g9fdce5d
Usage: rbenv <command> [<args>]
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
install Install a Ruby version using ruby-build
uninstall Uninstall a specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme
install
のサブコマンドが利用可能であるか確認する。
1.2.2. rbenv を利用して Ruby をインストールする
以下のコマンドを実行して Ruby 2.3.1 をインストールする。
rbenv install -v 2.3.1
ビルドに暫く時間が掛かるのでビールでも呑んで待機しておく。
インストールが終了したら以下のコマンドを実行して Ruby 2.3.1 が利用出来るようにしておく。
rbenv global 2.3.1
以下のコマンドを実行して Ruby のバージョンを確認する。
ruby -v
以下のように出力されることを確認する。
#
# 備考:リビジョン番号に差異があるかもしれません
#
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
1.2.3. bundler をインストールする
以下のコマンドを実行して bundler をインストールする。
gem install bundler --no-ri --no-rdoc -V
以下のように出力されることを確認する。
(snip)
Successfully installed bundler-1.12.5
1 gem installed
1.3. 作成した仮想マシンに Serverspec と Infrataster をインストールする
1.3.1. 教材を git clone する
以下のコマンドを実行して教材を git clone
する。
git clone https://github.com/inokappa/handson-serverspec.git
1.3.2. budler を利用して Serverspec と Infrataster をインストールする
以下のコマンドを実行して Serverspec と Infrataster をインストールする。
cd handson-serverspec
bundle install --path vendor/bundle
以下のように出力されることを確認する。
(snip)
Bundle complete! 4 Gemfile dependencies, 39 gems now installed.
Bundled gems are installed into ./vendor/bundler.
以下のコマンドを実行して Servespec と Infrataster がインストールされていることを確認する。
bundle exec gem list | egrep 'serverspec|infrataster'
以下のように出力されることを確認する。
#
# 備考:バージョン番号に差異があるかもしれません
#
infrataster (0.3.2)
serverspec (2.36.0)
1.4. 作成した仮想マシンに Docker Engine をインストールする
1.4.1. 以下のコマンドを順番に実行する
#
# 備考:idcf クラウドを利用していて root にてログインしている場合には sudo を付ける必要はありません
#
sudo apt-get -y install apt-transport-https ca-certificates unzip
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo sh -c 'echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list'
sudo apt-get update
sudo apt-get -y install docker-engine
1.4.2. インストールされたことを以下のコマンドを実行して確認する
sudo docker version
以下のように出力されることを確認する。
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
1.4.3. ユーザー権限で docker コマンドを利用出来るようにもうひと手間加える
※ idcf クラウドを利用していて root にてログインしている場合には本ステップは実施する必要はありません
sudo usermod -aG docker ${USER}
id ${USER}
以下のように出力されることを確認する。
#
# vagrant で試した例です
#
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),999(docker)
一度、SSH からログアウトします。
1.4.5. 再びログインして docker のバージョンを確認する
docker version
以下のように出力されることを確認する。
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
1.5. 構成の確認
1.5.1. 構成図
事前準備が完了すると以下のような構成が利用可能な状態となっている。
1.5.2. Serverspec でテスト
以下のコマンドを実行して準備した構成をテストする。
cd ~/handson-serverspec/
bundle exec rspec spec/local_exec_spec.rb
以下のように出力されることを確認する。
OS のバージョンは Ubuntu 14.04 であることを確認する
Command "lsb_release -a"
stdout
should match /Ubuntu 14.04/
docker-engine がインストールされていることを確認する
Package "docker-engine"
should be installed
docker-engine 起動していること / docker のバージョンを確認する
Service "docker"
should be running
Command "docker version"
stdout
should match /1.11.2/
Ruby や servespec / infrataster がインストールされていることを確認する
インストールされている Ruby のバージョンは 2.3.1 である
Serverspec がインストールされている
Infrataster がインストールされている
Finished in 0.8244 seconds (files took 0.7915 seconds to load)
7 examples, 0 failures
実際の出力画面は以下のように表示される。
上図のように出力されれば事前準備は完了となる。
「Serverspec ハンズオン資料(実践編)」に続く...