既存リソースが全部取られたので、ログは大量すぎて省略しています。いうディレクトリが生成されていました。treeコマンドで見ると以下の様なファイル群ができています。filesTerraformerでRoute53を追加でimportここでハッと気付きましたが、r53を取得し忘れました。追加で行けるのかわかりませんが、とりあえずやってみます。vpcやsubnetは取得済みなので、単純にroute53だけ指定します。route53問題なく動作しました。treeを再びgeneratedディレクトリに実行すると、route53ディレクトリが生成されていました。filesTerrafomerが生成したファイルを確認して、利用したいものだけ拾っていくここからが大変な作業です。generatedに作成されるのは、利用したAWS権限が参照可能な全てのリソースになっているので、必要なものをピックアップします。ロードバランサにつけた名前を検索して、それ以外のところを削除していきました。lb.tflb.tfはALBの一覧になっているので、必要なALB以外をサクッと削除しました。lb_listenere.tflb_listenere.tfはリスナーの一覧です。80と443の2つしかありませんので、LB名でフィルタできたのでそこまで大変ではありませんでした。lb_listener_rule.tflb_listener_rule.tfはリスナールールの一覧で、大量に出ていましたが、LB名でフィルタすれば必要部分を抜粋することができました。lb_target_group.tflb_target_group.tfはTagetGroupの一覧で、LB名とは独立しているため、TargetGroupのnameの値を見ながら人間が判断するしかなさそうでした。B順にソートした後、一つ一つTargetGroup名を確認して検索してピックアップしました。lb_target_group_attachment.tflb_target_group_attachment.tfはTargetGroupとEC2インスタンスとの紐付けに使用します。これもTargetGroupのarnから抜粋していきます。恐ろしい数のDestroy数が出ますので、危険な状態です。今のterraform.tfstateは削除し、リファクタしながらimportしていくのが良さそうです。outputs.tfは必要なさそうなので消します。outputs.tfterraformerはvariables.tfにalbのstateも参照する様になっているため、そちらもコメントアウトしてしまいます。検索しながらリファクタをしていきます。対象としては以下の2種類のみの参照でしたので、直すのは難しくありませんでした。lb_listener.tfのload_balancer_arnlb_listener_rule.tfのlistner_arn具体的には以下の様に直します。planが通る様になったことを確認し、長すぎるIDをわかりやすくて短いものに変更します。importをしていきます。大きいものから順にやる必要があるため以下の順番でやります。RuleTargetGroupTargetGroupAttachmentというわけでまずはALBを。この手の作業ではARNが必要になりますが、AWSのWebコンソールは優れているので大抵はコピーが簡単にできます。Terraform.続いてListner。Rule、この辺りから数が多くなって面倒になってきますが、仕方ない。Terraform.#以降は同じ感じで繰り返す続いてTargetGroupです、かなり単純な作業になってきて、辛い感じになりますが、考え方を変える必要があります。これは本来コードで書くべきだったはずの作業を、手でやってしまった"ツケ"を払っているのです。存在するべきコードを今作っていると考えれば、少しは気が紛れるのではないでしょうか(そうでもないかも)軽快な音楽など聞きながらやることをお勧めします。対応していませんでした。逆にいうと対応してしまっているterraformerすごいな、、という感想になります。imported."ここで選択肢は二つです。rmなどで外す)今回はあっさりと既存分については諦めることにしました。VPC周りをdataで用意さらにリファクタリングを進めます。次はVPC周りをdataファイルとして用意します。理由として、今回terraform管理下におきたいのは特定のALB一式のみですので、それ以外のリソースは管理できる様にしたくはありません。そのため必須となるVPC関連とR53のZoneなどはdataで用意します。data.tfは以下の雰囲気になりました。"subnet-moge"}ここまでくるとterrafomerが作成したvariables.tfが不要になるので削除します。SecurityGroupも追加SecurityGroupは当初importしようとしましたが、security_group_ruleに分解?する事象が発生したので同じルールを新規で作り、ALBにアタッチして入れ替える感じにしました。cognitoのimportALBで認証を行うためのcognitoについては、terraformerは対応していないので手動でファイルを作りました。user_poolは既存のもので良く、user_pool_clientのcallback_urlsを管理するのが目的です。仕上げbackend.tfを作ってs3にstatefileをおく様にします。ディレクトリをgitリポジトリにアップしておけば、一旦完了です。}}ここまでやってディレクトリ構成は以下となりました。files最後に各リソースを、意味のある形でファイル分割をしなおします。最終的に以下のようなファイル構成になりました。始まるファイル名の数字が、aws_lb_listener_ruleのpriorityで指定する値になっています。"2"}ここまでくると、新しいサービス(URL)を追加する場合に、既存のresource_ファイルをコピーして少量の変更だけで、簡単に設定を行っていくことができるはずです。actionsでのCICD実装などするとさらに良いでしょう。prでplanしてmergeでapplyするやつです。まとめとりあえずは当初の目的を果たせたので本作業はOKとしました。所感としては、今回はterraformerの作ったHCLを少なからずリファクタリングしましたが、毎回これをやるのは辛いので、ツールが出したものはそのまま使う思想や工夫が必要なのかもな、と考えたりしました。参加してきましたS3のWebページリダイレクト機能を試す2020年の目標ALBとTargetGroup一式をTerraformにimportしてみる2019年の振り返り月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。