itamaeを複数のマシンに走らせたい場合に、いちいちitamae ssh -j [nodeファイル指定] -j [host_name] [recipeファイル]
としていくのは結構面倒ですよね。適用させるマシンが増えれば増えるほど面倒くさい。
そうなると多分シェルを使うとかになると思いますが、別のやり方もあります。それがrundockです。
インストール
今回はitamaeを使うという前提で。
gem 'itamae', '~> 1.5'
# 複数の環境でitamaeを提供する
gem 'rundock'
gem 'rundock-plugin-operation-itamae'
itamae1.5以上でないと実行にエラーが起きる。
rundock
シナリオファイル
どのマシンにどのレシピを実行するかをyaml形式で書きます。今回は次のように書きます。
- target: dev-el4
itamae:
- cookbooks/redis_elasticsearch.rb
- node_json: nodes/redis_elasticsearch.json
- log_level: info
- sudo: true
- target: dev-el2
itamae:
- recipes/redis/redis.rb
- node_json: nodes/redis.json
- log_level: info
- sudo: true
---
dev-el4:
host: 127.0.0.1
ssh_opts:
port: 2200
user: vagrant
key: /usr/local/project/itamae_recipe/.vagrant/machines/el4/virtualbox/private_key
---
dev-el2:
host: 127.0.0.1
ssh_opts:
port: 2201
user: vagrant
key: /usr/local/project/itamae_recipe/.vagrant/machines/el2/virtualbox/private_key
---
実行コマンド
実行はrundock do scenario.yml
dry runするときは、rundock do scenario.yml --dry-run
シナリオ実行すると適用するitamaeが実行されます。