如何在terraform脚本中多次使用随机密码
如何在terraform脚本中多次使用随机密码。例如:如何在terraform脚本中多次使用随机密码,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,如何在terraform脚本中多次使用随机密码。例如: resource "random_password" "password" { length = 16 special = true override_special = "_%@" } resource "aws_db_instance" "example" { instance_class = "db.t3.micro" allocated_storage = 64 engine = "mysql" user
resource "random_password" "password" {
length = 16
special = true
override_special = "_%@"
}
resource "aws_db_instance" "example" {
instance_class = "db.t3.micro"
allocated_storage = 64
engine = "mysql"
username = "someone"
password = random_password.password.result
}
这只会起作用一次。如果我需要创建
resource "random_password" "password" {
length = 16
special = true
override_special = "_%@"
}
resource "aws_db_instance" "example1" {
instance_class = "db.t3.micro"
allocated_storage = 64
engine = "mysql"
username = "someone"
password = random_password.password.result
}
resource "aws_db_instance" "example2" {
instance_class = "db.t2.small"
allocated_storage = 64
engine = "mysql"
username = "anyone"
password = random_password.password.result
}
现在我需要创建2个随机密码。我可以在随机密码中使用count吗?您可以使用count或for\u each循环
resource "random_password" "password" {
count = 2
length = 16
special = true
override_special = "_%@"
}
resource "aws_db_instance" "example" {
for_each = random_password.password
instance_class = "db.t3.micro"
allocated_storage = 64
engine = "mysql"
username = "someone"
password = each.value.result
}
这将导致-random\u password.password[0]。result
和random\u password.password[1]。result
用于您的结果值(random\u password.password
无索引,当for\u each或count用于递归时,与terraform中的任何其他地图一样处理)。在本例中,我将计数设置为2,但这可以是任意整数。和
aws_db_实例。示例[0]
和aws_db_实例。示例[1]
,由for_每个
循环根据随机密码.密码
对象的数量创建。在循环中,您将资源引用为each.value
(因此,each.value.result
将等同于random\u password.password.result
)
有关每个_的的详细信息
编辑:重要提示…这只是一个如何计数/for_的例子。如果根据您创建的密码数量来计算实例的数量,那将非常尴尬(想想吧…)。你会想拍一张更大的图片,并考虑你实际上是想放大你的项目,然后把你的计数/ FROX每个逻辑建立在这个基础上。
EDIT2(因为我没有足够的业力来评论):没有理由输出不起作用。您使用的是什么版本的tf?)
此外,要获得结果列表,您可以执行以下操作:
output "passwords" {
value = random_password.password[*].result
}
如果生成的每个密码(可能是您的情况)的密码要求相同,请使用
count
:
resource "random_password" "passwords" {
count = 2
length = 16
special = true
}
resource "aws_db_instance" "db_instance_1" {
...
password = random_password.passwords[0].result
}
resource "aws_db_instance" "db_instance_2" {
...
password = random_password.passwords[1].result
}
output "db_instance_1_password" {
value = random_password.passwords[0].result
}
output "db_instance_2_password" {
value = random_password.passwords[1].result
}
如果密码要求不同,请定义多个
随机密码
资源:
resource "random_password" "password_1" {
length = 16
special = true
}
resource "random_password" "password_2" {
length = 16
special = false
min_upper = 1
min_lower = 1
min_numeric = 1
}
resource "aws_db_instance" "db_instance_1" {
...
password = random_password.password_1.result
}
resource "aws_db_instance" "db_instance_2" {
...
password = random_password.password_2.result
}
output "db_instance_1_password" {
value = random_password.password_1.result
}
output "db_instance_2_password" {
value = random_password.password_2.result
}
在这两种情况下,考虑在输出中设置以隐藏来自TrrFrm命令输出的原始密码。我不能分别使用for_,因为每个aws_db_实例的用户名和实例类都不同。我基本上渴望知道如何在不同的块中使用随机密码。即使这样也不起作用。如何输出生成的密码输出“password0”{value=“${random_password.password[0].result}”