2018/11/08TweetPocketTerraformには変数の条件によって使い分けをする場合はmapを使用するとめちゃくちゃ便利だということをブログしてなかったので今回お話をしましょう。他にも関数によるインスタンス台数が増える場合もcount.indexを使ってインスタンス数を指定するだけや、Nameタグの値にインデックスを含めるにはformat関数など併用して、${}の中では算術演算子が使えるなど、さらにコードを短くすることも可能です。今回はせっかくなのでそれらを応用して構築してみました。true}このようにインスタンス数が増えるとじゃんじゃんコードも増えるわけです。"subnet-xxxxx"}}・Nameタグの数値をインスタンス毎に変更する(例)adachin-web01,adachin-web02まず上記に書きましたcount.indexを使うことで、リソースのインデックスを取得することができます。インデックスは0から始まるので今回2台構築となると+1で値を指定しましょう。タグの値にインデックスを含めるにはformat関数を利用して文字列を整形します。・毎回異なるAZ(サブネット)に配置する(例)subent_idここでmapを使い、サブネットIDを変数化します。aws_variables.tfではa,c,dとサブネットが3つ指定しています。これをlookup関数によりmapの値を取得します。ちなみにmapではなく、element関数とsplit関数を使って取得する方法もあるそうです。var.subnets_id)))}"・インスタンス毎にEIPを設定するこちらもcount.indexを使ってインスタンスIDを一つずつ取り出しています。■まとめ便利か!!コードは短いほうがメンテしやすいのでぜひ使いこなしましょう!!!ただmapに依存してしまうとメンテしづらいのと、可読性が下がるというデメリットを感じましたね。使う用途によって利用するのがベストだと感じました。ROBOTICS/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化、エンジニア採用広報などを担当している。個人開発では「夫婦、パートナー向け家事管理サービス/famii」をCakePHPで開発中。副業では数社サーバー保守とベンチャー企業のインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。コメントデータの処理方法の詳細はこちらをご覧ください。