2014/09/06

PowerShellでさくらのクラウドを起動してみた

Gfx

「それWindowsでもできるよ。」

先日さくらのクラウドがSandboxという無償で何をしてもいい環境(意訳)を用意してくださったので、
WindowsのPowerShellでさくらのクラウドのREST APIを叩いて遊んでみました。 

すでにさくらのクラウドのAPIツールとしてはsacloud CLIというJavascript実装が用意されていますが、せっかくなのでPowerShellで挑戦してみました。
もちろんREST APIなので様々な言語で実装可能です。


*作業環境

今回はWindows8.1の環境を利用しました。
PowerShellの Invoke-RestMethodを使いたいのでPowerShell3.0(Windows8またはWindows Server 2012以降)の環境を推奨です。

困ったときはさくらのクラウドのAPIリファレンスを読みましょう。
 さくらのクラウドAPI1.1

 

*事前作業

基本的なことですがさくらのクラウドへアカウント登録済みであるという前提で進めます。

まずはAPIを呼ぶためのアクセストークンを取得します。
APIキーの取得のページから 適当なAPIキーを登録しました。

注:sandbox環境を使う際にはsandbox環境でAPIキーを発行する必要があります。同様に石狩第1ゾーンを利用する場合には第1ゾーンのAPIキーが必要になるようです。

スクリーンショット 2014 09 06 20 42 01

そうするとアクセストークンとシークレットアクセストークンが確認できるようになります。

スクリーンショット 2014 09 06 20 46 03

注:ひらがなで書いている部分には本来半角英数の文字列が記載されています。これを利用してアクセスする形となります。

 

*サーバの状態を確認する。

実際にPowerShellでサーバの一覧を取得してみます。

$ACCESS_TOKEN = "アクセストークン"
$ACCESS_TOKEN_SECRET = "シークレットアクセストークン"

$basicAuth = ("{0}:{1}" -f $ACCESS_TOKEN,$ACCESS_TOKEN_SECRET)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}

Invoke-RestMethod -Uri https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/server -headers $headers -Method Get

最終行は折り返しなしの1行で。
先ほど取得したアクセストークンを設定してあげ実行すると…

From : 0
Count : 0
Total : 0
Servers : {}
is_ok : True

もちろんサーバは起動していないのでCount:0という戻り値が帰ってきます。 

 

*サーバを起動する

$ACCESS_TOKEN = "アクセストークン"
$ACCESS_TOKEN_SECRET = "シークレットアクセストークン"

$basicAuth = ("{0}:{1}" -f $ACCESS_TOKEN,$ACCESS_TOKEN_SECRET)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}

$body = @{"Server.Name"="New Server";"Server.Zone.ID"=29001;"Server.ServerPlan.ID"=1001}

Invoke-RestMethod -Uri https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/server -headers $headers -body $body -Method Post

Bodyの部分を追加と一部を変更して実行してあげると…

Server Success is_ok
------ ------- -----
@{ID=112600706358; Name=New Server; HostName=localhost; ... True True

PowerShellのシェル上ではきちんと表示されていますが、このようにTrueが帰ってきます。

スクリーンショット 2014 09 06 21 58 46

さくらのクラウドのWeb画面上でも指定した名前のサーバインスタンスが出来上がっていることを確認出来ました。

先ほど実行したサーバの状態を確認するPowerShellを実行すると

From : 0
Count : 1
Total : 1
Servers : {@{Index=0; ID=112600706358; Name=New Server; HostName=localhost; Description=; ServiceClass=cloud/plan/1core-1gb; CreatedAt=2014-09-06T21:50:56+09:00; Icon=; ServerPlan
=; Zone=; Instance=; Disks=System.Object[]; Interfaces=System.Object[]; Appliance=; Tags=System.Object[]}}
is_ok : True

ちゃんとCountが1になっており1台作成されていることが確認できます。

ちなみにゾーンIDとサーバプランIDの確認の方法はURIから問い合わせできます。

Invoke-RestMethod -Uri https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/zone -headers $headers -Method Get

Invoke-RestMethod -Uri https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/product/server -headers $headers -Method Get

 

*サーバを削除する

$ACCESS_TOKEN = "アクセストークン"
$ACCESS_TOKEN_SECRET = "シークレットアクセストークン"

$basicAuth = ("{0}:{1}" -f $ACCESS_TOKEN,$ACCESS_TOKEN_SECRET)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}

