サーバーとの通信に関して、二つの主要なコンセプトに出会うでしょう。それは接続と、ステージです。
接続は、接続したいいろいろなのサーバーを示します。これらは、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
一方、一つのサーバーでtesting
とproduction
の複数ステージだとこのようになります。
| my-app
| -- testing
| ----- current
| ----- releases
| -------- 20140119010101
| ----- shared
| -- production
| ----- current
| ----- releases
| -------- 20140519413121
| ----- shared
ステージに対して行うことはすべてステージの中で完結します。
ステージの設定は非常に簡単です。あなたはstages
ファイルを開きたいと思うでしょう。ステージの数とその名前を定義するには、単にarrayに書き入れます。(設定の例ごとに上に示しています)
'stages' => array('testing', 'production'),
接続と同じように、デフォルトでタスクを実行したときに、どのステージで実行されるかdefault
arrayで選ぶことができます。全く同じ方法です。
'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'],
),
),
),
stagin
、production
いずれかに入れたいすべての設定が、Rocketeerが作成した設定ファイルのミニチュアとしてここに入れられます。上書きするには、単にファイルと同じ名前のarray(ここではpaths
)を作成し、設定をその中に記述します。
多くの上書きしたい設定を進めるときに、すごく長くなり、ネストされたarrayの中のネストされたarrayの中のネストされたarrayの中で設定したくないでしょう。Rocketeerは、デフォルトで設定フォルダの中にある、すべてのconnections
とstages
フォルダを読みに行きます。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
のように作成して、デフォルトの設定の各オプションを上書きします。