diff --git a/roles/minio/defaults/main.yml b/roles/minio/defaults/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..263a0cb7162325e18bb5e5c36cffe883b8e2aaaf --- /dev/null +++ b/roles/minio/defaults/main.yml @@ -0,0 +1,7 @@ +minio_extra_opts: [] + +minio_volumes: + - /srv/minio/data/ + +minio_bind_address: :9000 +minio_console_bind_address: :9001 diff --git a/roles/minio/handlers/main.yml b/roles/minio/handlers/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..f71335a372be3e38ffa7bbc0cf280d1a953c779b --- /dev/null +++ b/roles/minio/handlers/main.yml @@ -0,0 +1,6 @@ +- name: Restart MinIO + systemd: + name: minio + state: restarted + daemon_reload: true + when: not systemd_minio_started is changed diff --git a/roles/minio/molecule/default/converge.yml b/roles/minio/molecule/default/converge.yml new file mode 100644 index 0000000000000000000000000000000000000000..41671aeec54d84d0d5ad047198d25d7deceadb9e --- /dev/null +++ b/roles/minio/molecule/default/converge.yml @@ -0,0 +1,19 @@ +- name: Converge + hosts: all + become: true + pre_tasks: + - name: Upgrade archlinux-keyring + pacman: + name: archlinux-keyring + state: latest + update_cache: true + + - name: Upgrade system + pacman: + upgrade: true + + roles: + - role: minio + vars: + minio_root_user: username + minio_root_password: password diff --git a/roles/minio/molecule/default/molecule.yml b/roles/minio/molecule/default/molecule.yml new file mode 100644 index 0000000000000000000000000000000000000000..deaf564d8beb15b6c93d2c869f078bd6f7b64a05 --- /dev/null +++ b/roles/minio/molecule/default/molecule.yml @@ -0,0 +1,14 @@ +driver: + name: vagrant + +platforms: + - name: instance + box: archlinux/archlinux + memory: 512 + cpu: 1 + +provisioner: + name: ansible + +verifier: + name: testinfra diff --git a/roles/minio/molecule/default/tests/test_default.py b/roles/minio/molecule/default/tests/test_default.py new file mode 100644 index 0000000000000000000000000000000000000000..f061f6ffe59176470e435b88caf3c5815b67f1c7 --- /dev/null +++ b/roles/minio/molecule/default/tests/test_default.py @@ -0,0 +1,25 @@ +def test_minio_client_installed(host): + assert host.exists("mcli") + + +def test_minio_config(host): + config = host.file("/etc/minio/minio.conf") + + assert config.exists + assert config.user == "minio" + assert config.group == "minio" + assert config.mode == 0o600 + with host.sudo(): + assert config.content == ( + b"MINIO_VOLUMES=/srv/minio/data/\n" + b"MINIO_ROOT_USER=username\n" + b"MINIO_ROOT_PASSWORD=password\n" + b"MINIO_OPTS=--address=:9000 --console-address=:9001\n" + ) + + +def test_minio_started_and_enabled(host): + minio = host.service("minio") + assert minio.is_running + assert minio.is_enabled + assert minio.systemd_properties["Restart"] == "always" diff --git a/roles/minio/tasks/main.yml b/roles/minio/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..7b51e3e172708043a65003dd94ec75945dcfa1f4 --- /dev/null +++ b/roles/minio/tasks/main.yml @@ -0,0 +1,25 @@ +- name: Install MinIO + pacman: + name: "{{ item }}" + state: present + loop: + - minio + - minio-client + +- name: Configure MinIO + template: + src: minio.conf.j2 + dest: /etc/minio/minio.conf + owner: minio + group: minio + mode: "0600" + notify: + - Restart MinIO + +- name: Start and enable MinIO + systemd: + name: minio + state: started + enabled: true + daemon_reload: true + register: systemd_minio_started diff --git a/roles/minio/templates/minio.conf.j2 b/roles/minio/templates/minio.conf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..d4df39697d8554bd916c01c49147ca3e65e21e33 --- /dev/null +++ b/roles/minio/templates/minio.conf.j2 @@ -0,0 +1,4 @@ +MINIO_VOLUMES={{ minio_volumes | map("quote") | join(" ") }} +MINIO_ROOT_USER={{ minio_root_user | quote }} +MINIO_ROOT_PASSWORD={{ minio_root_password | quote }} +MINIO_OPTS={{ (minio_standard_opts + minio_extra_opts) | map("quote") | join(" ") }} diff --git a/roles/minio/vars/main.yml b/roles/minio/vars/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..dc49c695dcb7383314eb819e2f415794fd0ac4d9 --- /dev/null +++ b/roles/minio/vars/main.yml @@ -0,0 +1,3 @@ +minio_standard_opts: + - "--address={{ minio_bind_address }}" + - "--console-address={{ minio_console_bind_address }}"