-
Notifications
You must be signed in to change notification settings - Fork 89
Add data sources for querying existing MinIO resources #739
Copy link
Copy link
Closed
Labels
Description
Description:
The provider needs data sources for reading existing MinIO configurations and resources without managing them. This enables importing existing infrastructure and making data-driven decisions.
Why it's important:
- Query existing infrastructure
- Import existing resources
- Make conditional decisions based on current state
- Support for brownfield deployments
- Enable read-only Terraform modules
Needed data sources:
# IAM
data "minio_iam_user" "existing"
data "minio_iam_group" "existing"
data "minio_iam_policy" "existing"
data "minio_iam_service_account" "existing"
# Buckets
data "minio_s3_bucket" "existing"
data "minio_s3_bucket_policy" "existing"
data "minio_s3_bucket_versioning" "existing"
data "minio_s3_bucket_encryption" "existing"
data "minio_s3_bucket_replication" "existing"
data "minio_s3_bucket_notification" "existing"
data "minio_s3_bucket_lifecycle" "existing"
data "minio_s3_bucket_quota" "existing"
data "minio_s3_bucket_tags" "existing"
# Server
data "minio_server_info" "current"
data "minio_server_config" "current"
data "minio_kms_status" "current"
data "minio_health_status" "current"
# Replication
data "minio_site_replication_status" "current"
data "minio_site_replication_info" "current"
# Monitoring
data "minio_prometheus_config" "current"
# License
data "minio_license_info" "current"
# Tiers
data "minio_ilm_tiers" "available"
data "minio_ilm_tier" "specific"
# Batch jobs
data "minio_batch_job_status" "job"
data "minio_batch_jobs" "all"Example usage:
# Query existing bucket
data "minio_s3_bucket" "existing" {
bucket = "existing-bucket"
}
# Conditional resource creation
resource "minio_s3_bucket_encryption" "conditional" {
count = data.minio_s3_bucket.existing.encryption_enabled ? 0 : 1
bucket = data.minio_s3_bucket.existing.id
# ... encryption config
}
# Query server info
data "minio_server_info" "current" {}
output "server_version" {
value = data.minio_server_info.current.version
}
output "total_capacity" {
value = data.minio_server_info.current.storage.total
}
# Query all buckets
data "minio_s3_buckets" "all" {}
output "bucket_count" {
value = length(data.minio_s3_buckets.all.buckets)
}
# Import existing configuration
data "minio_server_config" "api" {
key = "api"
}
# Use existing config values
resource "minio_server_config_api" "imported" {
requests_max = data.minio_server_config.api.requests_max
# ... other settings
}References:
- Terraform data source best practices
- madmin-go info commands:
info-commands.go,info-v4-commands.go
Reactions are currently unavailable