Explore the docs » Project Vision » Security Policy »
The Terraform Provider for MinIO enables infrastructure as code management for MinIO object storage deployments. This provider supports comprehensive MinIO features including:
- Bucket Management: Create, configure, and manage S3-compatible buckets
- IAM Operations: User management, policies, and access control
- Object Operations: Upload, download, and manage objects
- Advanced Features: Replication, lifecycle rules, encryption, versioning
- Enterprise Support: Multi-cluster, federation, and auditing capabilities
- S3 Compatibility: Works with Hetzner, Cloudflare R2, Backblaze B2, DigitalOcean Spaces
- Complete MinIO API Coverage - 55+ resources and 25+ data sources covering buckets, IAM, ILM, encryption, replication, notifications, and server configuration
- S3 Compatible - Use with any S3-compatible backend via
s3_compat_mode - Security First - STS AssumeRole, OIDC Web Identity, mTLS, and session token authentication
- Developer Friendly - Descriptions on every attribute, import support on every resource
- Active Community - Responsive maintainers and growing contributor base
Prebuilt versions of this provider are available on the Releases page.
But if you need to build it yourself, just download this repository, install Task, then run the following command to build and install the plugin in the correct folder (resolved automatically based on the current Operating System):
task installExplore the examples folder for more usage scenarios.
To get started quickly, you can use the configuration from examples/user/main.tf as shown below:
terraform {
required_providers {
minio = {
source = "aminueza/minio"
version = ">= 3.0.0"
}
}
}
provider "minio" {
minio_server = var.minio_server
minio_region = var.minio_region
minio_user = var.minio_user
minio_password = var.minio_password
}You may use variables to configure your provider (as in the example):
variable "minio_region" {
description = "Default MINIO region"
default = "us-east-1"
}
variable "minio_server" {
description = "Default MINIO host and port"
default = "localhost:9000"
}
variable "minio_user" {
description = "MINIO user"
default = "minio"
}
variable "minio_password" {
description = "MINIO password"
default = "minio123"
}The project uses Docker Compose to run acceptance tests against multiple MinIO instances. Docker is required.
Run all acceptance tests:
docker compose run --rm testRun specific tests by pattern:
TEST_PATTERN=TestAccAWSUser_SettingAccessKey docker compose run --rm testAfter running docker compose up, you can access the MinIO Console (the web UI) for each MinIO instance:
- Main MinIO: http://localhost:9001
- Second MinIO: http://localhost:9003
- Third MinIO: http://localhost:9005
- Fourth MinIO: http://localhost:9007
Login credentials are set in your docker-compose.yml for each service. For example, for the main MinIO instance:
- Username:
minio - Password:
minio123
For the other instances, use the corresponding MINIO_ROOT_PASSWORD (e.g., minio321, minio456, minio654).
See the Project Vision for our detailed roadmap, upcoming features, and development priorities.
- Documentation: Explore the docs
- Issues: Report bugs or request features
- Discussions: Join community discussions
- Security: Report security issues
We welcome contributions! See CONTRIBUTING.md for detailed guidelines.
- Bug Reports: Help us fix issues
- Feature Requests: Suggest new capabilities
- Documentation: Improve guides and examples
- Testing: Add test coverage and validation
- Translation: Help with internationalization
This project follows open governance principles. See GOVERNANCE.md for:
- Maintainer roles and responsibilities
- Decision-making processes
- Community guidelines
- Security requirements for maintainers
All versions of this provider starting from v2.0.0 are distributed under the AGPL-3.0 License. See LICENSE for more information.
- Thanks to all contributors who make this project possible
- Built on the Terraform Plugin SDK
- Powered by MinIO - High Performance Object Storage