11. Copyright Drecom Co., Ltd. All Rights Reserved.
サンプルコード
recipe.rb
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
● itamae local recipe.rb
● itamae ssh --host host001.example.jp recipe.rb
12. Copyright Drecom Co., Ltd. All Rights Reserved.
Chef -> itamae
● 弊社だと元々CentOS 6環境をChefでプロビジョニングしてい
た
○ ドリコムのInfrastructure as code
http://www.slideshare.net/y05_net/infrastructure-as-co
de-35373108
● CentOS 7移行時にChefのレシピを全部itamaeに置き換えた
○ レシピ数は全部で30~40くらい
○ 過渡期でインフラエンジニア2人 + アプリエンジニア4人くら
いがかりで2~3ヶ月
○ 既存サービスはそのままで、新規サービスは全てCentOS
7で作成
13. Copyright Drecom Co., Ltd. All Rights Reserved.
itamaeを導入した理由
● vs Chef
○ ChefはRuby製だけどRuby以外に覚えること(Chefの独
自ルール)が多くて初見だと学習コスト高そうだった
○ itamaeは普通のRubyのgemでRubyを知っていれば他に
覚えることは少ないのでアプリエンジニアにもとっつきやす
い
○ 当時6人中3人がitamae使えたのでチーム内で教えれば
なんとかなるだろうという思い
● vs Ansible
○ 検討材料としては挙がったけど、Ruby書ける人が多かっ
たので流れでitamaeになった
14. Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:Serverspec
● http://serverspec.org/
● RSpec(Rubyのテスティングフレームワーク)をベースにした、
インフラ構成をテストするためのツール
● インフラ構成のテストをするツールだとこれがデファクトスタン
ダード
● itamaeで実行したプロビジョニングが本当に設定されてるかど
うかの検証をしている
15. Copyright Drecom Co., Ltd. All Rights Reserved.
nginx_spec.rb
describe package('nginx') do
it { should be_installed }
end
describe service('nginx') do
it { should be_enabled }
it { should be_running }
end
サンプルコード
16. Copyright Drecom Co., Ltd. All Rights Reserved.
使っているツール:Vagrant
● https://www.vagrantup.com/
● HashiCorp社が作った仮想環境の構築ツール
● VirtualBoxやAWSなどを同一インターフェースで扱える
● プラグイン導入することでいろんな環境で使える
21. Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
● マルチ構成プロジェクトにして、1つのジョブで同時に複数ビル
ドが実行できるようにしてる
● Jenkins 2.0の新機能のpipelineを使いたいけど、複数のジョ
ブのコンソールログが1ヶ所になって混ざってしまうので移行は
してない
22. Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
縦の軸はどのクラウドに対してプロビジョニングをするかどうか
● 対応するVagrantプラグインをインストールして
● vagrant up --provider=$PROVIDER みたいな感じで実行
$
P
R
O
V
I
D
E
R
23. Copyright Drecom Co., Ltd. All Rights Reserved.
開発ビルド用のジョブ
横の軸は使用するnodeファイル(設定ファイル)
● リポジトリにコミットしてるのはdefault.yml(role全無し)だけだ
が、ビルド時にrolesを全部付与したyml(role_all.yml)を生成
してビルドを実行することにより、role全有り、全無しを両方テ
ストしてる
$NODE
24. Copyright Drecom Co., Ltd. All Rights Reserved.
イメージビルド用のジョブ
● プルダウンでパラメータを切り替えている
● 弊社だとサービス単位(費用が発生する請求単位)で AWSや
IDCFのアカウントが複数分かれているので、作成先のアカウ
ントを選択できるようにしてる
○ クラウドによってはアカウント間でのイメージ共有ができる
ので不要なんだけど念のため