Giter Site home page Giter Site logo

conoha-cli's Introduction

Overview: 概要紹介

これは何?

ConoHa で簡単な勉強用VPSを構築したい人向けのお手軽CLIです。
Go言語製で様々なOSに対応(予定)です。

このプラグインは非公式ですので、ConoHaのサポートなどへの問い合わせはご遠慮ください。

なんで作ったの?

ConoHa CLI は既存プロジェクト vagrant-conoha のほぼ下位互換です。
従ってわざわざ使う必要はありません。
私もこのvagrant-conohaを愛用していましたが、色々と辛みが出てきた為に直接APIを叩こうと決意しました。

vagrant-conohaのヘビーユーザーの内、幾人かは共感できたかと思います。
しかし、このConoHa CLIも私個人で管理しているので、ConoHaの仕様変更等であっさり使えなくなるかもしれません。
Vagrantを意識しながらシンプルな設計を心がけていき、フォークやプルリクを気軽に出来るように頑張ります。

日本語?マルチ言語対応は?

基本的には日本人しか使わないと思うのでガチガチな日本語にしました。
CLIも日本語で説明していくようにしたいです。

Installation: インストール

バイナリファイルをReleasesページにて配布しています。

対応しているOSのアプリケーションをダウンロードした後、
手持ちの解凍ソフトでバイナリファイルを取り出し、
PATHの通ったディレクトリに設置してください。

Usage

各種コマンドやサブコマンドにはヘルプが存在します。
困ったら-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.

全体的な流れ

  1. ログインを行う
  2. spec.tomlを作成する
  3. インスタンスを操作
  4. SSH接続

1. ログインを行う

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.

2. spec.tomlを作成する

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

3. インスタンスを操作

ConoHa CLIのインスタンス操作は Vagrant を意識してつくられています。
カレントディレクトリにspec.tomlがあるフォルダで各種コマンドを実行することでインスタンスの状態確認・作成・削除を行います。

# インスタンスの状態確認
$ conoha status
NONE

# インスタンスの作成
$ conoha up
$ conoha status
ACTIVE

# インスタンスの削除
$ conoha destroy
$ conoha status
NONE

4. SSHログイン

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

license: ライセンス

MIT Licenseを適用します。

conoha-cli's People

Contributors

miyabisun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

conoha-cli's Issues

インストールに失敗します。

CIに組み込む形で使用したくConohaのCLIツールを探してたところ出会いました。
是非使ってみたいのですが、

手順に沿ってインストールを試みたところ
dep ensure のタイミングで下記のエラーが表示されます。

発生環境は

  • OS: OS X El Capitan 10.11.6
  • Go: 1.10 darwin/amd64
  • dep: v0.4.1

こちら、対処方法はございますでしょうか?

Warning: the following project(s) have [[constraint]] stanzas in Gopkg.toml:

  ✗  github.com/mitchellh/go-homedir

However, these projects are not direct dependencies of the current project:
they are not imported in any .go files, nor are they in the 'required' list in
Gopkg.toml. Dep only applies [[constraint]] rules to direct dependencies, so
these rules will have no effect.

Either import/require packages from these projects so that they become direct
dependencies, or convert each [[constraint]] to an [[override]] to enforce rules
on these projects, if they happen to be transitive dependencies,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.