2018年6月2日土曜日

itamae を使って docker イメージを作成してみた

概要

itamae は Ruby で作られたプロビジョニングツールです
docker イメージも作成できるということなので試してみました

環境

  • macOS 10.13.4
  • Ruby 2.5.1p57
  • itamae 1.9.11
  • docker 18.03.1-ce

itamae のインストール

今回は bundler を使っていますが、グローバルにインストールして良いと思います

  • bundle init
  • vim Gemfile
gem "itamae"
  • bundle install --path vendor

プロジェクトの作成

公式の wiki にあるようにディレクトリ構成を作成します
専用のコマンドも用意されているようなのでそれを使って構築します
もちろん今回の方法じゃなくても OK です

  • bundle exec itamae init test
      create  
      create  Gemfile
      create  cookbooks/.keep
      create  roles/.keep
         run  bundle install from "."

test という名前のプロジェクトを作成します
今回は docker イメージを作成するので gem を追加します

  • vim Gemfile
gem 'docker-api'

この配下に role と cookbook を作成します

role の作成

role はサーバの役割ごとに作成します
例えば Web サーバ、DB サーバに対してレシピを作成する場合は web, db などといった role を作成します
今回はテストサーバなので test_server という role を作成します

  • cd test
  • bundle install --path vendor
  • bundle exec itamae generate role test_server
      create  
      create  default.rb
      create  files/.keep
      create  templates/.keep

こんな感じで作成されます
あとで cookbook を作成するのでその cookbook を参照するように role のレシピに記載します

  • vim roles/test_server/default.rb
include_recipe '../../cookbooks/vim'

相対パスで cookbook ディレクトリの場所を指定します
vim cookbook はこの後作成します

cookbook の作成

上述の通り vim をインストールする cookbook を作成しましょう
この cookbook が実際にプロビジョニングする内容を記載するレシピになります

  • bundle exec itamae generate cookbook vim

今度は cookbook を generate します

      create  
      create  default.rb
      create  files/.keep
      create  templates/.keep

作成されたらレシピを記載します

  • vim cookbooks/vim/default.rb
execute 'update apt' do
        command 'apt -y update'
end

package 'vim' do
        options '--force-yes'
end

やっていることは簡単で apt update した後で vim をインストールしています
ではこれを使って docker イメージを作成してみましょう

docker イメージの作成

itame は作成したレシピを使って docker イメージを作成することが可能です
他にも localhost に適用したり SSH を使ってリモートホストに実行することも可能です

  • bundle exec itamae docker --image=nginx --tag nginx_with_vim roles/test_server/default.rb

実行すると nginx イメージの pull が始まりその後プロビジョニングが始まります

 INFO : Starting Itamae...
 INFO : Recipe: /Users/hawk/Documents/work/itamae/test/roles/test_server/default.rb
 INFO :   Recipe: /Users/hawk/Documents/work/itamae/test/cookbooks/vim/default.rb
 INFO :     execute[update apt] executed will change from 'false' to 'true'
 INFO :     package[vim] installed will change from 'false' to 'true'
 INFO : Image created: sha256:58b463f0c5730e230e5d6124c6b3112bdf5a3c0cf1347c629038f0af9d7c9c62

こんな感じでログが表示されれば成功です
細かいヘルプは bundle exec itamae help docker で確認できます

動作確認

docker images で nginx_with_vim というイメージが作成されていることを確認します
そして run で動作確認してみましょう

  • docker run --rm nginx_with_vim vim --version

これで vim のバージョン情報が表示されると思います

最後に

itame を使ってレシピを作成して、そこから docker イメージを作成してみました
今回は docker イメージを作成しましたが、作成したレシピは普通の Ubuntu サーバなどに対しても実行可能です

Ansible に比べて情報は少ないですが、簡単に使えると思います

参考サイト

0 件のコメント:

コメントを投稿