ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

自動構成ツール「itamae」をMacのローカル環境管理に使ってみる

はじめに

最近はInfrustructure as a Codeネタばかりですね。仕事でCapistranoでツールを作ったあと、Serverspecでテストコードを書こうとしています。次に構成管理ツールとしてpuppet、ansible、itamaeから選ぼうと思っていて、まずはその第一弾としてitamaeを使ってみます。

take-she12.hatenablog.com

http://take-she12.hatenablog.com/entry/2016/05/1/120000take-she12.hatenablog.com

itamae

クックパッドの社員が作った、軽量版chefという扱い。chefは学習コストが高い(実際に使ったことはないから知らない)Puppetはエージェントあり、エージェントレスのAnsibleはyamlが気に食わないというひとがitamaeにたどり着くとか?このあたりの比較は全部触ってからだそうと思います。

install

MacBook-Air:techstudy take$ sudo gem install itamae
Password:
Fetching: net-telnet-0.1.1.gem (100%)
Successfully installed net-telnet-0.1.1
Fetching: sfl-2.2.gem (100%)
Successfully installed sfl-2.2
Fetching: specinfra-2.57.1.gem (100%)
Successfully installed specinfra-2.57.1
Fetching: ansi-1.5.0.gem (100%)
Successfully installed ansi-1.5.0
Fetching: schash-0.1.2.gem (100%)
Successfully installed schash-0.1.2
Fetching: itamae-1.9.6.gem (100%)
Successfully installed itamae-1.9.6
Parsing documentation for net-telnet-0.1.1
Installing ri documentation for net-telnet-0.1.1
Parsing documentation for sfl-2.2
Installing ri documentation for sfl-2.2
Parsing documentation for specinfra-2.57.1
Installing ri documentation for specinfra-2.57.1
Parsing documentation for ansi-1.5.0
Installing ri documentation for ansi-1.5.0
Parsing documentation for schash-0.1.2
Installing ri documentation for schash-0.1.2
Parsing documentation for itamae-1.9.6
Installing ri documentation for itamae-1.9.6
Done installing documentation for net-telnet, sfl, specinfra, ansi, schash, itamae after 4 seconds
6 gems installed

ちゃんとServerspecの内部で動いている「specinfra」も入ってますね。

動かす

brewで入っているものを確認

MacBook-Air:itamae take$ brew list
ansible     libevent    oniguruma   postgresql  ruby-build
autoconf    libyaml     openssl     rbenv       tmux
jq      mysql       pkg-config  readline    tree

レシピを書く

brew.rb

%w(ansible libevent oniguruma postgresql ruby-build autoconf libyaml openssl rbenv tmux jq mysql pkg-config readline tree).each do |pkg|
  package pkg do
    action :install
    only_if "brew info #{ pkg } | grep -qi 'Not Installed'"
  end
end

参考

OSXのHomebrewでインストールするのをitamaeでやるようにした - すがブロ

実行する

MacBook-Air:itamae take$ itamae local brew.rb 
 INFO : Starting Itamae...
 INFO : Recipe: /Users/take/itamae/brew.rb

インストールされていなければ実行するようにしているので、何も起こらなくて正常ですね。

おわりに

あとはGUIアプリにbrew caskを使えばいいのか?リモートサーバに対しても何らかの構築をitamaeで次回やりたいと思います。