$body = {Force=true}
Invoke-RestMethod -Uri https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/server/112600706358 -headers $headers -Method DELETE -body $body

対象のサーバIDを確認し、そのURIに対してDeleteメソッドを投げるだけ。

スクリーンショット 2014 09 06 22 13 38

Web画面上でも削除されていることを確認。

ちなみに今回の方法はサーバのインスタンスの用意だけを行いました。
本来はこれに対してディスクを用意して上げる必要があります。むしろディスクを用意しないとサーバインスタンスは用意できますが 起動はできません…
このあたりもURIでコールしてIDを調べて…ッテすればできると思います。

さくらのクラウドのAPIリファレンスにはサンプルコードも掲載されているので、PowerShellとか変化球を狙わなければ比較的簡単にできると思います。 
何を思ったか今回はPowerShellで挑戦しましたが…いい勉強になりました。 

 

今回はさくらのクラウドのAPIをPowerShellから呼び出してみましたが、最近のWebAPIの多くはRESTベースのものですのでWindows環境からの利用というところで応用の幅はあるのではないかと思います。
PowerShellであればモダンなWindows環境下で新規にツールのインストールが必要ないというのが強みではないでしょうか。もちろんきちんとツールが用意できるのであればPowerShellに拘る必要もありません。

2014/09/05

WordPress 4.0がリリースされました。

英語版が公開されました。
日本語化されたパッケージも近日中にリリースされるかと思います。

WordPress › WordPress 4.0 “Benny”

インターフェイスを大きく変更するのではなく、使い勝手の向上を狙ったメジャーバージョンアップという感じ。
長らくWordpressは使っていないので多分としか言えませんが…

投稿のためのエディタの改善が結構強力で、これまではHTMLコードの修正が必要だったYoutubeなどの埋め込みもリンクをコピペすると自動判定してコンテンツを埋め込んでくれるというもの。
これはいいですね!

 

何はともかく既存の3.9環境から再インストールすることなくWordpressの持つアップデート機能を使ってバージョンアップできるようなので、もう少し様子を見てからバージョンアップされてみてはいかがでしょうか?

このブログはGoogleのBloggerを使っているのですがどうにもエディタが貧弱です・・・7年もこれを続けていることですしそろそろ使いやすい環境にお引っ越しを考えようかな;-p 

 

2014/09/04

さくらのクラウドがSandboxゾーンを追加

スクリーンショット 2014 09 04 18 58 04

さくらのクラウドのコントロールパネルに新しくSandBoxなる機能を追加しました。
名前の通り砂場のことで、本番に影響しない環境ということです。

Sandbox(テスト用ゾーン) | さくらのクラウドニュース

何のサンドボックスかと言ったらWebのコントロールパネルとAPIを試すための環境ということです。
確かに本番がガッツリ稼働しているアカウントでサーバの起動停止のレクチャーと言うのは怖いですよね…

このサンドボックス環境であれば実際にサーバの起動するところまでの手順を確認でき、実際には課金されないようなので安心できます。
これでみんなの大好きな手順書作成も捗りますね;-p 

2014/09/03

チーム開発実践入門は開発・運用に携わる人にお勧め

クラウドのメンターに教えていただき手にとった一冊。
本当に素晴らしい本を紹介していただきありがとうございます。 

私自身は根っからの開発者というわけではなく運用よりの人間ですが、この本に書かれている内容は開発者に限らず運用にな携わる人には是非とも読んでもらいたい一冊です。

