Cinnamon入門の入門

■ 目次

  1. 概要
  2. Role/Taskの概念
  3. 導入
  4. Hello World

■ 概要

シンプルなデプロイツールとして知られているCinnamonについて

デプロイツールとしてはCapistranoが定番として知られているらしいがRailsを前提としていたり、汎用的な反面裏で何をやっているのかわかりづらい

Cinnamonのメリットとしては

  • シンプル
  • Role/Task (後述)
  • 学習コストが低い
  • (Perlで記述する)

があるので少し触ってみる

■ Role/Taskの概念

デプロイツールとして必要になるRole/Taskの概念について

cinnamon01

例えば

サーバ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]:

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です