two instances per node.
This commit is contained in:
parent
15ad3a3604
commit
fd0cd72dfd
|
@ -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 %}"
|
|
@ -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
|
|
@ -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 ]
|
|
@ -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
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue