saklientを使ってスクリプトでサーバを立ち上げてみよう
先日リリースしたさくらのクラウド用ライブラリsaklientはお試しいただいたでしょうか。自分の好きなプログラミング言語を使ってさくらのクラウドを操作できますので、外部システムと連携させることも容易です。
saklientにはPHP/C#/Python/Ruby/Perl/Node.jsが用意されていますが、今回はRuby版を使ってサーバを立ち上げてみたいと思います。
目次
まずはインストール
Ruby版のインストールはRubygemsを使って行います。PHPであればPackagist、PythonであればPyPIなど各言語の一般的なパッケージ管理に対応しています。
$ gem install saklient Fetching: saklient-0.0.2.8.gem (100%) Successfully installed saklient-0.0.2.8 1 gem installed
使ってみる
では早速試してみます。まず基本はライブラリの読み込みと、認証になります。API操作のためにAPIキーが必要です。設定画面のAPIキーから取得または作成ができるようになっています。
認証はAPIキーで取得できるトークン、シークレットとゾーンで行います。
ゾーンは執筆時点で4つあります。
- tk1a
- 東京第1ゾーン
- is1a
- 石狩第1ゾーン
- is1b
- 石狩第2ゾーン
- tk1v
- サンドボックス
になります。
require 'saklient/cloud/api' token = 'your-token' secret = 'your-secret' zone = 'is1a' api = Saklient::Cloud::API:: authorize(token, secret, zone)
このようなコードで認証を行います。
認証が終わればいよいよサーバ立ち上げになります。サーバを立ち上げるまでにはいくつかのステップがあります。
- ディスクの選択と作成
- サーバプランの選定
- ネットワーク インタフェースの追加
- ディスクとサーバの接続
- スタートアップスクリプトの選択(必要があれば)
- ディスクの修正
- サーバ起動
となります。APIを使った場合もこの操作を順番に行っていく形になります。それでは順番に見ていきましょう。
1. ディスクの選択と作成
ディスクの選択は新規ディスク、既存ディスクそしてディスクレスの3つから選択します。そして新規ディスクの際にはディスクサイズとアーカイブを選択します。
archives = api.archive. with_name_like('CoreOS'). with_size_gib(20). with_shared_scope. limit(1). find archive = archives[0]
こちらがその処理を行っている部分になります。ディストリビューションの名前で検索できるのでどんなサーバを立ち上げたいかが簡単に指定できます。
アーカイブを選択したらディスクの作成を行います。
disk = api.disk.create disk.name = name disk.description = description disk.tags = [tag] disk.plan = api.product.disk.ssd disk.source = archive disk.save
ディスクの名前(name)、説明(description)、タグ(tags)は管理上のものです。分かりやすい設定を行ってください。planとしてSSDか標準プランが選べます。
saveを実行した時点でディスクが作成されます。
2. サーバプランの選定
次にサーバプランの選定を行います。コア数、メモリ容量が選択できます。
server = api.server.create server.name = name server.description = description server.tags = [tag] server.plan = api.product.server.get_by_spec(cpu, mem) server.save
CPUは1〜12コア、メモリは1〜5GBまで指定ができます。こちらの名前(name)、説明(description)、タグ(tags)も管理上のものです
3. ネットワーク インタフェースの追加
ディスクとサーバが準備できたらNICを用意します。こちらはインターネットへの接続、スイッチへの接続そして接続なしの3パターンから選択ができます。インターネット接続の場合は1 IPの共有セグメントになります。
iface = server.add_iface iface.connect_to_shared_segment
4. ディスクとサーバの接続
アーカイブを選択した場合、ディスクのコピーが完了するまではしばらくかかります。そこで待ちの処理を行います。
disk.sleep_while_copying
これが返ってきたらディスクの準備ができたということなので、サーバと接続します。
disk.connect_to(server)
5. スタートアップスクリプトの選択(必要があれば)
スタートアップスクリプトを使うとDocker UIやLAMP、ownCloud、Redmine、WordPressなどが起動時にすでに立ち上がっている状態にできます。こちらもまたAPIを通じて指定が可能です。
scripts = api.script. with_name_like('WordPress'). with_shared_scope. limit(1). find script = scripts[0]
アーカイブと同じくLike検索ができるのが手軽ですね。
6. ディスクの修正
ディスクの修正とはあらかじめ指定したホスト名、ログインパスワード、公開鍵、スタートアップスクリプトを反映してくれる機能です。まだこの時点ではサーバは起動していないのが面白いところです。
diskconf = disk.create_config diskconf.host_name = host_name diskconf.password = password diskconf.ssh_key = ssh_public_key diskconf.scripts.append(script) diskconf.write
7. サーバ起動
そして最後にサーバ起動です。
server.boot
bootを実行して少し待つと true が返ってきますので、そうするとサーバの情報が確認できるようになります。
> server.ifaces[0].ip_address => "133.242.19.144" > server.ifaces[0].mac_address => "9C:A3:BA:22:0B:7A"
スクリプト全体や他のプログラミング言語でのコーディング例はsaklientのページで確認できます。いつも同じように操作してさくらのクラウドをお使いでしたら、そこはぜひスクリプト化して間違いのない、かつ楽しいサーバ管理をしてください!