はじめに
Terraformでランダム文字列を作成することができます。その手順について記載します。
ランダム文字列はパスワードを作成する場合などに使用します。
ランダム文字列を生成する場合は、Terraformのリソースであるrandom_stringを使用します。
Terraformのマニュアルも併せて参考にしていただけると、作業がスムーズに進むと思います。
(参考情報)
random_string – Terraform –
random_string
(引数)
length : 文字列の長さを数値で指定します。必須。
upper : 半角大文字英字を含むかどうか。*1
lower : 半角小文字英字を含むかどうか。*1
number : 数字を含むかどうか。*1
special : 記号を含むかどうか。*1
*1 任意。設定値はtrue/false。デフォルト値はtrue。
(注意事項)
下記の引数を全てfalseに設定することはできません。
– upper
– lower
– number
– special
手順概要
(基礎編)
各引数の生成文字列を確認します。対象の引数をtrueに設定して、残りの引数をfalseに設定します。
確認項目は下記の4項目です。
– upper
– lower
– number
– special
(応用編)
複雑なパスワードポリシーを想定して、ランダム文字列を生成します。
下記のパスワードポリシーを例として、手順を記載します。
– パスワードの桁数 : 16桁
– 先頭の文字 : 半角大文字英字
– 最後の文字 : 記号
– 中間の文字 : 半角大文字英字,半角小文字英字,数字
1. 基礎編
1.1. tfファイルを作成する。
# cat ec2.tf provider "aws" { region = "ap-northeast-1" } resource "random_string" "default" { length = 16 } resource "random_string" "upper" { length = 16 upper = true lower = false number = false special = false } resource "random_string" "lower" { length = 16 upper = false lower = true number = false special = false } resource "random_string" "number" { length = 16 upper = false lower = false number = true special = false } resource "random_string" "special" { length = 16 upper = false lower = false number = false special = true } resource "aws_instance" "ec2" { count = 1 ami = "ami-eb50cd8d" instance_type = "t2.micro" key_name = "aws_v2" tags { type = "terraform" random_default = "${random_string.default.result}" random_number = "${random_string.number.result}" random_upper = "${random_string.upper.result}" random_lower = "${random_string.lower.result}" random_special = "${random_string.special.result}" } }
1.2. Terraformを初期化する。
# terraform init Initializing provider plugins...
1.3. Terraformの計画を立てる。
# terraform plan -out=tfplan Refreshing Terraform state in-memory prior to plan...
1.4. インスタンスを作成する。
# terraform apply "tfplan" tags.%: "" => "6" tags.random_default: "" => "v4af8k3]7b8z@8R5" tags.random_number: "" => "7203888510025405" tags.random_upper: "" => "GWFHEGDFKLRUAUEN" tags.random_lower: "" => "hebamcxlaagctcfh" tags.random_special: "" => "@)@(}*-{?#++><=&" tags.type: "" => "terraform"
1.5. ランダム文字列を確認する。
# terraform show tags.% = 6 tags.random_default = Dl4ph_oyKJgnfiZ_ tags.random_number = 7567771841281505 tags.random_upper = OMVZCLVKOGDHFXUE tags.random_lower = wbyrjrsotvmirafv tags.random_special = @)@(}*-{?#++><=& tags.type = terraform
2. 応用編
2.1. tfファイルを作成する。
# cat ec2.tf provider "aws" { region = "ap-northeast-1" } resource "random_string" "upper" { length = 1 upper = true lower = false number = false special = false } resource "random_string" "mix" { length = 14 upper = true lower = true number = true special = false } resource "random_string" "special" { length = 1 upper = false lower = false number = false special = true } resource "aws_instance" "ec2" { count = 1 ami = "ami-eb50cd8d" instance_type = "t2.micro" key_name = "aws_v2" tags { type = "terraform" random_pattern = "${random_string.upper.result}${random_string.mix.result}${random_string.special.result}" } }
2.2. – 2.4. 基礎編の手順を参照。
2.5. ランダム文字列を確認する。
# terraform show tags.% = 2 tags.random_pattern = VrjbyGEZdRod5v0[ tags.type = terraform
コメントを残す