IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

デプロイツール「Cinnamon」を使ってみた

      2016/01/27

@nqounetです。

Kansai.pmで@shiba_yu36さんが発表していた「Cinnamon」が便利そうだったので、使ってみました。

「デプロイ」って何?

「デプロイ」というのは、例えばローカル環境で開発しているウェブアプリやサービスを、実際に公開するサーバーにアップロードして、諸々の設定をして利用可能な状態にすることです。

Before Cinnamon

基本的にはgitを使って管理しているので、ローカルで変更をcommitしたあと、サーバーにpush。

そのあと、sshでサーバーにログインして、公開しているディレクトリに移動して、pullしてから、サーバーを再起動、という操作を行なっていました。

サーバーは1つなので、特に面倒でも無いですが、1分程度は張り付いて作業する感じではありました。

Setup Cinnamon

実際にCinnamonを使ってみます。

まずはCinnamonをインストールします。

CinnamonはCPANに上がっているので、cpanmなどでインストールが可能です。

依存関係のモジュールも自動的にインストールしてくれるので、簡単です。

インストールが完了すると、「cinnamon」というコマンドが実行できるようになります。

このコマンドを実行すると、そのディレクトリから見て「config/deploy.pl」というファイルを自動的に読み込んでくれるので、gitで管理している場合は、プロジェクトのホームディレクトリからみて、「config/deploy.pl」になるように設定ファイルを作成すると便利です。

細かい書き方は、@naoyaさんのブログか、@shiba_yu36さんのスライド資料などを見ながら書くと良いでしょう。

わかりにくかったところ、引っかかったことをいくつか書いておきます。

Roleの指定

Roleを指定する時に、ホスト名を書くところがありますが、これは「.ssh/config」で指定しておいて、そのホスト名を書いておくのが正解です。

私は「.ssh/config」にusernameも指定してありますが、必須項目らしいのでuserもsetしておきます。

sudoができない

remoteでrunが可能なのに、sudoした時にエラーになる場合は、サーバーの設定を変更する必要があります。

そもそもsudoが出来ない場合はsudoできるようにする必要があります。

それでもエラーになる場合は、tty経由でしかsudo出来ないようになっている可能性があるので、その設定を解除します。

*TTY経由でないsudoの実行 - shibainu55日記

具体的には、rootになってからのvisudoで、

になっている部分をコメント(先頭に「#」を入力)にして無効にします。

cdしたはずなのに.gitがない

1行ずつ実行するイメージでrunやsudoを使っても、実際にはコマンド毎にログインとログアウトを繰り返しますので、cdしてからのコマンドは「&&」で繋げて1行にして実行する必要があります。

もしも、複雑な処理が必要であれば、シェルなどでスクリプトを作成して、そのスクリプトを実行するようにしても良いでしょう。

hypnotoadが見つからない

「hypnotoad」にかぎらず、PATHが通っていない場合があります。

コマンドをフルパスで書くか、特にperlbrewについては、perlbrewのbashrcを読み込む必要があります。

とあるdeploy.pl

それらを踏まえて(sudoはありませんが)作成した「config/deploy.pl」がこちらです。

@argsは要らなさそうなのですが、とりあえずつけています。

After Cinnamon

基本的にはgitを使って管理しているので、ローカルで変更をcommitしたあと、サーバーにpush。

そのあと、以下のコマンドを実行。

席を立ってトイレに行って戻ってくると、サーバーの再起動まで終わっていました。

これは楽チンですね。

respo

respo link

ZenBackWidget

 - 情報技術について