第3章. Terraform構文パターン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
Terraform 関数は構成ファイル内のデータを操作するための柔軟性とパワーをユーザに与える。これらはデータの変換を容易にし、算術演算を行い、リスト、マッピング、オブジェクトのような複雑なデータ型を扱う手助けをする。これらの関数を使うことで、ユーザはよりダイナミックで適応性の高いTerraformコンフィギュレーションを構築することができる。
3.1 trimspaceでユーザ入力をクリーニングする
問題
Terraformを使ってインフラを作成する際、ユーザの入力はしばしば余分な空白や改行、その他の予期せぬ文字について処理する必要がある。これは正しく処理されないとリソース作成時のエラーや不整合につながる可能性がある。そのため、chomp やtrimspace のようなTerraformの組み込み関数を使ってユーザ入力をきれいにする方法を知っておくことは必須である。
解決策
trimspace 関数の適用対象となる専用の変数を導入することで、入力サニタイズの堅牢性を確立する:
variable"user_input"{description="The user input that needs cleaning"type=stringdefault=" \nExample user input with leading and trailing spaces\n "}locals{clean_user_input=trimspace(var.user_input)}output"clean_user_input"{value=local.clean_user_input}
ディスカッション
このコード・スニペットでは、user_input という名前の変数を宣言している。これはユーザからの未処理の入力となる。デフォルト値がセットされ、デモのために先頭と末尾の空白と改行が含まれている。
次に、Terraformの組み込み関数chomp とtrimspace を使って、clean_user_input という名前のローカル値を定義する。trimspace は文字列の引数を取り、文字列の先頭と末尾のスペースをすべて取り除いたコピーを返す関数である。文字列内のスペースには影響しない。
一方、 chomp 関数は、文字列の末尾にある改行文字を削除する。これは、改行ではなく内容だけを読み取りたいファイル読み取り関数に便利である。
この関数をtrimspace(var.user_input) の順序で使用すると、ユーザ入力から先頭または末尾のスペースと改行文字が削除される。
最後に、クリーニングされたユーザ入力を表示する出力が定義される。結果を見るには、terraform apply を実行すればよい。改行文字 のないクリーンな文字列が表示される。
3.2 接頭辞と接尾辞を削除する
問題
特定のシナリオにおいて、ユーザが他のリソースからプレフィックスやサフィックスを含む入力や出力を受け取ることがある。Terraformには文字列から接頭辞や接尾辞を直接削除する組み込み関数がないため、これを実現するための回避策が必要になる。
解決策
user_input という名前のTerraform変数を定義することで、プレフィックスとサフィックスの除去テクニックのステージを設定し、文字列操作の探求を開始する: ...