概要
- Ruby の aws-sdk を使ってインスタンスのリストを作成する
- おまけに Ruby の勉強もしてみる
- terminal-table を試してみる
準備
aws-sdk for ruby のインストール
gem で一発でインストール。
sudo gem install aws-sdk --no-ri --no-rdoc -V
やっておくべきこと
access_key
と secret_access_key
と対象となるエンドポイントについて確認して config.yml
として保存する。
access_key_id: ${YOUR_ACCESS_KEY} secret_access_key: ${YOUR_SECRET_KEY} ec2_endpoint: ec2.ap-northeast-1.amazonaws.com
endpoint についてはこちらで確認して設定しておく。
実際にやってみる
インスタンス一覧を取得
インスタンスの ID と Hypervisor のタイプと IP アドレスを取得してみる。
以下のような出力となる。
id hypervisor ipaddress i-xxxxxxx1 xen xx.xxx.xxx.xx1 i-xxxxxxx2 xen i-xxxxxxx3 xen xx.xxx.xxx.xx2 i-xxxxxxx4 xen
へえ、Xen なんやなあと親近感。
ちなみに、クラスとかオブジェクトとかメソッドとか全く理解出来ていないが...以下のような感じだろうか...誰か教えてください...orz
用語 | コード |
---|---|
オブジェクト | ec2.instances |
変数 | instance |
メソッド | id とか hypervisor とか ipaddress |
なのでメソッドとしてこちらを参考にしてインスタンスの色々な情報を取ることが出来るかも。
出力の体裁を良くする
とりあえず目的が果たせたところで、出力の結果を罫線をつけたりして見た目を良くしたいということで、terminal-table という gem を利用して出力を罫線をつけてみる。
terminal-table
terminal-table
は ruby で書かれたテキストベースのテーブル生成モジュール。詳細はこちらを。
sudo gem install terminal-table --no-ri --no-rdoc -V
インストールは上記のように gem で一発。簡単ですな。
インスタンス一覧取得スクリプトをちょっと修正
以下のような感じで書き換えてみる。こちらにもアップ。
変わったところは terminal-table
を require
しているところと、オブジェクトから取得したメソッドを rows
に突っ込んでいる点。
そうすると...以下のような出力となり、ちょっと見やすくなる。
+------------+------------+----------------+ | id | hypervisor | ipaddress | +------------+------------+----------------+ | i-xxxxxxx1 | xen | xx.xxx.xxx.xx1 | | i-xxxxxxx2 | xen | | | i-xxxxxxx3 | xen | xx.xxx.xxx.xx2 | | i-xxxxxxx4 | xen | | +------------+------------+----------------+
自己満足。
まとめ
- 意外に簡単にインスタンス一覧を取得出来たのは先人たちの経験と aws-sdk のおかけです...
- 次はインスタンスの起動と停止を試してみたいなと思っちょリマス
- terminal-table は良いです