A Puppet module for managing Minio (Amazon S3 compatible storage) settings.
This module allows you to install and configure Minio using pre-built binaries and does not need external package repositories. You can chose to install Minio with default settings, or customize all settings to your liking.
puppet-minio
depends on- it manages a user and group
minio
- it manages the Minio directory (
/opt/minio
) and the storage (/var/minio
) - it installs a
minio
service listening on port9000
The simplest use case is to rely on defaults. This can be done by simply including the class:
include ::minio
See REFERENCE.md for the full reference.
In addition to standard minio server environment variables, there are the following ones:
-
MINIO_OPTS
- used to specify additional command-line arguments for the minio server. Example:"--quiet --anonymous"
(with quotes) -
MINIO_DEPLOYMENT_DEFINITION
- used to specify custom deployment definition. Required for erasure coding and distributed mode. Not required if used with a single storage root. Examples:/var/minio{1...4}
- for erasure codinghttps://server{1...4}/var/minio{1...4} https://server{4...8}/var/minio{1...4}
- for distributed deployments/var/minio
- for standalone deployment without erasure coding. Will be the default value ifstorage_root
is/var/minio
or['/var/minio']
.
class { 'minio':
package_ensure => 'present',
owner => 'minio',
group => 'minio',
base_url => 'https://dl.minio.io/server/minio/release',
version => 'RELEASE.2021-08-20T18-32-01Z',
checksum => '0bf72d6fd0a88fee35ac598a1e7a5c90c78b53b6db3988414e34535fb6cf420c',
checksum_type => 'sha256',
configuration_directory => '/etc/minio',
installation_directory => '/opt/minio',
storage_root => '/var/minio', # Could also be an array
listen_ip => '127.0.0.1',
listen_port => 9000,
configuration => {
'MINIO_ROOT_USER' => 'admin',
'MINIO_ROOT_PASSWORD' => 'password',
'MINIO_REGION_NAME' => 'us-east-1',
'MINIO_OPTS' => '"--quiet --anonymous"',
'MINIO_DEPLOYMENT_DEFINITION' => 'https://example{1..4}.com/var/minio{1...4} https://example{5..8}.com/var/minio{1...4}'
},
manage_service => true,
service_template => 'minio/systemd.erb',
service_provider => 'systemd',
service_ensure => 'running',
manage_server_installation => true,
manage_client_installation => true,
client_package_ensure => 'present',
client_base_url => 'https://dl.minio.io/client/mc/release',
client_version => 'RELEASE.2021-07-27T06-46-19Z',
client_checksum => '0df81285771e12e16a0c4c2f5e0ebc700e66abb8179013cc740d48b0abad49be',
client_checksum_type => 'sha256',
client_installation_directory => '/opt/minioclient',
cert_ensure => 'present',
cert_directory => '/etc/minio/certs',
default_cert_configuration => {
'source_path' => 'puppet:///modules/minio/examples',
'source_cert_name' => 'localhost',
'source_key_name' => 'localhost',
},
additional_certs => {
'example' => {
'source_path' => 'puppet:///modules/minio/examples',
'source_cert_name' => 'example.test',
'source_key_name' => 'example.test',
}
},
}
class { 'minio::server':
manage_server_installation => true,
package_ensure => 'present',
owner => 'minio',
group => 'minio',
base_url => 'https://dl.minio.io/server/minio/release',
version => 'RELEASE.2021-08-20T18-32-01Z',
checksum => '0bf72d6fd0a88fee35ac598a1e7a5c90c78b53b6db3988414e34535fb6cf420c',
checksum_type => 'sha256',
configuration_directory => '/etc/minio',
installation_directory => '/opt/minio',
storage_root => '/var/minio', # Could also be an array
listen_ip => '127.0.0.1',
listen_port => 9000,
configuration => {
'MINIO_ROOT_USER' => 'admin',
'MINIO_ROOT_PASSWORD' => 'password',
'MINIO_REGION_NAME' => 'us-east-1',
'MINIO_OPTS' => '"--quiet --anonymous"',
'MINIO_DEPLOYMENT_DEFINITION' => 'https://example{1..4}.com/var/minio{1...4} https://example{5..8}.com/var/minio{1...4}'
},
manage_service => true,
service_template => 'minio/systemd.erb',
service_provider => 'systemd',
service_ensure => 'running',
cert_ensure => 'present',
cert_directory => '/etc/minio/certs',
default_cert_configuration => {
'source_path' => 'puppet:///modules/minio/examples',
'source_cert_name' => 'localhost',
'source_key_name' => 'localhost',
},
additional_certs => {
'example' => {
'source_path' => 'puppet:///modules/minio/examples',
'source_cert_name' => 'example.test',
'source_key_name' => 'example.test',
}
},
}
class { 'minio::client':
manage_client_installation => true,
package_ensure => 'present',
base_url => 'https://dl.minio.io/client/mc/release',
version => 'RELEASE.2021-07-27T06-46-19Z',
checksum => '0df81285771e12e16a0c4c2f5e0ebc700e66abb8179013cc740d48b0abad49be',
checksum_type => 'sha256',
installation_directory => '/usr/local/bin',
binary_name => 'minio-client',
aliases => {
'default' => {
'ensure' => 'present',
'endpoint' => 'http://localhost:9000',
'access_key' => 'admin',
'secret_key' => Sensitive('password'), # can also be a string
'api_signature' => 'S3v4', # optional
'path_lookup_support' => 'on', # optional
}
},
purge_unmanaged_aliases => true
}
See metadata.json for supported platforms.
- It's currently not possible to purge unmanaged client aliases in the same run when the client is being installed.
This project contains tests for rspec-puppet.
Quickstart:
pdk bundle install
pdk bundle exec rake 'litmus:provision_list[puppet6]'
pdk bundle exec rake 'litmus:install_agent[puppet6]'
pdk bundle exec rake litmus:install_module
pdk bundle exec rake litmus:acceptance:parallel
pdk bundle exec rake litmus:tear_down
When submitting pull requests, please make sure that module documentation, test cases and syntax checks pass.