Skip to content

minio/ansible-minio

 
 

Repository files navigation

minio logo

Ansible Role: MinIO AIStor

Install and configure MinIO AIStor enterprise object storage server on RHEL/CentOS and Debian/Ubuntu.

Enterprise License Required: MinIO AIStor is a commercial product. A valid enterprise license is required for production use. See MinIO Licensing for details.

Requirements

  • Ansible >= 2.9
  • Supported target OS: Ubuntu (focal, jammy, noble), Debian (bullseye, bookworm), RHEL/CentOS (8, 9)
  • Target hosts must have internet access to download binaries from dl.min.io

Installation

From GitHub

Clone this repository into your Ansible roles directory:

git clone https://github.com/minio/ansible-minio.git roles/minio

From Ansible Galaxy

ansible-galaxy install minio.minio

Quick Start

1. Create your playbook

# site.yml
- name: "Install MinIO AIStor"
  hosts: minio_servers
  become: yes
  roles:
    - role: minio
  vars:
    minio_root_user: "minio-admin"
    minio_root_password: "a-strong-password-here"
    minio_license: "files/minio.license"
    minio_server_datadirs:
      - "/mnt/data"

2. Create your inventory

# inventory.ini
[minio_servers]
minio1.example.com

3. Run the playbook

ansible-playbook -i inventory.ini site.yml

This installs the MinIO AIStor server and mc client, creates the minio-user system user, configures the service, and starts it. The server will be available at http://minio1.example.com:9000 with the console at port 9001.

Examples

Standalone Server with Custom Ports

- hosts: minio_servers
  become: yes
  roles:
    - role: minio
  vars:
    minio_root_user: "minio-admin"
    minio_root_password: "a-strong-password-here"
    minio_license: "files/minio.license"
    minio_server_port: "9000"
    minio_console_port: "9001"
    minio_server_datadirs:
      - "/mnt/disk1"
      - "/mnt/disk2"
      - "/mnt/disk3"
      - "/mnt/disk4"

Distributed Cluster (4 Nodes, 4 Disks Each)

When deploying a distributed cluster, minio_server_args defines the volume topology passed to MINIO_VOLUMES, while minio_server_datadirs defines the local directories to create on each host.

- hosts: minio_servers
  become: yes
  roles:
    - role: minio
  vars:
    minio_root_user: "minio-admin"
    minio_root_password: "a-strong-password-here"
    minio_license: "files/minio.license"
    minio_server_datadirs:
      - "/mnt/data1"
      - "/mnt/data2"
      - "/mnt/data3"
      - "/mnt/data4"
    minio_server_args:
      - "https://minio{1...4}.example.com/mnt/data{1...4}"

Pin to a Specific Release

vars:
  minio_server_release: "RELEASE.2026-03-26T21-24-40Z"
  minio_client_release: "RELEASE.2026-03-26T21-24-40Z"

Install Only the Client

- hosts: workstations
  become: yes
  roles:
    - role: minio
  vars:
    minio_install_server: false
    minio_install_client: true

Additional Environment Variables

Use minio_server_env_extra to set any additional MinIO environment variables in config.env:

vars:
  minio_server_env_extra: |
    MINIO_SITE_REGION="us-east-1"
    MINIO_BROWSER=on

Role Variables

Variable Default Description
minio_server_bin /usr/local/bin/minio Installation path of the server binary
minio_client_bin /usr/local/bin/mc Installation path of the client binary
minio_server_release "" (latest) Server release to install, e.g. RELEASE.2026-03-26T21-24-40Z
minio_client_release "" (latest) Client release to install
minio_user minio-user System user that runs the MinIO service
minio_group minio-user System group for the MinIO service user
minio_server_envfile /etc/default/minio Systemd EnvironmentFile with startup vars
minio_config_dir /etc/minio Config directory (holds config.env, certs/, minio.license)
minio_server_ip "" Bind IP for the server (empty = all interfaces)
minio_server_port "9000" Server API port
minio_server_addr ":9000" Full server listen address (derived from ip + port)
minio_console_ip "" Bind IP for the console
minio_console_port "9001" Console port
minio_console_addr ":9001" Full console listen address (derived from ip + port)
minio_server_datadirs ["/var/lib/minio"] Data directories to create on disk
minio_server_make_datadirs true Whether to create data directories
minio_server_args [] Volume args for MINIO_VOLUMES (used in distributed mode)
minio_server_env_extra "" Extra env vars appended to config.env
minio_server_opts "" Additional CLI options for minio server
minio_root_user "" Root username (MINIO_ROOT_USER)
minio_root_password "" Root password (MINIO_ROOT_PASSWORD)
minio_license "" Path to license file (copied to config_dir/minio.license)
minio_install_server true Install the MinIO AIStor server
minio_install_client true Install the MinIO AIStor client (mc)
minio_enable_ssl false Use HTTPS for health check URL

What Gets Created

After running this role, the following is set up on target hosts:

Path Purpose
/usr/local/bin/minio Server binary
/usr/local/bin/mc Client binary
/etc/default/minio Systemd EnvironmentFile (MINIO_VOLUMES, MINIO_OPTS, MINIO_CONFIG_ENV_FILE)
/etc/minio/config.env Credentials and extra environment variables
/etc/minio/certs/ TLS certificates directory
/etc/minio/certs/CAs/ CA certificates directory
/etc/minio/minio.license License file (if minio_license is set)
/etc/systemd/system/minio.service Systemd unit file
/var/lib/minio Default data directory

The service runs as the minio-user system user and is enabled to start on boot.

Dependencies

None.

License

MinIO Software License (Proprietary). See LICENSE.md for details.

Documentation

About

Ansible role to install the MinIO https://min.io

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Shell 64.3%
  • Jinja 35.7%