2018/2/20にArukasのβサービスが再開しましたね!!待ってました!!!
ということで早速使ってみました。
何が変わったの?
GitHubアカウントでのサインイン/サインアップは廃止
先ほどのお知らせにも書かれていましたが、GitHubアカウントでのサインアップが廃止されていました。
以前のArukasでアカウントを持っていた場合でも再作成となるようです。
以下ページからサインアップを行いました。
現在は予約制となっており、サインアップ後に登録可能な状態になったら招待メールが届きます。
(私の時は30分程度で届きました)
4つのプランの中から選択が可能に
課金体系についても公開されていました。
スペックやインスタンス数の制限などの違いで以下4つのプランがあるとのことです。
名称 | vCPU | RAM | 価格 | 概要 |
---|---|---|---|---|
Free |
0.1 | 128MB | 無料 | 同時に起動できるコンテナーインスタンスは一つだけ |
Hobby |
0.1 | 512MB | 0.74円/h |
FreeプランとCPU性能は同じ、RAMサイズ増 |
Standard x1 |
0.5 | 512MB | 1.48円/h |
HobbyプランからvCPU増 |
Standard x2 |
0.5 | 1024MB | 2.96円/h |
Standard x1プランからRAMサイズ増 |
なお、Free
プラン以外を一度でも起動した月は基本料金として月額50円上乗せされるとのことです。
APIも結構変わった
また、サービス再開に合わせてAPIについても更新されていました。
認証や必要なヘッダなどについては変更ないようですが、リソース名やリソースの内容についてはだいぶ変わっています。
例: app_sets
とかは無くなりました。
旧Arukas APIを利用していた場合は変更が必要でしょう。
取り急ぎGo言語についてAPIライブラリを作成しておきましたのでぜひご利用ください。
APIライブラリを作ったらアプリも欲しくなりましたのでとりあえず作っておきました。
Arukasで任意のコマンドを実行する「Rarukas」コマンド
shell(sh)に対するremote-shell(rsh)みたいに、Arukasでもっと手軽にコマンド実行したいなーということでremote-arukas = rarukas
というコマンド作りました。
GitHub: rarukas - CLI for running one-off command(s) on Arukas
Go言語で書いてますので、インストールはバイナリをGitHubからダウンロードして実行権付与するだけです。
ダウンロードは以下のGitHub Releasesページから行えます。
以下のような感じで任意のコマンドをArukas上のコンテナで実行可能です。
コンテナはオンデマンドに作成され、コマンド実行が終了すると破棄されます。エコですね!!
# 事前にAPIキーを環境変数に設定(コマンドラインオプションでも指定可) $ export ARUKAS_JSON_API_TOKEN=<APIトークン> $ export ARUKAS_JSON_API_SECRET=<APIシークレット> # Arukas上でcurlコマンドを実行 $ rarukas curl -L https://arukas.io/
動きとしてはこんな感じです。
- SSH用のキーペアを生成(オプション指定でキーの指定もできる)
- Arukas APIでコンテナ作成 & 起動、SSH用の公開鍵をArukas API経由でコンテナに渡す
(起動するコンテナはRarukas
側で用意したSSH/SCP可能なイメージを利用してます) - (任意)コンテナが起動したらSCPでローカルのファイルをコンテナのworkdirへアップロード
- コンテナ上で指定のコマンド実行
- (任意)コンテナ上のworkdirをローカルにダウンロード
- Arukas APIでコンテナ破棄
実行したいコマンドはファイルでの指定もできる
実行したいコマンドはファイルでの指定も可能になっています。
例えばローカルマシンにrun_on_arukas.sh
というスクリプトを用意しておいて、以下のようにオプション指定すればOKです。
お好きなシェルスクリプトが利用できます!
# 実行したいコマンドを別ファイルで指定 rarukas -c run_on_arukas.sh
ローカルマシンのファイルをアップロード/コマンド実行後にコンテナからダウンロード
さらにはSCP経由でファイル/ディレクトリのやりとりができるため、
- ローカルの処理したいデータをアップロード
- Arukas上で加工
- 加工したデータをローカルにダウンロード
ということもできます。
このために--sync-dir
というオプションを用意しており、これで指定したディレクトリをコマンド実行前にアップロード、コマンド実行後にダウンロードしてくれるようになります。
# カレントディレクトリの内容をアップロード/コマンド実行で生成されたファイルをダウンロード $ rarukas --sync-dir . "echo from-arukas > result.txt" # ローカルマシンにコンテナ上で生成されたファイルがダウンロードされている $ ls result.txt
ベースイメージの選択ができる
Arukas上で起動するコンテナのベースイメージはデフォルトでは軽量なalpine
ベースですが、実行したいコマンドに応じて以下のようなものを指定できます。
alpine
: デフォルト、alpineベースの軽量イメージcentos
: CentOS7ベースubuntu
: Ubuntu 16.04ベースansible
: Ansible実行用のalpineベースイメージsacloud
: さくらのクラウド系ツール(usacloud
やterraform
、packer
など)の実行用イメージ、alpineベース
ベースイメージはオプション指定することで変更できます。
# ubuntuベースのイメージを利用する場合 rarukas --type ubuntu <your-command>
どんな時に使うの?
バッチ処理のオフロードや多少時間がかかってもいいから自分のマシンの負荷を上げたくない時などに便利です。
rarukas
コマンドでArukasコンテナを起動するのには早くて10〜20秒、負荷状況によってはもう少しかかることもあるため速度を求める処理には向きませんが、
複数のコンテナに分散して並列に処理できるような場面では真価を発揮します。
利用例: 10コンテナでコマンドを分散/並列実行
以下のように xargs
などと組み合わせることで任意の処理を複数のコンテナに分散/並列実行できます。
この例ではecho Hello World from Rarukas -(連番)
というコマンドを10台に分散/並列実行しています。
(複数インスタンスの利用となるため、--plan
オプションでhobby
プランを利用するように指定)
# 10コンテナに分散してコマンド実行 $ seq 10 | xargs -P10 -n1 rarukas --plan hobby echo Hello from Rarukas -$1
これを実行すると以下のような表示になるはずです。
ただし、並列実行のため順序は保証されませんので多少出力順が異なる可能性があります。
# 見やすくするために標準エラー出力は除いています Hello from Rarukas - 2 Hello from Rarukas - 9 Hello from Rarukas - 4 Hello from Rarukas - 1 Hello from Rarukas - 8 Hello from Rarukas - 3 Hello from Rarukas - 7 Hello from Rarukas - 10 Hello from Rarukas - 5 Hello from Rarukas - 6
利用例: Ansibleで複数マシンのプロビジョニングやレポート作成を分散/並列実行
先ほども出てきましたが、ansible
コマンドを実行できるイメージを用意しています。
これを利用すれば自マシンに負荷をかけることなく大量のサーバのプロビジョニングも行えますね。
まずはインベントリファイルやSSH用の秘密鍵などを準備しておきます。
この例ではプロビジョニング対象の各サーバ毎にインベントリファイル&秘密鍵を用意するようにしています。
# 対象のサーバ毎にインベントリファイルと秘密鍵を準備 $ tree . . ├── host1 │ ├── ansible.cfg │ ├── hosts │ └── private_key ├── host2 │ ├── ansible.cfg │ ├── hosts │ └── private_key ├── host3 │ ├── ansible.cfg │ ├── hosts │ └── private_key ├── host4 │ ├── ansible.cfg │ ├── hosts │ └── private_key └── host5 ├── ansible.cfg ├── hosts └── private_key # バックグラウンドでrarukasコマンド起動(5台分) $ rarukas --type ansible --plan hobby --sync-dir host1 ansible host1 -i hosts -m setup --tree ./ & $ rarukas --type ansible --plan hobby --sync-dir host2 ansible host2 -i hosts -m setup --tree ./ & $ rarukas --type ansible --plan hobby --sync-dir host3 ansible host3 -i hosts -m setup --tree ./ & $ rarukas --type ansible --plan hobby --sync-dir host4 ansible host4 -i hosts -m setup --tree ./ & $ rarukas --type ansible --plan hobby --sync-dir host5 ansible host5 -i hosts -m setup --tree ./ &
他にも大容量のファイルのファイルのダウンロード -> 他のサーバへ送信といったように自マシンやネットワークの負荷を軽減するような使い方もありますね。 色々応用できると思います。
でもお高いんでしょ?
Rarukas
を使うことで手軽にコンテナを使い捨てできますが、その際に心配なのがやっぱり料金ですね。
例えば1台あたり10分かかる処理を10台で行なったとすると、1実行あたり100分、毎日1回実行とすると30日で3,000分 = 50時間ですね。
Hobbyプランだと時間あたり 0.74円
ですので、月額利用料としては
@0.74円 × 50時間 + 基本料金50円 = 87円
なんと、87円!!!
87円ですよ!!これはお安いですね!!!
ちなみに、公式サイトの料金の部分に「課金は秒単位」と記載があるので、ちょっとだけ起動して破棄する = 使い捨てる運用にもってこいですね!!
ということでコンテナ使い捨てにRarukas
は非常にお手軽です。
是非ご利用くださいー!!
終わりに
Arukasは3/19までは無料で利用できるとのことです。
この機会に一度試してみてはいかがでしょうか?
その際は是非Rarukas
コマンドもよろしくお願いします!!
以上です。