Closed yamamoto-febc closed 8 years ago
設定をどうやって他プロセスと共用するか?
1) 環境変数を使う。create前にeval $(docker-machine-driver-sakuracloud env)
みたいにする
2) 別途設定ファイルを持ちcreate時に自動で読み込むようにする
どちらの場合でも環境変数を親プロセス(bashなど)へ直接は渡せないため 設定値を保持しておく仕組みが必要。
以下の形で実装してみる。
_$MACHINE_STORAGEPATH/drivers/sakuracloud/ 配下に設定ファイル(JSON)を格納
保存場所の取得にはmcndirs.getBaseDir()
が使えるはず
BaseDriver#SetConfigFromFlags で設定ファイルの内容を反映
優先度は
1) コマンドライン引数
2) 環境変数
3) 設定ファイル
とする。
:question: create
の時だけ設定ファイルの内容を反映できるか
List
オプションの出力サンプル
$ ./docker-machine-driver-sakuracloud list
+------------------------+-------------+------------------------------------------------------------------+
| NAME | VALUE FROM | CURRENT SETTING |
+------------------------+-------------+------------------------------------------------------------------+
| access-token | Environment | xxxxxxxx-9999-999x-x9xx-x99x9x999x99 |
| access-token-secret | Environment | xxxxxxxxxxxxxxxxx |
| region | File | tk1a |
| core | (Default) | 1 |
| memory-size | (Default) | 1 |
| connected-switch | (Default) | (empty) |
| private-ip-only | (Default) | (empty) |
| private-ip | (Default) | (empty) |
| private-ip-subnet-mask | (Default) | (empty) |
| gateway | (Default) | (empty) |
| disk-plan | (Default) | 4 |
| disk-name | (Default) | (empty) |
| disk-size | (Default) | 20480 |
| disk-connection | (Default) | virtio |
| password | (Default) | (empty) |
| group | (Default) | (empty) |
| auto-reboot | (Default) | (empty) |
| ignore-virtio-net | (Default) | (empty) |
| packet-filter | (Default) | (empty) |
| private-packet-filter | (Default) | (empty) |
| upgrade-kernel | (Default) | (empty) |
+------------------------+-------------+------------------------------------------------------------------+
Overview
docker-machine-driver-sakuracloudを直接起動時にオプション指定することで 環境変数設定用モードでの起動を行う。 環境変数を設定しておくことで以降のcreate時にその設定を利用できる。
bash-completionを合わせて実装することで
export SAKURACLOUD_ACCESS_TOKEN='xxxxxxx'
というコマンドを直接実行するより 楽に設定値入力できるようになる。Commands
list
:現在の環境変数設定一覧を表示set
:指定の値を設定clear
:指定の値をクリアinfo
:指定の値の説明/現在の設定値を表示