もちろん記載されている内容はかなりモダンなものになっているのですべてが全て応用できるかというと、会社によってくると思いますが、それでも基本的な考え方の部分は非常に参考になると思います。
システム開発だけの会社であれば、開発手法を。
自社開発でシステムを運用している場合には利用者すべてが。
開発以外のカスタマーサポート業務の人もチケット管理の部分が参考にできると思います。

開発に少しでも関わったことがある人でしたら「あるある」なお話ばかりで胸が痛くなること必須。

 

本書の内容はすでにたくさんのところにまとめられているのでリンク集という形でまとめておきます。

チーム開発実践入門を読んで重要なポイントをまとめてみた - Qiita

デザイナーと読みたい『チーム開発実践入門』 | バシャログ。

あと、Amazonのコメント欄がすごい参考になるので是非とも目を通しておくことをおすすめします。

 

この本に記載されているワークフローがきちんとできている会社はかなり幸せなのではないでしょうか。いや、多分ね。 むしろ最近伸びているベンチャーなどはこういった開発部分を事前にしっかり決めてしまうことで集中すべき部分にリソースを投資できているのではないかと思います。いや、知らないけどね。

 

この本に記載されているJenkinsやChef、GitHubなど名前は知っているが使ったことないものばかりなので、少なくとも何をできるものなのか位は分かる程度に触っておきたいと思います;-p 
もう少し読み返して勉強しないとね。 

2014/09/01

DigitalOceanを使ってみた


Vertical color f60b39a0

今更感が満載ですがすべてSSDで高速デプロイ可能なVPSサービスのDigitalOceanを使ってみました。

DigitalOcean

注:上記リンクから登録されると$10相当のクレジットがボーナスされます。
  そして紹介者の私にもペイバックが入るわけです。

 

 破壊的インテグレーションとでも呼ぶべきか、作っては壊すという文化の体現者でデプロイするのが非常に簡単にできることが特徴です。
サイト自身でも言っていることですが55秒でデプロイ(Dropletと読んでる)が完了しSSHで接続できる状態となります。 

VPSが利用できる状態になることが簡単であるというのも重要なポイントではありますが、サービスが利用可能になるまでの登録に時間がかかるのではもったいないですよね。
その点DigitalOceanは本当に手軽。

メールアドレスとパスワードを設定。
後はクレジットカードを登録するだけです。えっ・・・クレジットカードの登録が面倒臭い?
ご心配なく。Paypalで事前にチャージすることも可能です。

どこの会社もクレジットカードの登録が面倒臭いのでこれは非常に助かるところ。

 

スクリーンショット 2014 09 01 14 29 42

最大の特徴は1時間1円の低価格。
512MBでディスク20GBなので利用方法はきちんと考えないとすぐに溢れかねませんが、手軽に使い潰せる環境という意味では気楽に使えるのが嬉しいところ。
Vagrantなどから呼び出して使うというのも楽しいかもしれません。

 

実際に使ってみて感じた最大の特徴は国内VPSやクラウドの多くがデフォルトをCentOSにしているにもかかわらず、DigitalOceanはUbuntuが最初に選択されていること。無意味に嬉しいですね。

スクリーンショット 2014 09 01 14 33 48

また代表的アプリケーションのインストールまで完了したイメージもプリセットで用意されているので「アプリを利用するための環境構築」に時間を取られるのをグッと減らせそうです。

スクリーンショット 2014 09 01 14 34 35

 

お伝えすることがあるとすれば国内にデータセンターを保有していないため一番近場がシンガポールになるので、国内で利用する際にはレイテンシが気になるかもしれません。
また、海外のVPSあるあるの転送量制限があるので長期的に展開するサービスを考える際には国内のVPS屋やクラウド屋を使ったほうがいいかもしれません。

スクリーンショット 2014 09 01 14 35 55

これまでのサービスと比べて手軽さは本当にすごいです。
使った分だけ支払いというのではなく、Paypalを使ってチャージしておけばそもそも使いすぎる心配もないという安心感もあります。

 

マネージメント用のiPhoneアプリなども種類豊富にあるようですので、Linux環境でちょっと遊んでみたいという時にいいのではないでしょうか。