TerraformingでAWSのS3バケットをTerraform化してみる

Terraformというインフラをコードで管理できるツールがあります。で、Terraformingという既に構築済みのインフラをTerraformのコードで管理できるように変換できるジェネレーターツールもあります。便利な […]

広告ここから
広告ここまで

目次

    Terraformというインフラをコードで管理できるツールがあります。で、Terraformingという既に構築済みのインフラをTerraformのコードで管理できるように変換できるジェネレーターツールもあります。便利な世の中ですね。
    ということでとりあえず使ってみました。

    Terraformingのインストール

    $ gem install terraforming
    

    これだけです。
    もちろんGemfileに以下のように記述することで、bundlerからインストールすることも可能です。

    gem 'terraforming'
    

    インストールに成功していれば、以下のように表示されます。

    $ terraforming 
    Commands:
      terraforming asg             # AutoScaling Group
      terraforming dbpg            # Database Parameter Group
      terraforming dbsg            # Database Security Group
      terraforming dbsn            # Database Subnet Group
      terraforming ec2             # EC2
      terraforming ecc             # ElastiCache Cluster
      terraforming ecsn            # ElastiCache Subnet Group
      terraforming eip             # EIP
      terraforming elb             # ELB
      terraforming help [COMMAND]  # Describe available commands or one specific command
      terraforming iamg            # IAM Group
      terraforming iamgm           # IAM Group Membership
      terraforming iamgp           # IAM Group Policy
      terraforming iamip           # IAM Instance Profile
      terraforming iamp            # IAM Policy
      terraforming iampa           # IAM Policy Attachment
      terraforming iamr            # IAM Role
      terraforming iamrp           # IAM Role Policy
      terraforming iamu            # IAM User
      terraforming iamup           # IAM User Policy
      terraforming igw             # Internet Gateway
      terraforming lc              # Launch Configuration
      terraforming nacl            # Network ACL
      terraforming nat             # NAT Gateway
      terraforming nif             # Network Interface
      terraforming r53r            # Route53 Record
      terraforming r53z            # Route53 Hosted Zone
      terraforming rds             # RDS
      terraforming rs              # Redshift
      terraforming rt              # Route Table
      terraforming rta             # Route Table Association
      terraforming s3              # S3
      terraforming sg              # Security Group
      terraforming sn              # Subnet
      terraforming sqs             # SQS
      terraforming vgw             # VPN Gateway
      terraforming vpc             # VPC
    
    Options:
      [--merge=MERGE]                                # tfstate file to merge
      [--overwrite], [--no-overwrite]                # Overwrite existng tfstate
      [--tfstate], [--no-tfstate]                    # Generate tfstate
      [--profile=PROFILE]                            # AWS credentials profile
      [--region=REGION]                              # AWS region
      [--use-bundled-cert], [--no-use-bundled-cert]  # Use the bundled CA certificate from AWS SDK
    

    Terraformingする

    では早速Terraform化してみましょう。
    Terraformingではリソース毎にコマンドを実行する形になります。

    例えばS3のバケットをTerraformingする場合は以下のようになります。

    $ terraforming --profile YOUR_AWS_PROFILE_NAME s3
    resource "aws_s3_bucket" "wp-kyoto" {
        bucket = "wp-kyoto"
        acl    = "private"
    }
    

    これだけではCLI上に表示されるのみとなりますので、tfファイルとしてエクスポートさせておきましょう。

    $ terraforming --profile YOUR_AWS_PROFILE_NAME s3 > s3.tf
    

    --tfstateオプションを利用することで、tfstate形式でも出力が可能です。

    $ terraforming --profile YOUR_AWS_PROFILE_NAME s3 --tfstate > s3.tfstate
    

    AWSの全リソースぶっこ抜き

    ちなみにドキュメントを見ると、terraformingが対応しているすべてのリソースをtfファイル化するスクリプトがあったりします。

    $ terraforming help | grep terraforming | grep -v help | awk '{print "terraforming", $2, "--profile", "YOUR_AWS_PROFILE", ">", $2".tf";}' | bash
    

    YOUR_AWS_PROFILEのところを、自分のaws-cliのプロファイル名にすればOKです。

    実行すると、以下のようにリソース毎にtfファイルを吐き出してくれます。

    $ tree
    .
    ├── asg.tf
    ├── dbpg.tf
    ├── dbsg.tf
    ├── dbsn.tf
    ├── ec2.tf
    ├── ecc.tf
    ├── ecsn.tf
    ├── eip.tf
    ├── elb.tf
    ├── iamg.tf
    ├── iamgm.tf
    ├── iamgp.tf
    ├── iamip.tf
    ├── iamp.tf
    ├── iampa.tf
    ├── iamr.tf
    ├── iamrp.tf
    ├── iamu.tf
    ├── iamup.tf
    ├── igw.tf
    ├── lc.tf
    ├── nacl.tf
    ├── nat.tf
    ├── nif.tf
    ├── r53r.tf
    ├── r53z.tf
    ├── rds.tf
    ├── rs.tf
    ├── rt.tf
    ├── rta.tf
    ├── s3.tf
    ├── sg.tf
    ├── sn.tf
    ├── sqs.tf
    ├── vgw.tf
    └── vpc.tf
    
    広告ここから
    広告ここまで
    Home
    Search
    Bookmark