20日目なので僕が今まで作った itamae プラグインをまとめて紹介します 1
itamae-plugin-resource-encrypted_remote_file
itamaeで暗号化されたファイルを復号化して転送するためのプラグインです
- https://github.com/sue445/itamae-plugin-resource-encrypted_remote_file
- https://rubygems.org/gems/itamae-plugin-resource-encrypted_remote_file
使い方
ファイルを暗号化
別途 reversible_cryptography をインストールして暗号化してください
gem install reversible_cryptography
reversible_cryptography encrypt --password=PASSWORD --src-file=/path/to/secret_file.txt --dst-file=/pass/to/encrypted_file.txt
レシピ
remote_file の代わりに encrypted_remote_file
を使うことで、暗号化されたファイルを転送時に復号化します
encrypted_remote_file "/home/deployer/.ssh/id_rsa" do
owner "root"
group "root"
source "files/id_rsa.encrypted"
password ENV["ID_RSA_PASSWORD"]
end
password
以外は remote_file
と使い方は全く同じです。
応用編:dotenvと組み合わせて使う
パスワードをソースコード中に書くのも嫌なので、自分は dotenv を使って .env
にパスワードを書くようにしています。(.envはコミットしない)
ID_RSA_PASSWORD=12345678
.env
require 'dotenv'
Dotenv.load
ENV["ID_RSA_PASSWORD"]
#=> "12345678"
encrypted_remote_file "/home/deployer/.ssh/id_rsa" do
owner "root"
group "root"
source "files/id_rsa.encrypted"
password ENV["ID_RSA_PASSWORD"]
end
itamae-plugin-recipe-consul
itamaeでconsulをインストールするためのプラグイン
- https://github.com/sue445/itamae-plugin-recipe-consul
- https://rubygems.org/gems/itamae-plugin-recipe-consul
consul自体はバイナリを置くだけなのですが、daemon化する必要があったのでOSによってinitスクリプトやsystemd unitをいい感じに配置するためにプラグイン化しました。
起動スクリプトはこちらのを参考にさせてもらいました
consulのinitスクリプトとsystemdユニットファイルを書いてみた - Qiita
使い方
include_recipe "consul"
内部でモジュール化しているので個別に読みたい場合は下記参照
include_recipe "consul::setup"
include_recipe "consul::install"
include_recipe "consul::service"
node
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
# consul service actions when after install (default: enable, start)
service_actions:
- enable
- start
# - disable
# - stop
本番導入事例
こいつは弊社のitamaeレシピに組み込んで、実際に本番環境に投入されています
詳しくは下記をご覧ください。
itamae-plugin-recipe-tmux
itamaeでtmuxをインストールするためのプラグイン
- https://github.com/sue445/itamae-plugin-recipe-tmux
- https://rubygems.org/gems/itamae-plugin-recipe-tmux
autohomeにtmuxをインストールしたい需要がたまにあって、その度にやり方をググるのに疲れたのでitamaeプラグインにしました。
使い方
include_recipe "tmux"
Node
tmux:
# tmux prefix (default: /home/<username>/local)
prefix: /usr/local
# install version (default: 2.1)
version: 2.1
libevent:
# install version (default: 2.0.22)
version: 2.0.22
ncurses:
# install version (default: 6.0)
version: 6.0
itamae-plugin-recipe-tig
itamaeでtigをインストールするためのプラグイン
- https://github.com/sue445/itamae-plugin-recipe-tig
- https://rubygems.org/gems/itamae-plugin-recipe-tig
aptやyumに上がっているのが古すぎるので自分でビルドしてインストールするために作りました。
使い方
include_recipe "tmux"
Node
tmux:
# tmux prefix (default: /home/<username>/local)
prefix: /usr/local
# install version (default: 2.1)
version: 2.1
libevent:
# install version (default: 2.0.22)
version: 2.0.22
ncurses:
# install version (default: 6.0)
version: 6.0
itamae-plugin-recipe-git_now
itamaeで git-now をインストールするためのプラグインです。
- https://github.com/sue445/itamae-plugin-recipe-git_now
- https://rubygems.org/gems/itamae-plugin-recipe-git_now
開発環境で息をするように git nowしているので作りました。
使い方
include_recipe "git_now"
Node
git_now:
# tig prefix (default: /usr/local)
prefix: /usr/local
# source dir (default: #{node[:git_now][:prefix]}/src)
src: /usr/local/src
# specify scheme to use in git clone (default: git)
scheme: git
# install revision (default: HEAD)
revision: v0.1.1.0
itamae-plugin-recipe-omori_gohan
個別にプラグイン作るまでもない雑なプラグインです。
- https://github.com/sue445/itamae-plugin-recipe-omori_gohan
- https://rubygems.org/gems/itamae-plugin-recipe-omori_gohan
使い方
include_recipe "omori_gohan"
「おおもりご飯 のレシピを include
する」という語感が面白いのでこういう名前にしました
共通していること
全部CIしている
Vagrant + Wercker + DigitalOcean という、itamae や Serverspec と同等のCIを無駄に行ってます。(最低でもCentOSとDebianでテストでCI)
詳細
-
34歳になった&itamaeプラグインを本気でCIする #omotesandorb - くりにっき
- このエントリだと古いのでWerckerの設定がClassicスタイル
-
Wercker使っててClassic stackからWorkflowに移行した - くりにっき
- itamaeプラグインのCIをClassicスタイルからWorkflowスタイルに移行した時のメモ
-
板前の絵は http://www.irasutoya.com/2013/08/blog-post_3071.html よりお借りしています ↩