Skip to content

Latest commit

 

History

History
327 lines (247 loc) · 12.1 KB

Connections-and-Stages.md

File metadata and controls

327 lines (247 loc) · 12.1 KB

接続とステージ

サーバーとの通信に関して、二つの主要なコンセプトに出会うでしょう。それは接続と、ステージです。

接続

設定

接続は、接続したいいろいろなのサーバーを示します。これらは、config.phpの中に設定しましょう。接続の設定は以下のような感じになります。

'connections' => array(
  'production' => array(
    'host'      => 'my-server.com',
    'username'  => 'johndoe',
    'password'  => '',
    'key'       => '/Users/johndoe/.ssh/id_rsa',
    'keyphrase' => '',
  ),
),

二つの方法でサーバーに接続できます。パスワードを使うか、SSHキーを使うかです。ですので、もし接続にパスワードを使う場合、keyやkeyphraseは、空のままにするなどしておけます。

重要な注意:機密情報をここに入れる必要はありません。ロケッティアは、バージョントラックされるファイルの中で機密情報を空のままにしておけるように、フォールバックの仕組みを使います。もしこれらのすべてのフィールドを空にしておくと、ロケッティアはそれらの入力をうながし隠しファイルに保存するようにします。ただ重要なことは、コネクションが定義されていることです。 以下のようにです。

'connections' => array(
  'production' => array(),
),

これで、接続として完璧に機能します。

複数接続

これはとても基本的な接続でした。複数接続が必要といった、もっと複雑な設定について考えます。

'connections' => array(
  'production' => array(
    'host' => 'my-server.com',
  ),
  'staging' => array(
    'host' => 'staging.my-server.com',
  ),
),

さて、これらの二つの接続を動作させるのに、いくつかの方法があります。一つは、私たちが編集してきたconfig.phpのdefault arrayの値を変更することです。

'default' => array('production', 'staging'),

このarrayの意味するのは、あなたがタスクを実行するときはいつでも、Rocketeerはこれらすべての接続に対して実行するということです。しかし、これはあなたの望むものではないかもしれません。何かしらのチェリーピックを何かに対して行いたいなどですね。そのためには--onフラグを使うことができます。

デプロイコマンドですと、通常次のように実行します。rocketeer deploy 。いずれかの接続を選んでデプロイするには、一つまたはいくつかの接続を以下のようにフラグを付けて渡します。

$ rocketeer deploy --on="staging"
$ rocketeer deploy --on="staging,production"

複数サーバー接続

時には、実際には複数のサーバーになる接続があって、接続を扱う時にそれらが個々に作用するようにしたいと思うでしょう。Rocketeerでは接続を定義する際に一つのシンプルなservers arrayを使うことでそれを可能にしています。

'connections' => array(
  'production' => array(
    'servers' => array(
      array(
        'host'      => 'first-server.com',
        'username'  => 'johndoe',
        'password'  => '',
        'key'       => '/Users/johndoe/.ssh/id_rsa',
        'keyphrase' => '',
      ),
      array(
        'host'      => 'second-server.com',
        'username'  => 'johndoe',
        'password'  => '',
        'key'       => '/Users/johndoe/.ssh/id_rsa',
        'keyphrase' => '',
      ),
    ),
  ),
),

ステージ

Rocketeerの世界では、与えられた接続に対してステージごとに分離した環境になります。これはRocketeerによってひな形として作成された典型的なフォルダ構成です。

| my-app
| -- current
| -- releases
| ----- 20140119010101
| -- shared

一方、一つのサーバーでtestingproductionの複数ステージだとこのようになります。

| my-app
| -- testing
| ----- current
| ----- releases
| -------- 20140119010101
| ----- shared
| -- production
| ----- current
| ----- releases
| -------- 20140519413121
| ----- shared

ステージに対して行うことはすべてステージの中で完結します。

設定

ステージの設定は非常に簡単です。あなたはstagesファイルを開きたいと思うでしょう。ステージの数とその名前を定義するには、単にarrayに書き入れます。(設定の例ごとに上に示しています)

'stages' => array('testing', 'production'),

接続と同じように、デフォルトでタスクを実行したときに、どのステージで実行されるかdefaultarrayで選ぶことができます。全く同じ方法です。

'default' => array('testing'),

複数ステージ

接続と同じように、特定のステージでタスクを動作させるようにフラグを渡すことができます。

$ rocketeer test --stage="testing"

状況によって変化するの設定

一つの設定ファイルの組み合わせだけであればすべて問題なくよいのですが、もし3つのサーバーがあってそれぞれ3つのステージがある場合はもちろん設定は一つ一つ異なります。

Rocketeerは状況によって変化する設定を、メインのconfig.php(接続を定義したファイルです)の中のネストされたarrayによって扱います。それぞれのPHPのパスが異なる2つのサーバーという簡単で典型的な例をとりあげます。通常PHPのパスはpaths.phpファイルのphp配下にあります。ですので、2つの接続について以下のように定義します。

'on' => array(
  'connections' => array(

    'staging' => array(
      'paths' => ['php' => 'PATH-TO-PHP'],
    ),
    'production' => array(
      'paths' => ['php' => 'PATH-TO-PHP'],
    ),

  ),
),

staginproductionいずれかに入れたいすべての設定が、Rocketeerが作成した設定ファイルのミニチュアとしてここに入れられます。上書きするには、単にファイルと同じ名前のarray(ここではpaths)を作成し、設定をその中に記述します。

ファイルベースで行う

多くの上書きしたい設定を進めるときに、すごく長くなり、ネストされたarrayの中のネストされたarrayの中のネストされたarrayの中で設定したくないでしょう。Rocketeerは、デフォルトで設定フォルダの中にある、すべてのconnectionsstagesフォルダを読みに行きます。production接続上でmasterブランチを、staging接続上でdevelopブランチをデプロイしたいとすれば、以下のようにファイルを作成します。

| .rocketeer
| -- connections
| ---- production
| ------ scm.php
| ---- staging
| ------ scm.php

connections/productions/scm.php ファイル

connection/staging/scm.php ファイル

ブランチについても同じように、.rocketeer/stages/staging/somefile.phpのように作成して、デフォルトの設定の各オプションを上書きします。