two instances per node.

This commit is contained in:
Julia Longtin 2019-06-11 23:57:44 +01:00 committed by Gregor
parent 15ad3a3604
commit fd0cd72dfd
13 changed files with 169 additions and 58 deletions

View File

@ -1,4 +1,18 @@
---
# two layouts: one for each minio instance we want to run on a node.
layouts:
# The first minio instance on this server.
- layout1:
name: "server1"
minio_server_addr: ":9091"
minio_server_datadirs: "/var/lib/minio-server1"
minio_server_envfile: "/etc/default/minio-server1"
# The second minio instance on this server.
- layout2:
name: "server2"
minio_server_addr: ":9092"
minio_server_datadirs: "/var/lib/minio-server2"
minio_server_envfile: "/etc/default/minio-server2"
# Minio binaries path
minio_server_bin: /usr/local/bin/minio
@ -12,15 +26,6 @@ minio_client_release: ""
minio_user: minio
minio_group: minio
# Path to the file containing the ENV variables for the Minio server
minio_server_envfile: /etc/default/minio
# Minio server listen address
minio_server_addr: ":9091"
# Minio server data directories
minio_server_datadirs:
- /var/lib/minio
minio_server_make_datadirs: true
# Minio server cluster node list.
@ -39,3 +44,6 @@ minio_secret_key: ""
# Switches to enable/disable the Minio server and/or Minio client installation.
minio_install_server: true
minio_install_client: true
# The network interface to make services available on.
minio_network_interface: "{% if ansible_default_ipv4 is defined %}{{ ansible_default_ipv4.interface }}{% else %}eth0{% endif %}"

View File

@ -1,11 +1,22 @@
---
- name: reload minio systemd
# FIXME: make these parametric.
- name: reload minio-server1 systemd
systemd:
name: minio
name: minio-server1
daemon_reload: True
- name: restart minio
- name: reload minio-server2 systemd
systemd:
name: minio-server2
daemon_reload: True
- name: restart "minio-server1"
service:
name: minio
name: minio-server1
state: restarted
- name: restart "minio-server2"
service:
name: minio-server2
state: restarted

View File

@ -0,0 +1,8 @@
---
- name: disable spawning of unneeded gettys
systemd:
name: "getty@{{ item }}.service"
enabled: false
masked: true
state: stopped
with_items: [ tty1, tty2, tty3, tty4, tty5, tty6 ]

View File

@ -10,31 +10,70 @@ dependency:
name: galaxy
platforms:
- name: minio-centos-7
image: paulfantom/centos-molecule:7
privileged: true
- name: instance
# for systemd, use these base images:
image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
networks_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- name: minio-fedora-27
image: paulfantom/fedora-molecule:27
privileged: true
- /sys/fs/cgroup:/sys/fs/cgroup:ro # for systemd
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro # for ntp/timedatectl
privileged: true # for systemd
groups:
- minio
pre_build_image: true
- name: instance2
# for systemd, use these base images:
image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
networks_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- name: minio-debian-9
image: paulfantom/debian-molecule:9
privileged: true
- /sys/fs/cgroup:/sys/fs/cgroup:ro # for systemd
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro # for ntp/timedatectl
privileged: true # for systemd
groups:
- minio
pre_build_image: true
- name: instance3
# for systemd, use these base images:
image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
networks_mode: host
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- name: minio-ubuntu-18.04
image: paulfantom/ubuntu-molecule:18.04
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- name: minio-ubuntu-16.04
image: paulfantom/ubuntu-molecule:16.04
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /sys/fs/cgroup:/sys/fs/cgroup:ro # for systemd
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro # for ntp/timedatectl
privileged: true # for systemd
groups:
- minio
pre_build_image: true
#- name: minio-centos-7
# image: paulfantom/centos-molecule:7
# privileged: true
# volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro
# - name: minio-fedora-27
# image: paulfantom/fedora-molecule:27
# privileged: true
# volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro
# - name: minio-debian-9
# image: paulfantom/debian-molecule:9
# privileged: true
# volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro
# - name: minio-ubuntu-18.04
# image: paulfantom/ubuntu-molecule:18.04
# privileged: true
# volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro
# - name: minio-ubuntu-16.04
# image: paulfantom/ubuntu-molecule:16.04
# privileged: true
# volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro
provisioner:
name: ansible

View File

@ -1,6 +1,9 @@
---
- hosts: all
any_errors_fatal: true
pre_tasks:
- name: import yaml to disable gettys.
import_tasks: disable_getty.yml
roles:
- ansible-minio
- { role: ansible-minio, layout: layout1 }
- { role: ansible-minio, layout: layout2 }

View File

@ -3,10 +3,10 @@
hosts: all
gather_facts: true
tasks:
- name: Install ansible support packages
package:
name: "{{ item }}"
state: present
with_items:
- ca-certificates
when: ansible_os_family == 'Debian'
# - name: Install ansible support packages
# package:
# name: "{{ item }}"
# state: present
# with_items:
# - ca-certificates
# when: ansible_os_family == 'Debian'

View File

