Terraform でランダムなパスワードを設定する方法

方法

モジュール random_password を使う

ほぼ同じ random_string もある。 random_password は生成結果を標準出力に出さないため、 random_string よりセキュア

使い方

resource "random_password" "master_password" {
  length  = 10
  special = false
}

パラメータ

  • length: 文字列長

他はオプション

よく使うのは、 special (!@#$%&*()-_=+[]{}<>:? の使用可否 ) くらいか (大体 false にする )

使いみち

AWS Systems Manager パラメータストアをterraformで定義したいけど、パスワードの値はterraformに持たせたくないので、仮のパスワードをひとまず入れておきたい場合などに使う

resource "random_password" "db_password" {
  length  = 10
  special = false
}

resource "aws_ssm_parameter" "db_password" {
  name = "/hoge/db/passowrd"
  type = "SecureString"
  value = random_password.db_password.result

  lifecycle {
    ignore_changes = [value]
  }
}
  • lifecycle ignore_changes = [value] を設定することで、terraform上では、value は上書きされなくなる
  • terraform apply 実行後、管理コンソールなどから本当のパスワードを手入力する