ConoHa で簡単な勉強用VPSを構築したい人向けのお手軽CLIです。
Go言語製で様々なOSに対応(予定)です。
このプラグインは非公式ですので、ConoHaのサポートなどへの問い合わせはご遠慮ください。
ConoHa CLI は既存プロジェクト vagrant-conoha のほぼ下位互換です。
従ってわざわざ使う必要はありません。
私もこのvagrant-conohaを愛用していましたが、色々と辛みが出てきた為に直接APIを叩こうと決意しました。
- VagrantfileにAPIのログイン情報を載せるので一手間加えないとGitHub等へ上げられない
- 仕様変更で使えなくなった期間があり超困った
- スタートアップスクリプトのリリースでVagrantプロビジョンへの依存度が下がった
- 勉強用の開発環境は1ファイル1インスタンスで十分、Dockerもドカドカ動かせるからね
- そもそも依存元のVagrantがバギーでvagrant-conohaの人にゴルァするべきか判断つかない
vagrant-conohaのヘビーユーザーの内、幾人かは共感できたかと思います。
しかし、このConoHa CLIも私個人で管理しているので、ConoHaの仕様変更等であっさり使えなくなるかもしれません。
Vagrantを意識しながらシンプルな設計を心がけていき、フォークやプルリクを気軽に出来るように頑張ります。
基本的には日本人しか使わないと思うのでガチガチな日本語にしました。
CLIも日本語で説明していくようにしたいです。
バイナリファイルをReleasesページにて配布しています。
対応しているOSのアプリケーションをダウンロードした後、
手持ちの解凍ソフトでバイナリファイルを取り出し、
PATHの通ったディレクトリに設置してください。
各種コマンドやサブコマンドにはヘルプが存在します。
困ったら-h
オプションを付けて起動してください。
$ conoha -h
This tool is a conoha cli.
Usage:
conoha [flags]
conoha [command]
Available Commands:
destroy VPSインスタンスの削除
help Help about any command
info APIからプランやイメージ一覧情報を取得
login ConoHa APIへのログイン
ssh VPSインスタンスへのSSH接続
ssh-config SSH接続情報の表示
status VPSインスタンスの状態を調べる
up VPSインスタンスの起動
version Print the version number of conoha-cli
Flags:
-h, --help help for conoha
Use "conoha [command] --help" for more information about a command.
- ログインを行う
spec.toml
を作成する- インスタンスを操作
- SSH接続
ConoHa APIは各種操作にトークンIDを要求します。
その有効期限は24時間しかありません。一度取得しても日を跨げば何度も取り直しになってしまいます。
ConoHa CLIでは~/.config/conoha.toml
に設定ファイルを作成して、
ログイン情報やトークンIDを保存するという設計にしています。
初回の~/.config/conoha.toml
作成にはログインコマンドを使用します。
コマンドライン引数で設定することも出来ますし、対話シェルで入力することも出来ます。
$ conoha login -h
login to ConoHa API.
Usage:
conoha login [flags]
Flags:
-h, --help help for login
-p, --password string パスワード (9文字以上)
-t, --tenantid string テナントID (半角英数32文字)
-u, --username string ユーザー名 (gncu00000000)
# 足りない情報は対話シェルで聞かれます
$ conoha login
username: gncu00000000
password: Hogehoge-0
tenant_id: 1234567890abcdef1234567890abcdef
login successful.
examples/vps-instance/spec.tomlにサンプルを用意しました。
name = "test_machine"
image = "vmi-docker-17.06-ubuntu-16.04-unified"
flavor = "g-1gb"
sshkey = "conoha-ssh-key-name"
- name: サーバーリストのネームタグで表示、ConoHa CLIでは一意な名称として扱う
- image: イメージ名
- flavor: プラン名
- sshkey: ConoHaに登録済のSSH Key名
イメージ名、プラン名の候補は下記のコマンドで表示することができます。
$ conoha info -h
get Infomation from ConoHa API (require logged in).
Usage:
conoha info [flags]
conoha info [command]
Available Commands:
flavors get flavors ConoHa API.
images get images ConoHa API.
ssh get registed ssh keypair-name ConoHa API.
Flags:
-h, --help help for info
Use "conoha info [command] --help" for more information about a command.
$ conoha info images
vmi-drupal-8.4.2-centos-7.4-amd64-20gb
vmi-drupal-8.4.2-centos-7.4-amd64
vmi-minecraft-1.12.2-centos-7.4
vmi-centos-7.4-amd64-20gb
vmi-centos-7.4-amd64
...(他にも大量に表示される)
$ conoha info flavors
g-2gb
g-16gb
g-4gb
g-1gb
g-8gb
g-32gb
g-64gb
g-512mb
ConoHa CLIのインスタンス操作は Vagrant を意識してつくられています。
カレントディレクトリにspec.toml
があるフォルダで各種コマンドを実行することでインスタンスの状態確認・作成・削除を行います。
# インスタンスの状態確認
$ conoha status
NONE
# インスタンスの作成
$ conoha up
$ conoha status
ACTIVE
# インスタンスの削除
$ conoha destroy
$ conoha status
NONE
SSH接続を行うためにはホストマシンの秘密鍵ファイルと、
ConoHaのSSH-Keyの紐付けを行わなければ通信は行えません。
id_rsa決め打ちやspec.tomlで共有する案もありましたが、
複数環境で使う事を考慮してホストマシンに対応したファイルパスを利用する**としました。
$ conoha ssh set -h
ConoHaに登録済みのSSH Keyと秘密鍵ファイルパスの紐付け
Usage:
conoha ssh set <name> <path>
conoha ssh set -h
Args:
name: ConoHaに登録済みのSSH Key名
path: 対応する秘密鍵のファイルパス (例: ~/.ssh/id_rsa)
Help:
- ConoHaに登録済みのSSH Key名の一覧を表示
$ conoha info ssh
$ conoha info ssh
ssh-key-name1
ssh-key-name2
$ conoha set ssh-key-name1 ~/.ssh/id_rsa
続いて実際のSSH接続には、以下のモードを用意しています。
- ssh-configで
.ssh/config
で使えるフォーマットを出力 - sshコマンドを利用したSSH接続
- moshコマンドを利用した接続 (bash専用)
- Go言語の crypt パッケージを利用したSSH接続
$ conoha ssh-config
Host test_machine
HostName 150.95.141.xxx
User root
IdentityFile /Users/xxxx/.ssh/id_rsa
# SSH 接続
# まずsshコマンドを検索し外部コマンドで実行、無ければcryptパッケージを利用してエミュレート
$ conoha ssh
# Mobile Shell 接続 (bash専用)
$ conoha ssh -m
MIT Licenseを適用します。