メニュー
本ハンズオンのゴール
- 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
# コメントです # ハンズオン内で実行するコマンドです(コピー&ペーストで貼り付けて利用して下さい) command "foo" "bar"
以下、出力例の表示です。
output
# コマンドの実行後の出力例です foo bar
上記に実行例と異なる出力を確認した場合にはお声がけ下さい。
事前準備について
- ハンズオンを円滑に進めるにあたって事前準備は出来るだけ行うようにして下さい
資料内で紹介する各種ツールのバージョンについて
資料内で紹介する各種ツールのバージョンは以下の通りです。
- OS
output
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.4 LTS Release: 14.04 Codename: trusty
- Ruby
output
$ ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
- Serverspec
output
$ bundle exec gem list | grep serverspec serverspec (2.36.0)
- Infrataster
output
$ bundle exec gem list | grep infrataster infrataster (0.3.2)
- Docker Engine
output
$ 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 をインストールする
作成した仮想マシンにログインして以下のコマンドを実行する。
command
# # 備考: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 のバージョンを確認する。
command
# rbenv のバージョンを確認する rbenv --version
以下のように出力されることを確認する。
output
# # 備考:バージョン番号に差異があるかもしれません # rbenv 1.0.0-21-g9fdce5d
以下のコマンドを実行して rbenv のサブコマンドを確認する。
command
rbenv
以下のように出力されることを確認する。
output
rbenv 1.0.0-21-g9fdce5d Usage: rbenv[ ] 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 ' 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 をインストールする。
command
rbenv install -v 2.3.1
ビルドに暫く時間が掛かるのでビールでも呑んで待機しておく。
インストールが終了したら以下のコマンドを実行して Ruby 2.3.1 が利用出来るようにしておく。
command
rbenv global 2.3.1
以下のコマンドを実行して Ruby のバージョンを確認する。
command
ruby -v
以下のように出力されることを確認する。
output
# # 備考:リビジョン番号に差異があるかもしれません # ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
1.2.3. bundler をインストールする
以下のコマンドを実行して bundler をインストールする。
command
gem install bundler --no-ri --no-rdoc -V
以下のように出力されることを確認する。
output
(snip) Successfully installed bundler-1.12.5 1 gem installed
1.3. 作成した仮想マシンに Serverspec と Infrataster をインストールする
1.3.1. 教材を git clone する
以下のコマンドを実行して教材を git clone
する。
command
git clone https://github.com/inokappa/handson-serverspec.git
1.3.2. budler を利用して Serverspec と Infrataster をインストールする
以下のコマンドを実行して Serverspec と Infrataster をインストールする。
command
cd handson-serverspec bundle install --path vendor/bundle
以下のように出力されることを確認する。
outout
(snip) Bundle complete! 4 Gemfile dependencies, 39 gems now installed. Bundled gems are installed into ./vendor/bundler.
以下のコマンドを実行して Servespec と Infrataster がインストールされていることを確認する。
command
bundle exec gem list | egrep 'serverspec|infrataster'
以下のように出力されることを確認する。
output
# # 備考:バージョン番号に差異があるかもしれません # infrataster (0.3.2) serverspec (2.36.0)
1.4. 作成した仮想マシンに Docker Engine をインストールする
1.4.1. 以下のコマンドを順番に実行する
command
# # 備考: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. インストールされたことを以下のコマンドを実行して確認する
command
sudo docker version
以下のように出力されることを確認する。
output
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 にてログインしている場合には本ステップは実施する必要はありません
command
sudo usermod -aG docker ${USER} id ${USER}
以下のように出力されることを確認する。
output
# # vagrant で試した例です # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),999(docker)
一度、SSH からログアウトします。
1.4.5. 再びログインして docker のバージョンを確認する
command
docker version
以下のように出力されることを確認する
output
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 でテスト
以下のコマンドを実行して準備した構成をテストする。
command
cd ~/handson-serverspec/ bundle exec rspec spec/local_exec_spec.rb
以下のように出力されることを確認する。
output
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 ハンズオン資料(実践編)」に続く…