130 lines
3.7 KiB
Terraform
130 lines
3.7 KiB
Terraform
|
|
ephemeral "vault_kv_secret_v2" "mc_publisher" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/mc-publisher"
|
||
|
|
}
|
||
|
|
|
||
|
|
ephemeral "vault_kv_secret_v2" "minecraft" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/minecraft"
|
||
|
|
}
|
||
|
|
|
||
|
|
ephemeral "vault_kv_secret_v2" "boot_publisher" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/boot-publisher"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "boot_publisher" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.boot_publisher.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "minecraft" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.minecraft.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "mc_publisher" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.mc_publisher.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
ephemeral "vault_kv_secret_v2" "grafana" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/grafana"
|
||
|
|
}
|
||
|
|
|
||
|
|
ephemeral "vault_kv_secret_v2" "model_reader" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/model-reader"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "model_reader" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.model_reader.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
ephemeral "vault_kv_secret_v2" "rcon_publisher" {
|
||
|
|
mount = "secret"
|
||
|
|
name = "versitygw/users/rcon-publisher"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "rcon_publisher" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.rcon_publisher.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "grafana" {
|
||
|
|
access_key_id = "********"
|
||
|
|
secret_access_key = ephemeral.vault_kv_secret_v2.grafana.data["secretAccessKey"]
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "minio_s3_bucket" "artifacts" {
|
||
|
|
bucket = "artifacts"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "minio_s3_bucket_policy" "artifacts" {
|
||
|
|
bucket = minio_s3_bucket.artifacts.bucket
|
||
|
|
|
||
|
|
depends_on = [versitygw_user.grafana, versitygw_user.rcon_publisher, versitygw_user.mc_publisher, versitygw_user.minecraft, versitygw_user.boot_publisher]
|
||
|
|
|
||
|
|
policy = jsonencode({
|
||
|
|
Version = "2012-10-17"
|
||
|
|
Statement = [
|
||
|
|
{
|
||
|
|
Sid = "MinecraftRead"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/minecraft/*"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "SaltatoryRead"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/saltatory/*"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "BootstrapPublish"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject", "s3:PutObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/minecraft/*"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "McPublish"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject", "s3:PutObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/saltatory/*"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "GrafanaPluginRead"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/grafana-rcon/*"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "FrigateModelRead"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = versitygw_user.model_reader.access_key_id
|
||
|
|
Action = ["s3:GetObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/frigate/yolov9-t-320.onnx"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "RconPublish"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = "********"
|
||
|
|
Action = ["s3:GetObject", "s3:PutObject"]
|
||
|
|
Resource = ["arn:aws:s3:::artifacts/grafana-rcon/*"]
|
||
|
|
},
|
||
|
|
]
|
||
|
|
})
|
||
|
|
}
|