Move that new gluster work into a role for re-use.

This commit is contained in:
Ralph Bean 2017-09-28 12:34:20 +00:00
parent 875f037128
commit 206a6bc769
3 changed files with 87 additions and 64 deletions

View file

@ -55,71 +55,22 @@
- /srv/web/infra/ansible/vars/global.yml
- "/srv/private/ansible/vars.yml"
- "{{ vars_path }}/{{ ansible_distribution }}.yml"
vars:
gluster_brick_dir: /srv/glusterfs/
gluster_mount_dir: /srv/odcs
gluster_brick_name: odcs
gluster_server_group: odcs-stg
tasks:
- name: install needed packages for server
package: name={{ item }} state=present
with_items:
- glusterfs-server
tags:
- packages
- name: start glusterd for the server
service: name=glusterd state=started enabled=true
- name: Servers discover each other.
command: gluster peer probe {{ item }}
with_items: '{{groups[gluster_server_group]}}'
run_once: true
- name: install needed packages for client
package: name={{ item }} state=present
with_items:
- glusterfs-fuse
- libselinux-python
tags:
- packages
- gluster
- name: set sebooleans so httpd can talk to the gluster mount.
seboolean: name={{ item }}
state=true
persistent=true
with_items:
- nis_enabled
- httpd_use_fusefs
tags:
- gluster
- name: Ensure Gluster brick and mount directories exist.
file: "path={{ item }} state=directory mode=0775"
with_items:
- "{{ gluster_brick_dir }}"
- "{{ gluster_mount_dir }}"
- name: Configure Gluster volume.
gluster_volume:
state: present
name: "{{ gluster_brick_name }}"
brick: "{{ gluster_brick_dir }}"
replicas: 2
cluster: "{{ groups[gluster_server_group] | join(',') }}"
host: "{{ inventory_hostname }}"
force: yes
run_once: true
ignore_errors: true
- name: Ensure Gluster volume is mounted.
mount:
name: "{{ gluster_mount_dir }}"
src: "{{ inventory_hostname }}:/{{ gluster_brick_name }}"
fstype: glusterfs
opts: "defaults,_netdev"
state: mounted
roles:
- role: gluster/consolidated
gluster_brick_dir: /srv/glusterfs/
gluster_mount_dir: /srv/odcs
gluster_brick_name: odcs
gluster_server_group: odcs-stg
tags: gluster
when: env == 'staging'
- role: gluster/consolidated
gluster_brick_dir: /srv/glusterfs/
gluster_mount_dir: /srv/odcs
gluster_brick_name: odcs
gluster_server_group: odcs
tags: gluster
when: env != 'staging'
- name: Set up odcs frontend service
hosts: odcs-frontend:odcs-frontend-stg

View file

@ -0,0 +1,13 @@
# gluster/consolidated
Three things to know about this role:
- It consolidates the gluster/server and gluster/client roles.
- It gets gluster working on F25 and F26.
- It requires a ton of open ports on the hosts for `gluster peer probe` to work.
See `inventory/group_vars/odcs-backend` for an example.
Our older gluster/server and gluster/client roles only seemed to work for el7.
The advice from `#gluster` was to use the `gluster_volume` ansible module
instead of configuring the `.vol` file directly ourselves. That is what this
role does.

View file

@ -0,0 +1,59 @@
- name: install needed packages for server
package: name={{ item }} state=present
with_items:
- glusterfs-server
tags:
- packages
- name: start glusterd for the server
service: name=glusterd state=started enabled=true
- name: Servers discover each other.
command: gluster peer probe {{ item }}
with_items: '{{groups[gluster_server_group]}}'
run_once: true
- name: install needed packages for client
package: name={{ item }} state=present
with_items:
- glusterfs-fuse
- libselinux-python
tags:
- packages
- gluster
- name: set sebooleans so httpd can talk to the gluster mount.
seboolean: name={{ item }}
state=true
persistent=true
with_items:
- nis_enabled
- httpd_use_fusefs
tags:
- gluster
- name: Ensure Gluster brick and mount directories exist.
file: "path={{ item }} state=directory mode=0775"
with_items:
- "{{ gluster_brick_dir }}"
- "{{ gluster_mount_dir }}"
- name: Configure Gluster volume.
gluster_volume:
state: present
name: "{{ gluster_brick_name }}"
brick: "{{ gluster_brick_dir }}"
replicas: 2
cluster: "{{ groups[gluster_server_group] | join(',') }}"
host: "{{ inventory_hostname }}"
force: yes
run_once: true
ignore_errors: true
- name: Ensure Gluster volume is mounted.
mount:
name: "{{ gluster_mount_dir }}"
src: "{{ inventory_hostname }}:/{{ gluster_brick_name }}"
fstype: glusterfs
opts: "defaults,_netdev"
state: mounted