最近のServerkitの様子

最近のServerkit界隈の変更についてまとめておきます。

vagrant-serverkit

vagrant-serverkit というのをつくりました。これでVagrant仮想マシンを立ち上げるときに、自動的にServerkitでプロビジョニングを行えます。プラグインの管理をうまくやるためにVagrantのコードを追ったり、~/.ssh/config を書き換えなくても動作するように色々苦労しましたが、期待通り動くものができたと言えます。使い方はこういう感じ。プラグインをインストールするとserverkitという名前のprovisionerが定義されて、適切な設定を与えると動作します。

# Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.provision :serverkit do |serverkit_config|
    serverkit_config.recipe_path = "recipe.yml.erb"
    serverkit_config.variables_path = "variables.yml"
  end
end
$ vagrant plugin install vagrant-serverkit
$ vagrant up

vagrant-multiplug

Serverkitで利用するプラグインVagrantの環境上でも利用できるようにするため、vagrant-multiplug というのもつくりました。Vagrantfileの中に利用するプラグイン (というか実体はGem) の名前を書いておくと、そのプラグインがまだVagrantに同梱されているRuby環境にインストールされていない場合に勝手にインストールしてくれるというものです。この辺りの話については、Vagrantfileで使うプラグインを定義する - Qiita という記事にまとめました。使い方としてはこんな感じで、vagrant-serverkitやserverkit-rbenvなどのGemを利用するという旨をVagrantfileに書く感じです。

# Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"

  config.plugin.add_dependency "vagrant-serverkit"
  config.plugin.add_dependency "serverkit-rbenv", "0.0.2"

  config.vm.provision :serverkit do |config|
    config.recipe_path = "recipe.yml"
  end
end
$ vagrant plugin install vagrant-multiplug
$ vagrant up

dotfiles

r7kamura/dotfiles というMacの環境構築用に利用していた半手動のシェルスクリプトを、Serverkitベースのものに置き換えてみました。また、r7kamura/dotfiles - Travis CIOS Xの環境を用意してテストを走らせてみています。このCIは結構不具合が検出できるので重宝してます。ServerkitをMacの構成管理に使う方法については Serverkitを利用してVagrantの構成管理を行う - Qiita にも書きました。

serverkit-atom

Atom.appのプラグインを管理するために、serverkit-atom というServerkit用のプラグインをつくってみました。 Atomに同梱されているapmを利用しています。こういう感じでレシピを書いて適用すると、そのプラグインが入った状態になります。

# recipe.yml
resources:
  - type: atom_package
    name: sort-lines
  - type: atom_package
    name: vim-mode
    version: 0.43.0

serverkit-homebrew

homebrewやhomebrew cask関係のリソースを serverkit-homebrew といプラグインに分けました。同じコマンド体系を使っているのでlinuxbrewなどでも動くようです。使い方はこういう感じ。

resources:
  - type: homebrew_package
    name: zsh
  - type: homebrew_package
    name: rbenv
    options: --HEAD

--log-level

Serverkitの実行時にどの程度までログを表示するか選べるようにしました。Serverkitは標準では成功と失敗という簡単な出力しか表示しませんが、--log-level=DEBUG とやるとサーバ上で実行される全てのコマンドやその結果も表示されるようになります。エスケープシーケンスを利用した着色を標準的に利用していこうと思っているので、--no-color オプションも提供してます。

リソース

その他、幾つかのリソースが追加されたり、リソースに色々な属性を持たせられるようになりました。