gemを作った時に複数サーバにRundockでシュッとインストールする
概要
gemのツールを作った時、bundle exec rake releaseでrubygemsにアップロードしてからツールを使う複数のサーバにインストールする際、わざわざAnsibleやChefといった構成管理を使うのも面倒臭かったで、RundeckにビルトインのRake Taskを実装して、使ってみた時の知見
前提
既にbundle exec rake releaseでrubygemsにアップロードできる環境があるものとします
準備
- gemspecファイルに以下の1行を追加
spec.add_development_dependency 'rundock'
- Rakefileファイルに以下の1行を追加
require 'rundock/gem/tasks'
- パッケージをインストールして確認
$ bundle install $ bundle exec rake -T
- 以下の行が表示されればok
rake rundock # Run rundock with default configuration rake rundock:do # Run rundock with scenariofile.(env:SCENARIO_FILE_PATH)
# ホスト毎にタスク実行の流れを書く - target: client-01 task: - gem_install - target: client-02 task: - gem_install --- # インストールしたいサーバのsshログイン情報 # sshオプションのport,user,keyは省略可能 client-01: host: 192.168.1.11 ssh_opts: port: 22 user: anyuser key: "~/anyuser/id_rsa_any" client-02: host: 192.168.1.12 ssh_opts: port: 22 user: anyuser2 key: "~/anyuser/id_rsa_any2" --- # タスク(gemのインストールの実処理の配列) gem_install: command: - "echo \"start: `hostname`\"" - "sudo gem install <your gem name>"
実行
$ bundle exec rake release $ bundle exec rake rundock
成功すれば以下の様な結果になるはず
start: client-01 Fetching: your_gem-x.x.x.gem (100%) Successfully installed your_gem-x.x.x 1 gem installed start: client-02 Fetching: your_gem-x.x.x.gem (100%) Successfully installed your_gem-x.x.x 1 gem installed