ConoHa Advent Calender 17日目担当のmiyabiです。
今回は自作のツールを使ってVPSインスタンスを休日中に立ち上げて、
このはちゃんを休日出勤させて、こき使おうと企んでいます。
16日担当: reasonsetさん ビジネス的にConoHaを使用すると幸せになる理由
ConoHa CLIつくりました
ConoHa CLIという直球なツール作りました!
- 簡単なコマンドライン操作でVPSのインスタンスを作成
- 同じくインスタンスの削除や状態の確認も出来る
- インスタンスの情報はspec.tomlというファイルに書き出してGitHubで管理する
実際に使ってみる
ううっこのはのお休みが・・・!
— 美雲このは🎄12/12 CD発売! (@MikumoConoHa) 2017年11月9日
マジ泣きされてしまい、最近このはちゃんの月曜日のTweet数がめっきり減ってしまっているのは私のせいです。
私も先日の20連勤で身をもって休日出勤の辛さを体験しました
13歳の少女に同じ想いはさせたくないので、私のマシン内だけ時刻を弄って出勤させたことにしました。
$ date -s "12/17 13:00 2017"
$ date
2017年 12月17日 日曜日 13時00分07秒 JST
使い方の説明も兼ねて使用してみます
GitHubのREADME.mdの使い方の項目でしっかり書いたので重複してしまいますが、画像を含めてこっちでも通してみます。
サーバーはまだ一個も作られていません。
ログイン情報の登録
まずはログイン情報の登録を行います。
これを行うことで、~/.config/conoha.toml
ファイルが生成され、トークンIDを自動的に更新出来るようになります。
本当は.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.
インスタンスの情報の作成
ConoHa CLIのインスタンスの操作を行うコマンドは、
全てカレントディレクトリに設定したspec.toml
を基準に取り扱います。
サンプルをGitHubのexampleディレクトリ配下に用意してありますが、画像を踏まえて説明します。
このネームタグ「test_machine」がspec.toml
のname
に該当します。
Vagrantは.vagrantフォルダを作成して、その中で各インスタンスが何ものかという情報を格納していました。
ConoHa CLIではこのネームタグが一意であるという前提で各種操作を行います。
name = "test_machine"
image = "vmi-docker-17.06-ubuntu-16.04-unified"
flavor = "g-1gb"
sshkey = "conoha-ssh-key-name"
image, flavorの設定内容
imageとflavorは名称を入力します。
その名称の候補一覧はそれぞれconoha info images
とconoha info flavors
で取得できます。
$ 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
sshkey の入力値
SSH Kyeは、上記画面で作った名前を設定します。
私のアカウントではmiyabi-ooh
という鍵を登録しているので、
sshkey = "miyabi-ooh"
と設定します。
インスタンスを操作する
インスタンスの状態を確認する
インスタンスの状態を確認するには、下記のコマンドを利用します。
$ conoha status
NONE
インスタンスは何もないのでNONE
が表示されました。
インスタンスが作られるとACTIVE
に変化します。
インスタンスを生成する
$ conoha up
$ conoha status
ACTIVE
インスタンスを生成するにはupを利用します。
この辺のコマンドの使用感はVagrantに寄せています。
インスタンスを削除する
$ conoha destroy
$ conoha status
NONE
こちらもサブコマンド名はVagrantに習ってdestroyを採用しました。
割りとインスタンスが死ぬのは早いです。
今後やりたいこと
マスコットアプリ文化祭、このはを使った作品がまだなーいっ!やばーい!1/7まで応募できるから、誰か作ってくれてもいいんだからねっ!https://t.co/2yt159qi9c
— 美雲このは🎄12/12 CD発売! (@MikumoConoHa) 2017年12月14日
一通り完成させてマスコットアプリ文化祭への出典したい!
-
conoha ssh
でログイン -
conoha ssh-config
でSSHで接続情報を表示 -
conoha init
でspec.tomlを吐き出す (対話シェル、pecoで絞り込みとかしたい) -
conoha init --name xxxx
で既存のインスタンス情報からspec.tomlを作成する -
conoha set
でspec.tomlのデフォルト値を定義 -
conoha status-all
でConoHa上の全インスタンスを確認できる - リファクタリング
- テストコード
うう、初めてのGo言語に苦戦してやりたいこと山積みだ……頑張る!
作った動機
ConoHa との出会い
私は電車通勤時に座れた時は、Macbookを膝に乗せてコードを書いています。
開発にはVimを利用しており、そんなに優れた性能は必要ありません。
しかし、スマホのテザリングではダウンロード速度が遅く、依存ライブラリやCLIツールを落とすのに苦労していました。
そして出会ったのがConoHaです。
実際に使って驚きましたが、想像以上に軽快な動作をしてくれます。
通信速度は見込み通り、OSの動作にあまりCPUやメモリを割かなくて済むので、
たった1GBしかない一見しょぼいインスタンスでも見た目以上にキビキビと動いてくれます。
そして日本にリージョンがあるのでVPSのサービスの中でもトップクラスの低レイテンシを誇ります。
そこで、私は本格的な勉強用にConoHaを利用したいと考えるようになりました。
vagrant-conoha との出会い
vagrant-conohaと出会って、この利用が加速しました。
1インスタンス1Vagrantfileでインスタンスをドカドカ建てて(おっさんギャグ)このプロジェクトはこのインスタンスで開発するという風に利用しはじめました。
実は仕事でも利用しており、
週の初めには勉強用のインスタンスを殺して、仕事用のインスタンスを立ち上げ、
週末になると仕事用のインスタンスを殺して、勉強用のインスタンスを立ち上げていました。
これを活かす為にAnsibleのプロビジョンを作りはじめました。
vagrant up
コマンドから一撃でConoHaのインスタンスが立ち上がり、Vimの初期設定からNode.jsのインストール、Gitで作業するプロジェクトをDL…という事を行ってくれる環境を作り上げました。
新世代のDebianやUbuntuがあり、インスタンスを簡単に作ったり壊したり出来るのも良かったです。
1時間単位なので一瞬だけ作ったインスタンスでも1時間分の料金を取られますが、
たったの1円で済むので、勉強用として安いと気にせずガンガン立ち上げて殺してを繰り返しながらAnsibleのPlaybookを作り込んでいました。
これにより、環境構築回りの自身はかなり付き、このはちゃんには感謝感謝です。
vagrant-conohaの作者であるひろのぶさんにも凄く感謝しています。
vagrant-conoha からの卒業
2017/9頃、私の就職活動も落ち着いて、勉強用のインスタンスを作成しようと思って操作したところ、エラーが出て使用出来なくなってしまいました。
9日の記事と同じ現象かはわかりませんが、Rubyのエラーなので追うことが出来ず、
結局MacbookProに直接環境を入れて使うという生活をしていました。
※既に使える状態らしいです
(´・_・`) pic.twitter.com/KR8nLurPaF
— Hironobu Saito (@hironobu_s) 2017年12月14日
ConoHaにはAPIがあるので、自作のCLIを作って簡単に操作出来るのでは?
…と考えていたのですが、イマイチ構成が思い浮かばず悶々と過ごしていました。
- 元々ConoHa CLIツールは作りたかった
- Node.jsでも良かったがCLIとしてのNode.jsの限界を感じていた(配布しづらい
- Go言語に可能性を見出し、何かGo言語でマルチプラットフォームで動くCLIツールを作りたかった
- ConoHaアドベントカレンダーが丁度紹介されていた
この辺の事情が噛み合い、これを良い機会に作ろうか!と決心しました。
結果はなんとかインスタンスの作成・削除が出来るだけの超発展途上です。
居るかどうかわかりませんが結構良さそう…って思った人は、
メンテして使いやすくしますので生暖かく見守って下さい。(´・ω・`)
まとめ
私の技術力の半分はConoHaで出来ています。
これからもお世話になりつつ、引き続きこんな風に還元していきたいと思います。
綺麗にまとめたフリしてないでさっさとCLI完成させろって話ですね(´・ω・`)ごめんなさい頑張ります
さて、明日の18日目はProg24さんの「ConoHaとGoogle Homeで何かしたいな。。(変更の可能性あり)」です。
お楽しみに!