Consul をインストールするためのitamaeプラグインを作りました
itamae-plugin-recipe-consul (0.1.0): Itamae plugin to install Consul with init scripts https://t.co/1QxtC1D4ck
— RubyGems (@rubygems) 2016年5月18日
モチベーション
consul自体はgolang製なのでバイナリポン置きでインストールできるのですが、consulのagentをinit.dやsystemdでデーモン化する必要があったのでitamaeプラグインにしました。
OSのバージョンを見てよしなにinit.dスクリプトやsystemdユニットファイルを設置します。CentOS 6, CentOS 7, Debian 8辺りでCIしてます。
consul watchをserviceで起動するレシピも作ったのですが、stretcher辺りと密結合してるので含めていません。(社内レシピには含めてる)
使い方
レシピの中で下記のように書けばOK
include_recipe "consul"
プラグイン内でモジュール化してるので下記のように個別に include_recipe
もできます
include_recipe "consul::setup" include_recipe "consul::install" include_recipe "consul::service"
node.ymlはこんな感じ
consul: # install consul version (required) version: "0.6.4" # download zip platform (default: "linux_amd64") platform: "linux_amd64" # path to downloaded zip file (default: "/usr/local/src") src_dir: "/usr/local/src" # path to consul executable file (default: "/usr/local/src") bin_dir: "/usr/local/bin" # consul agent -data-dir option (default: "/tmp/consul") data_dir: "/tmp/consul" # consul agent other options (default: none) options: "-server -bootstrap-expect 1" gomaxprocs: 2
メリット
serviceにしておくとitamaeやserverspecで
# consul.rb service "consul" do action [:enable, :start] end
# consul_spec.rb describe service("consul") do it { should be_enabled } it { should be_running } end
のように書けて便利
スペシャルサンクス
consulのinit.dスクリプトとsystemdユニットは下記を参考にさせてもらいました m( )m
追伸
gemをリリースした後で別の人が作った同名のgemを見つけたorz *1 https://github.com/toritori0318/itamae-plugin-recipe-consul