複数Herokuアカウントの管理

1つの端末から複数のHerokuアカウントを管理する場合の方法。
異なるSSHキー(公開鍵)で管理する必要があるため、端末内で複数のSSHキー(id_rsa.pubの方)を管理する必要がある。


また、複数の端末で1つのHerokuアカウントを管理する方法。
それぞれ異なるSSHキー(公開鍵)を登録しておく必要がある。

Macでやってます。


このための方法はいくつかあるようだが、今回適用した方法をメモする。



1つの端末から複数のHerokuアカウントを管理する

Herokuのプラグインddollar/heroku-accountsを使います。


公開鍵作成
アカウントごとに公開鍵を変える必要があるようなので、まずは2つめのアカウント用に鍵を作成する。既存の鍵とは分けて作成する必要があるので、「-f」オプションでファイル名を指定する。(「-C」はコメント)

$ ssh-keygen -C COMMENT -f ~/.ssh/id_rsa.secondAccount


Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.secondAccount
Your public key has been saved in ~/.ssh/id_rsa.secondAccount.pub.
The key fingerprint is:
xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy:zz:xx secondAccount

キーを作成するパスフレーズの入力を求められるが、そのままEnterで空欄も可。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

これで
~/.ssh/ に「id_rsa.secondAccount」と「id_rsa.secondAccount.pub」が出来ていれば作成はOK


ddollar/heroku-accountsプラグインのインストール
ターミナルから、

$ heroku plugins:install git://github.com/ddollar/heroku-accounts.git


Installing heroku-accounts... done


アカウント登録
ターミナルから、

$ heroku accounts:add account002


Enter your Heroku credentials.
Email: xxx@mail002.com
Password (typing will be hidden):

Add the following to your ~/.ssh/config



Host heroku.account002
HostName heroku.com
IdentityFile /PATH/TO/PRIVATE/KEY
IdentitiesOnly yes

この部分は、あらかじめHerokuで登録しておいたメアドとパスワードを入力する。

Email: xxx@mail002.com
Password (typing will be hidden):

複数鍵の登録
複数の鍵を利用する場合は、下記のファイルを作成する必要がある。


「~/.ssh/config」


複数鍵を管理するために利用するファイルになる。無ければ作成する。
このファイルに、先ほどの下記出力をコピペする。
IdentityFileについては、秘密鍵の方のパスを記載する(pubの付いてない方)

Host heroku.account002
HostName heroku.com
IdentityFile ~/.ssh/id_rsa.secondAccount
IdentitiesOnly yes

既存のアカウントと鍵が存在する場合は、「heroku accounts:add」コマンドを実行して、鍵は新たに作らない。
たとえば、

heroku accounts:add account001

同様に既存の秘密鍵を指定するように記載を追加する。こんな感じで。(既存秘密鍵ファイルがid_rsaの場合)

Host heroku.account001
HostName heroku.com
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes


登録したHerokuアカウントの情報は「~/.heroku/accounts」に記録されてます。


これで複数アカウントを管理することができます。



アクセスしてみる
複数登録したアカウントでアクセスしてみましょう。
色々コマンドはあるのですが、とりま、最低限のものだけ。詳しくはddollar/heroku-accountsにあるコマンドの説明を確認してください。

利用するアカウントを設定

$ heroku accounts:set account002

これを「set」した時点で、「heroku login account002」のログインが完了しています。
便利!!


現在ログインしているアカウントを確認

$ git config heroku.account

変なpushとかしないように、現在アカウントの確認を怠らないようにしましょう。



git remoteの追加
gitでpushする先を登録する。
リモート先URLには、Herokuのappsでcreateしたアプリのinfoに書いてあるGit URLを指定する。

git remote add [リモートネーム:任意] [リモート先URL]


複数の端末から1つのHerokuアカウントへアクセスする
HerokuアカウントへSSH公開鍵を登録
HerokuのAccount管理(右上の忍者マーク)にて、「SSH Keys」に、「~/.ssh/」にある追加したいSSH公開鍵「id_rsa.xxx.pub」の内容をコピーしてAdd Keysする。


Git HubアカウントへSSH公開鍵を登録
Heroku同様に、アカウントのSettingsにて「SSH Keys」にHerokuに追加したキーと同様の内容を追加する。



利用したいアカウントに切り替えるために下記コマンドを打つだけで、基本的にはgitコマンドの使い方、Herokuコマンドの使い方は変わりません。

$ heroku accounts:set [利用したいアカウント名]


基本的には、というのは、1つのアプリケーションを複数のHeroku環境にpushして管理する場合などは、コマンドに応じて「--app [アプリ名]」のオプションを最後に付けてください。たとえば、

heroku logs --app app001
heroku run db:migrate --app app002

などです。



何か忘れてるかもしれないですが・・・
こんな感じでHerokuの2つめのアカウントにpushできました。
*メモなので画像とか一切ないです。すみません。