powershell - 带有 for_each 变量的 Terraform template_file 资源

标签 powershell dictionary foreach terraform

我正在尝试编写一个用户数据模板文件,其中包含包含用户组访问权限的映射,但找不到任何在任何地方完成此操作的示例,并且不确定如何进行。可能吗?

这是我想要实现的目标:

terraform.tfvars 示例:

group_membership = {
  backup_folder_access = [
    "fred",
    "alice"
  ],
  full_folder_access = [
    "greg"
  ]
}

userdata.ps1.tpl 示例:

foreach ($group in ${group_membership}){
  New-LocalGroup -Name $group.key
  foreach ($user in ${group}.value){
    Add-LocalGroupMember -Group $group -Member $user
}

template_file 资源示例:

data "template_file" "userdata" {
  template = file("${path.module}/src/userdata.ps1.tpl")
  vars = {
    group_membership = "${var.group_membership}"
}

这显然是不正确的,有人知道这应该是什么样子吗?

最佳答案

这些天你应该使用 templatefile ,而不是template_file。那么就会是:

您的模板:

%{for group, value in group_membership ~}
  New-LocalGroup -Name ${group}
  %{for user in value ~}
    Add-LocalGroupMember -Group ${group} -Member ${user}
  %{ endfor ~}    
%{ endfor ~}

模板文件:

locals {
  userdata = templatefile("${path.module}/src/userdata.ps1.tpl", {
                  group_membership = var.group_membership
             })  
}

关于powershell - 带有 for_each 变量的 Terraform template_file 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73615966/

相关文章:

python - 将字典解析为 csv 文件

python - 使用集合中的 Counter 动态创建的字典的总和值

c# 如何在 foreach 中访问由 int 和 string 组成的对象列表的元素

Powershell 选择字符串 : Get results by named regex group

.net - 通过 .NET 发送电子邮件后 PowerShell 关闭文件/删除文件

Python 使用 writerow 将两个具有不同值类型的字典写入单个 csv 文件

php - 我想从这个 JSON URL 回显 IMDB ID、标题、质量和嵌入 URL

带有嵌套 foreach 的 PHP 数组

powershell - 使用 PowerShell 按日期对 CSV 输入数据进行排序时出现问题

powershell - 从任务计划程序运行 Powershell 脚本