[Grunt]grunt-ec2でGruntからEC2を操作する

2013.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Gruntでec2を操作する

aws-cliとは、コマンドラインからAWSを操作することができるツールです。
これを使用すると、ちょっとしたAWS作業を簡単に行ったり自動化したりできます。
今回はこのaws-cliと連携してGruntでec2を操作するためのGruntプラグインを紹介します。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.9
  • Node.js : v0.10.21

セットアップ

Gruntが入ってない場合はgrunt-cliをインストールします。
また、aws-cliも必要なのでpipでインストールしておきましょう。

% npm install -g grunt-cli(Gruntをインストールしてなければ)
% mkdir my-grunt-ec2 && cd my-grunt-ec2
% npm install
% npm install --save-dev grunt-ec2
% sudo easy_install pip(pipをインストールしてなければ)
% sudo pip install awscli --upgrade(aws-cliをインストールしてなければ)

次に、aws.jsonという名前でAWSの認証情報を記述したファイルを作成しておきます。

{
  "AWS_ACCESS_KEY_ID": "<アクセスキー>",
  "AWS_SECRET_ACCESS_KEY": "<シークレットキー>",
  "AWS_SECURITY_GROUP": "<セキュリティグループ>",
  "AWS_DEFAULT_REGION":"<リージョン >"
}

そして、Gruntfile.jsを次のように記述しましょう。

module.exports = function(grunt) {
 grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    ec2: 'aws.json'
 });

 grunt.loadNpmTasks('grunt-ec2');
};

上記Gruntfile.jsを記述したら、gruntコマンドを実行してみましょう。
下記のようにec2_list:allコマンドを実行すると、ec2インスタンス情報が表示されます。

% grunt ec2_list:all
{
    "Reservations": [
        {
            "OwnerId": "xxxxxxx",
            "ReservationId": "r-xxxxxxx",
            "Groups": [],
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
・
・

このように、grunt-ec2ではここにあるようにConfigurationとTaskを組み合わせて実行します。
Taskはec2の起動/シャットダウンやpm2関連の動作、nginx関連の動作を行うこともできます。
多数のTaskが用意されているので、確認してみてください。

参考サイトなど