@ -29,6 +29,10 @@
system: "yes"
shell: "/usr/sbin/nologin"
- name: layout dump
debug:
msg: "using layout {{ layout }}."
- name: Create the Minio data storage directories
file:
path: "{{ item }}"
@ -36,8 +40,8 @@
owner: "{{ minio_user }}"
group: "{{ minio_group }}"
mode: 0750
when: minio_server_make_datadirs
with_items: "{{ minio_server_datadirs }}"
when: minio_server_make_datadirs|bool
with_items: "{{ layouts[layout]['minio_server_datadirs'] }}"
- name: Download the Minio server
get_url:
@ -53,19 +57,29 @@
delay: 2
notify: restart minio
- name: Identify all of the cluster members
set_fact:
minio_cluster_nodes: >-
{% for layout in layouts %}{% for host in groups["minio"] %}{{ hostvars[host]['ansible_' + minio_network_interface]['ipv4']['address'] }}{{ layouts[layout]['minio_server_addr'] }} {% endfor %}{% endfor %}
- name: layout dump
debug:
msg: "using cluster map {{ minio_cluster_nodes }}."
- name: Generate the Minio server envfile
template:
src: minio.env.j2
dest: "{{ minio_server_envfile }}"
dest: "{{ layouts[layout]['minio_server_envfile'] }}"
owner: "root"
group: "{{ minio_group }}"
mode: 0640
notify: restart minio
notify: restart "{{ layouts[layout]['servicename'] }}"
- name: Create the Minio server systemd config
template:
src: minio.service.j2
dest: "/etc/systemd/system/minio.service"
dest: "/etc/systemd/system/{{ layouts[layout]['servicename'] }}.service"
owner: "root"
group: "root"
when: ansible_service_mgr == "systemd"
@ -76,7 +90,7 @@
- name: Create the Minio server init.d config
template:
src: minio.init.j2
dest: "/etc/init.d/minio"
dest: "/etc/init.d/{{ layouts[layout]['servicename'] }}"
owner: "root"
group: "root"
mode: 0750
@ -85,6 +99,6 @@
- name: Enable and start the Minio service
service:
name: minio
name: "{{ layouts[layout]['servicename'] }}"
state: started
enabled: true

View File

@ -7,6 +7,8 @@
- ansible_python_version is version_compare('2.6.0', '>=')
- ansible_python_version is version_compare('2.7.9', '<')
- import_tasks: setup.yml
- include_tasks: install-server.yml
when: minio_install_server

11
tasks/setup.yml Normal file
View File

@ -0,0 +1,11 @@
---
# needed for the 'ip' command to populate 'ansible_default_ipv4'
- name: install iproute2
apt:
name: iproute2
state: present
when: ansible_os_family == 'Debian'
- name: populate 'ansible_default_ipv4'
setup:
when: ansible_default_ipv4 is not defined

View File

@ -2,12 +2,12 @@
# Minio local/remote volumes.
{% if minio_server_cluster_nodes | length > 0 %}
MINIO_VOLUMES="{{ minio_server_cluster_nodes | join(' ') }}"
MINIO_VOLUMES="{{ minio_cluster_nodes }}"
{% else %}
MINIO_VOLUMES="{{ minio_server_datadirs | join(' ') }}"
MINIO_VOLUMES="{{ layouts[layout]['minio_server_datadirs'] }}"
{% endif %}
# Minio cli options.
MINIO_OPTS="--address {{ minio_server_addr }} {{ minio_server_opts }}"
MINIO_OPTS="--address {{ layouts[layout]['minio_server_addr'] }} {{ minio_server_opts }}"
{% if minio_access_key %}
# Access Key of the server.

View File

@ -24,10 +24,10 @@ DAEMON="{{ minio_server_bin }}"
USER="{{ minio_user }}"
# Read configuration variable file if it is present
[ -r "{{ minio_server_envfile }}" ] && . {{ minio_server_envfile }}
[ -r "{{ layouts[layout]['minio_server_envfile'] }}" ] && . {{ layouts[layout]['minio_server_envfile'] }}
# Make sure the MINIO_VOLUMES variable is defined
[ -n "${MINIO_VOLUMES}" ] || log_daemon_msg "Variable MINIO_VOLUMES not set in {{ minio_server_envfile }}"
[ -n "${MINIO_VOLUMES}" ] || log_daemon_msg "Variable MINIO_VOLUMES not set in {{ layouts[layout]['minio_server_envfile'] }}"
# Set the DAEMON_ARGS variable
DAEMON_ARGS="server $MINIO_OPTS $MINIO_VOLUMES"

View File

@ -19,8 +19,8 @@ Group={{ minio_group }}
PermissionsStartOnly=true
EnvironmentFile={{ minio_server_envfile }}
ExecStartPre=/bin/bash -c "[ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in {{ minio_server_envfile }}\""
EnvironmentFile={{ layouts[layout]['minio_server_envfile'] }}
ExecStartPre=/bin/bash -c "[ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in {{ layouts[layout]['minio_server_envfile'] }}\""
ExecStart={{ minio_server_bin }} server $MINIO_OPTS $MINIO_VOLUMES

View File

@ -1,4 +1,19 @@
---
# two layouts: one for each minio instance we want to run on a node.
layouts:
# The first minio instance on this server.
layout1:
servicename: "minio-server1"
minio_server_addr: ":9091"
minio_server_datadirs: "/var/lib/minio-server1"
minio_server_envfile: "/etc/default/minio-server1"
# The second minio instance on this server.
layout2:
servicename: "minio-server2"
minio_server_addr: ":9092"
minio_server_datadirs: "/var/lib/minio-server2"
minio_server_envfile: "/etc/default/minio-server2"
go_arch_map:
i386: '386'
x86_64: 'amd64'