カテゴリー別アーカイブ: AWS

Google Spreadsheet Add-on「AWS Pricing Helper」を作った #jawsug #festa2014

JAWS Festa Tohoku 2014の懇親会でLTしたものの、

デモに失敗して内容が全く伝わらなかった感があるので、

フォロー記事を書こうかと…

 

まあ、基本的には「自分で使いたかっただけ」ですし、

LT内でも言っているように、Googleのレビュー担当の人が良い人過ぎて惚れたので、何かの形で「この想いを伝えたかった」という、

超個人的な目的だったので、伝わってなくても良いっちゃ良いんですけどw

 

せっかく作ったので興味のある方に使ってもらってフィードバックを貰ってブラッシュアップできれば良いかなあと。

 

ちなみにLTはこんな感じです↓

そして、一つ訂正があります。

「Chrome ウェブストアで検索検索ぅ♪」とか言っちゃってましたが、

Chromeウェブストアでは出てこないです!

Spreadsheetの「アドオン」タブ→「アドオンを取得」から出てくる検索窓に「AWS」とか入れると出てきます(アップしたスライドは一応訂正入れておきました)

gs_get_addon

一番大事な所…大変申し訳無いですorz

 

使い方

基本的には、アドオンメニューから「Show manual」すると使い方等の説明がサイドバーとして出てきますので、

それをお読みいただければ良いです。

gs_addon_man

なので、ここでは全体的な説明を書きたいと思います。

 

まず、本アドオンはあくまで「Helper≒補助機能」であり、

本アドオンだけでは計算を行うことはできません。

Spreadsheetにあなたの計算式を埋め込み、

その中に本アドオンが提供するカスタム関数を加える事で、

あなただけの見積ツールを作ることができます。

 

例えば、こんな感じです。

gs_addon_sheet

数式を表示するとこのようになっており、

gs_addon_func

指定されたAWSリソースの料金を取得して勝手に埋めてくれるというわけです。

当然、インスタンスタイプ等の引数を変えると、

数値も自動的に更新されます。

gs_addon_change

 

ちなみにカスタム関数はマニュアルにチートシートが付属しており、

途中まで入力するとサジェストもされますので覚える必要はありません。

 

各種数値はAWS公式HPの料金表で使用されているデータと同じものを利用しているので、

データの形式やリソースの位置が変わらなければ、

料金の更新は自動的に反映されます。

ただし、逆に言うとデータの形式やリソースの位置が変わるとうまく動かなったり、古いデータのままになるので、

異変を感じた場合には、コチラからご報告いただけると助かります。

また、上記のような理由もあり、

本アドオンを利用して計算した結果に対する責任は如何様にも負いかねますので、

自己責任の元ご利用いただきますようお願い致します。

 

現状の対応サービスは以下の通りです。

  • EC2(Ondemand、各種Reserved)
    • Linux
    • Windows
  • RDS(Standard Deployment、Multi-AZ Deployment、Ondemand、各種Reserved)
    • MySQL
    • PostgreSQL
    • Oracleラインセンス込

ソースコードはGithubにて公開しておりますので、

追加、修正要望等はGithub Issueからいただけると助かりますm(__)m

 

教訓:

懇親会LTする時は出番前に飲むのを控えてちゃんと準備しろ(当たり前?w)

 


Windows向けのChefカスタムリソース(LWRP)を作ってみた

作ったのは以下の2つです。

