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