Zum Inhalt

MinIO role

Deploy MinIO, a high-performance S3-compatible object storage server for storing unstructured data.

Usage

Configure MinIO settings in your inventory:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# vars/main.yml
minio_container_name: minio
minio_image_name: quay.io/minio/minio
minio_image_version: latest
minio_root_user: admin
minio_root_password: your_secure_password_min_8_chars
minio_data_volume: /docker/minio/data
minio_network: proxy
proxy_caddy_ports:
  - "9000:9000"
  - "9090:9090"

Include the role in your playbook:

1
2
3
- hosts: storage
  roles:
    - role: minio

The role provides these tags: - minio-install - Deploy MinIO container - minio-uninstall - Remove MinIO container

Docs

Deploy MinIO to your Docker host:

1
ansible-playbook -i inventory/hosts.yml your-playbook.yml --tags minio-install

Remove MinIO installation:

1
ansible-playbook -i inventory/hosts.yml your-playbook.yml --tags minio-uninstall

Configuration Details

The role deploys MinIO with: - Official Image: quay.io/minio/minio:latest - S3 API Port: 9000 (S3-compatible API) - Console Port: 9090 (Web management console) - Persistent Storage: Host directory mounted to /data - Network: Configurable Docker network - Restart Policy: unless-stopped

Accessing MinIO

After deployment: - S3 API: http://host:9000 - Web Console: http://host:9090

Login credentials: - Username: Configured via minio_root_user (default: admin) - Password: Configured via minio_root_password

Storage

MinIO data is stored in the host directory specified by minio_data_volume:

1
minio_data_volume: /docker/minio/data

This directory will contain: - Buckets - Objects - Metadata - Configuration

S3 Compatibility

MinIO is fully compatible with AWS S3 API. Configure applications to use MinIO:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Python boto3 example
import boto3

s3 = boto3.client('s3',
    endpoint_url='http://minio-host:9000',
    aws_access_key_id='admin',
    aws_secret_access_key='your_password',
    region_name='us-east-1'
)

# Create bucket
s3.create_bucket(Bucket='my-bucket')

# Upload file
s3.upload_file('local-file.txt', 'my-bucket', 'remote-file.txt')

Web Console Features

The MinIO Console (port 9090) provides: - Bucket management (create, delete, configure) - Object browser (upload, download, preview) - User and access key management - Bucket policies and lifecycle rules - Monitoring and metrics - Server configuration

Use Cases

MinIO is ideal for: - Backup storage: Store application backups - Media storage: Images, videos, documents - Data lake: Unstructured data storage - CI/CD artifacts: Build outputs and dependencies - Application storage: Object storage for applications - Development: Local S3-compatible storage for testing

Creating Buckets

Via web console (port 9090): 1. Login with root credentials 2. Click Buckets → Create Bucket 3. Enter bucket name 4. Configure access policy (public/private)

Via MinIO Client (mc):

1
2
3
mc alias set myminio http://minio-host:9000 admin password
mc mb myminio/my-bucket
mc cp file.txt myminio/my-bucket/

Access Keys

Create access keys for applications: 1. Open web console 2. Navigate to Identity → Users 3. Create new user or service account 4. Generate access key and secret key 5. Use in application configuration

Security

  • Change default credentials immediately
  • Use strong passwords (minimum 8 characters)
  • Create service accounts with limited permissions
  • Configure bucket policies for access control
  • Consider using reverse proxy with TLS
  • Restrict network access to trusted sources

Reverse Proxy Integration

Configure Caddy/Traefik to provide HTTPS:

1
2
3
4
5
6
7
8
# Caddy example
s3.example.com {
    reverse_proxy minio:9000
}

console.example.com {
    reverse_proxy minio:9090
}

High Availability

For production, consider: - Multiple MinIO servers (distributed mode) - Erasure coding for data protection - Load balancing across servers - Persistent storage with redundancy

Monitoring

Check MinIO status:

1
2
docker logs minio
docker exec minio mc admin info local

Resources