WindowsだとTest-kitchen+Serverspecで良い感じにテストできないので、VirtualBoxとEC2で手動による動作確認はしてますが、動かないケースがあるかもしれません(;´Д`)

  1. Windows Serverでcronライクな定期処理を行うためのリソース(windows_scheduler)

  2. パフォーマンス等の内部情報を取得してCloudWatchに投げてくれるリソース(powershell_cloudwatch)

2は、内部で1を使用することにより、定期的にCloudWatchにPutしてくれる感じです。

Linuxサーバの監視は、vmstatとかpsとかの各種コマンドで取得した値を整形して、

AWSCLIでCloudWatchにPutさせることで監視を行っており、

これもChefのレシピになっているので新しいサーバが増えたらサクッと流すだけになっているので、

それと同じことをWindows Serverでもやりたかったので、作ってみました。

 

詳しい内容はREADMEやソースを見ていただくとして、

以下、概要です。

 

windows_scheduler Cookbook

  • windows_scheduler_jobというリソースを追加します。

PowerShellのScheduledJobというコマンドレットを使用しており、今のところそれしか需要がないので分単位での定期処理でPowerShellの実行のみサポートしています。ScheduledTaskというコマンドレットを使用するとPowerShell以外の定期処理を行えます(が、未対応ですw)

また、今回はじめて知ったのだけど、Windowsのタスクスケジューラは、デフォルトで前の同じタスクが終わっていない場合は次のタスクを実行してくれないのですが、そこはcronと同じように重複起動して欲しかったので変えるオプションを付加しています(リソースに与えるattributeで変更可能)

 

powershell_cloudwatch Cookbook

  • powershell_cloudwatch_couterというリソースを追加します。
  • powershell_cloudwatch_processというリソースを追加します。

PowerShellのGet-Couterというコマンドレットを使用して、PerformanceCounterという内部的なパフォーマンス情報を収扱うためのオブジェクトを取得します。それにより、実行時を切り取った値ではなく、指定されたインターバルで指定された回数取得し、その最小最大やサンプル数と合計値といったCloudWatchが扱える値のそれぞれに分類してPutします。

それに加えて、Get-Processというコマンドレットを使用してプロセス数をPutするためのリソースも作りました。こちらは、実行時を切り取った値をPutします。

 

Windows ServerをChefで色々やろうと思うと、

やはりPowerShellの知識は切っても切れないものとなりそうです。

というか、Windows Serverの管理においてPowerShellが必須なんでしょうね…

 

最初はちょっと楽しかったけど、やっぱり途中からちょっとつらかったですwww

 

 


Windows Chef ClientをChef Serverに自動で繋ぐ

 

Windows ServerのCofigurationをChefでやろうとした場合、

ssh + rsyncが必要なknife-soloは現実的ではないため、

効率的に管理しようと思ったらやっぱりChef Serverを使うのかなと思いチャレンジしています。

 

そんな中、Linux Chef ClientをChef Serverに繋ぐ例は、

いくつか見つけることができましたが、

やはりWindows ServerはさすがのGoogle先生もご存じないご様子だったので、

自力で頑張ってみました。

 

前提条件

  • Windows 2008 R2 or later
  • PowerShell 3.0 or higher
  • Chef Server側のenvironmentはあらかじめ作成しておく
    (これはWindowsに限らずですが…)
  • Amazon S3のPrivate Bucket
    (validatorキーの受け渡しに使います)

 

こんな感じです。

YOUR_*

な所は各々書き換えて使います。

validatorキー含め必要なものは全て外部から取るようにしているので、

まっさらなサーバから流すだけで接続させられます。

Chef Clientの起動スパンは5分毎、

WindowsのScheduledJobは「いつまで」を登録しなければならず、

ここは無限にはできない(PowerShell4.0~はできるらしいけど)ので、

とりあえず適当に大きい値8192日になっていますが、

特に起動スパン5分はあまり一般的ではないようなので用途に合わせて変えてください。

ここらへん↓

$SpanMinutes   = 5
$DurationDays  = 8192

 

EC2の場合

以下で囲んでUserDataから流し込めばRDPで繋ぐこと無く完全自動で繋がせることができます。

あらかじめroleを作っておいて、タグ情報からrun_listにそのroleが指定されたnodeのJSONファイルを生成する等すればそのまま即設定まで完了ですね。

<powershell></powershell>

 

ConfigurationまでChefで完璧にできるようになれば、

Wiondows Serverもログイン無しでセットアップできるとかだいぶ胸熱なので、

ちょっと頑張ってみたいと思いました。