3
3

More than 3 years have passed since last update.

Former2を使って既存のAWSリソースからテンプレートを生成

Posted at

既存のAWSリソースからCloudFormationやTerraformのテンプレートを生成できるツール「Former2」を試してみました。

環境構築

Former2はWebベースで動作するので、former2 にアクセスすれば利用できます。
自分のAWSリソースにアクセスするための認証情報を登録する必要がありますが、サードパーティのツールに機密情報を入力したくない場合はDockerを使ってローカルにサクッと環境構築できます。

git clone https://github.com/iann0036/former2.git
cd former2/
docker-compose up -d

docker-compose.ymlをのぞいてみると以下のような感じでした。

docker-compose.yml
version: '3'
services:
  former2:
    image: nginx:1.17.8-alpine
    ports:
      - "127.0.0.1:80:80"
    volumes:
    - .:/usr/share/nginx/html

IAMユーザーの作成

先にFormer2からAWSリソースにアクセスするためのIAMユーザーを作成します。
コンソール画面にアクセスする用途では使いませんので、ここでは「AWSマネジメントコンソールへのアクセス」のチェックは外しておきます。

image.png

アタッチするポリシーは「ReadOnlyAccess」を選択します。

image.png

初期セットアップ

Chromeで localhost(127.0.0.1) へアクセスすると初期セットアップのウィザードが表示されます。
ブラウザの拡張機能が必要になりますので、該当するブラウザのリンクをクリックしてインストールしてから次へ進みます。

image.png
image.png

続いて、クレデンシャルを入力します。
事前に作成したIAMユーザーのアクセスキーID / シークレットアクセスキーを入力して次へ。

image.png

次はパラメータです。
CloudFormationのパラメータを定義しておけるようですが、何も入力しないままで次へ。

image.png

最後の各種設定が表示されますが、とりあえずデフォルトのままで「Go to Dashboard」を押して完了させます。
ここで無理に「Scan Account」を押してリソースをスキャンしなくても良いみたいです。

image.png

コンソール画面とよく似たダッシュボードが表示されます。
リージョンが「バージニア北部」になっているので「東京」に変更します。

image.png

試しに、VPCを開いて既存のものにチェックを入れて「Add Selected」 → 「Generate」を押してみます。

image.png

YAML形式でCloudFormationのテンプレートが生成されました!

AWSTemplateFormatVersion: "2010-09-09"
Metadata:
    Generator: "former2"
Description: ""
Resources:
    EC2VPC:
        Type: "AWS::EC2::VPC"
        Properties:
            CidrBlock: "10.0.0.0/16"
            EnableDnsSupport: true
            EnableDnsHostnames: false
            InstanceTenancy: "default"
            Tags: 
              - 
                Key: "Name"
                Value: "cloud01-vpc"

左側メニューのOutputsから出力形式を変更できます。
Terraformにするとこんな感じ。

terraform {
    required_providers {
        aws = {
            source = "hashicorp/aws"
            version = "~> 3.0"
        }
    }
}

provider "aws" {
    region = "ap-northeast-1"
}

resource "aws_vpc" "EC2VPC" {
    cidr_block = "10.0.0.0/16"
    enable_dns_support = true
    enable_dns_hostnames = false
    instance_tenancy = "default"
    tags {
        Name = "cloud01-vpc"
    }
}

最後に、不要になったらDockerは停止しておきましょう

docker-compose down

まとめ

昔はCloudFormerというツールがあったんですが、かなり使いにくかったのを覚えています。
今回のFormer2はセットアップも簡単で、UIも非常にわかりやすくて使いやすそうですね!

リソースIDなどの固有情報はべた書きされるようなので、他リソースを参照するよう関数を利用したり、冗長な部分は変数化するなどの工夫は必要になってきますが、既存リソースからコード化できるのはIaCの学習にはとても役立ちそうだと感じました。

以上、参考になれば嬉しいです。

参考リンク

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3