64 lines
1.6 KiB
Terraform
64 lines
1.6 KiB
Terraform
data "aws_caller_identity" "this" {}
|
|
|
|
resource "aws_backup_vault" "AbVault" {
|
|
for_each = var.vaults
|
|
name = each.key
|
|
kms_key_arn = each.value.kms_key_arn
|
|
}
|
|
|
|
resource "aws_backup_vault_policy" "AbPolicy" {
|
|
for_each = aws_backup_vault.AbVault
|
|
backup_vault_name = each.value
|
|
policy = var.policy != null ? var.policy : jsonencode({
|
|
"Version" : "2012-10-17",
|
|
"Statement" : [
|
|
{
|
|
"Sid" : "DefaultAwsBackupPolicy"
|
|
"Effect" : "Allow",
|
|
"Principal" : {
|
|
"AWS" : data.aws_caller_identity.this.account_id
|
|
},
|
|
"Action" : [
|
|
"backup:*"
|
|
],
|
|
"Resource" : "*"
|
|
}
|
|
]
|
|
})
|
|
}
|
|
|
|
resource "aws_backup_plan" "plan" {
|
|
for_each = var.plans
|
|
name = each.key
|
|
dynamic "rule" {
|
|
for_each = var.plans
|
|
content {
|
|
rule_name = rule.value.rule.rule_name
|
|
schedule = rule.value.rule.schedule
|
|
target_vault_name = rule.value.rule.target_vault_name
|
|
dynamic "lifecycle" {
|
|
for_each = rule.value.rule.lifecycle
|
|
content {
|
|
cold_storage_after = lifecycle.value.cold_storage_after
|
|
delete_after = lifecycle.value.delete_after
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_backup_selection" "AbSelection" {
|
|
for_each = var.selections
|
|
name = each.key
|
|
iam_role_arn = each.value.iam_role_arn
|
|
plan_id = each.value.plan_id
|
|
|
|
dynamic "selection_tag" {
|
|
for_each = each.value.selection_tags
|
|
content {
|
|
type = selection_tag.value.type
|
|
key = selection_tag.value.key
|
|
value = selection_tag.value.value
|
|
}
|
|
}
|
|
} |