Ansible+ServeRSpecで学ぶ基盤自動構築(ダイジェスト版)


本日は今話題(※)のAnsibleとserverspecを使って、基盤自動構築を試してみたいと思います。
(※流行り廃りの激しいこの業界、この構成はもしかしてふるかったりしますでしょうか・・・教えて偉い人)
想定読破時間:5分

最初に

  • とりあえず最初に言っておきます以下の本の宣伝です。是非買ってください
  • ちょっとでもいいと思ったら以下ポチッとお願いします(アフィリエイト並の感想)
  • https://techbookfest.org/product/4761877666070528

伝えたいこと

今日はみんなにどうしても伝えたいことがある。(SAKURA○)

  • 自動構築は最高。神になれる。
  • 自動構築は簡単。いつも手でやっていることをちょっと頭捻って言葉にするだけ。

構成

自動構築する完成図は以下です。(Ubuntuと書いてありますが、RaspberryPiなのでRaspbianです)

対象読者

以下の人が特にオヌヌメです。
- インフラエンジニアをちょっとやってて自動構築に興味がある
- Wordpressをインストールしたことがある人
- アプリケーションエンジニアだけどどうやって基盤が構築されているか知りたい人
- とにかく楽したい人
- 今日朝ごはんあるいは昼ごはんあるは夜ご飯を食べた人
- 神(あるいはそれに準ずる立場の方)

Ansibleで構築してみる

Ansibleとは何か、みたいな前提知識は一旦ここでは端折っちゃいますね(本の中では書いてます。)
端的にいうとAnsibleは自動で構築できるフレームワークです(結局説明しましたね。)
もっともっと簡単にいうと、構築するときのシェルスクリプトの書き方をまとめたものみたいなものです。

例えば、Wordpressで使う用のApacheのインストールおよび、起動設定は以下の通りに記載します。

main.yml
---
- name: Install Apache
    apt: name=apache2 update_cache=yes cache_valid_time=3600
- name: Start Aapche
    service: name=apache2 state=started enabled=yes

ぱっとみて何をしようとしているか非常にわかりやすいですね。
(aptコマンドでapach2インストール、そのあと、serviceコマンドでapache起動)
このファイルを作ったらあとは以下の通り実行するだけです。

Ansible
root@raspberrypi:~# ansible-playbook -i hosts common.yml

TASK [Apache : Install Apache] 
**************************************************************************
changed: [raspberrypi01.local]
〜略〜

ね?簡単でしょう?
実際には事前の準備等々があるので、めちゃくちゃ省略してますが、
雰囲気だけでも伝わればいいかなと思います。(本では丁寧に解説してます)

ServeRSpecでテストしてみる

構築をしたら次は構築できてるか確認(テスト)ですね。これはserverspecというツールを使います。
(元々はRSpecというrubyでのテストのためのツールをベースにしているようです。)

sample_spec.rb
# Checking Installed Apache2
 describe package('apache2') do
  it {should be_installed}
 end 

# Checking Apache2 Service Status
 describe service('apache2') do
  it { should be_enabled }
  it { should be_running }
 end
ServeRSpec
root@raspberrypi:~# rake
Package "apache2"
is expected to be installed

Service "apache2"
is expected to be enabled
is expected to be running
〜略〜

知識なんかなくったって何をしているかわかりやすいですね。shouldは「~すべき」ですからね。
これもAnsibleと同様、めちゃくちゃ省略してます。(Ansibleと同様、本では丁寧に(以下略))

最後に

大体5分で説明するならこれぐらいの分量ですね。(時間は金より重い。)
他にも本だとWordpressを自動構築するときの注意点だとか、AWSとかでの自動構築のイメージとか紹介してます。

上に戻らなくてもいいようにここにもリンク貼っておきますね。
https://techbookfest.org/product/4761877666070528