概要
シンプルなデプロイツールとして知られているCinnamonについて
デプロイツールとしてはCapistranoが定番として知られているらしいがRailsを前提としていたり、汎用的な反面裏で何をやっているのかわかりづらい
Cinnamonのメリットとしては
- シンプル
- Role/Task (後述)
- 学習コストが低い
- (Perlで記述する)
があるので少し触ってみる
Role/Taskの概念
デプロイツールとして必要になるRole/Taskの概念について
例えば
サーバA、B、Cに「production」というRoleを定義
またyum installでsetupしていく「setup」というTaskを定義する
「production」サーバ群が「setup」Taskを実行していく
などRoleがTaskを1つ以上選択して順に実行していく概念のこと
導入
導入環境
$ cat /etc/redhat-release CentOS release 6.8 (Final)
Perl-5.14.2を導入する
※ Perl最新版である5.24.0やOS標準の5.10.1などではうまく導入できなかったので今回は5.14.2を導入する
perlのバージョンの違いについて
https://ja.wikipedia.org/wiki/Perl
$ wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz $ tar xvfz perl-5.14.2.tar.gz $ cd perl-5.14.2 $ sh Configure -des -Dusethreads -Dinc_version_list=none $ make $ make test $ sudo make install
古いperlを退避させて新しいperlを所定の場所に置く
$ cd /usr/bin/ // 古いバージョンのperlを退避 $ sudo mv perl perl-5.x.x $ sudo ln -s /usr/local/bin/perl . // 新しいバージョンになっていることを確認する $ perl -v This is perl 5, version 14, subversion 2 (v5.14.2)
Cinnamonを入れるためにcpanmを用意する
$ cd /usr/bin/ $ sudo curl -LOk http://xrl.us/cpanm $ sudo chmod +x cpanm
Cinnamonのインストール
$ sudo cpanm Cinnamon
Hello World
usage
$ cinnamon --help Usage: cinnamon [--config=<path>] [--set=<parameter>] [--ignore-errors] [--help] [--info] <role> <task ...>
以下のファイルを用意する
引数で指定しない場合はconfig/deploy.plが読まれる
$ cat config/deploy.pl use strict; use warnings; use Cinnamon::DSL; # 全taskから参照できる set hello => 'Hello World!!'; # roleの定義 role development => [ # カンマ区切りで複数のサーバを記述できる 'localhost', ], { # ここで定義したものをtaskに渡すことができる # setで定義したものを上書きできる hoge => 'hoge', }; task deploy => { hollo_world => sub { my ($host) = @_; remote { run "hostname"; run "echo 1:".$host; run "echo 2:".get('hello'); run "echo 3:".get('hoge'); } $host; }, };
roleとtaskをそれぞれ記述している
実行してみる
$ cinnamon development deploy:hollo_world [localhost :: executing] hostname [localhost :: stdout] 80ff4e833e50 [localhost :: executing] echo 1:localhost [localhost :: stdout] 1:localhost [localhost :: executing] echo 2:Hello World!! [localhost :: stdout] 2:Hello World!! [localhost :: executing] echo 3:hoge [localhost :: stdout] 3:hoge ======================== [success]: localhost [error]:
コメントを書く
コメント一覧