Move that new gluster work into a role for re-use.
This commit is contained in:
parent
875f037128
commit
206a6bc769
3 changed files with 87 additions and 64 deletions
|
@ -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
|
||||
|
|
13
roles/gluster/consolidated/README.md
Normal file
13
roles/gluster/consolidated/README.md
Normal 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.
|
59
roles/gluster/consolidated/tasks/main.yml
Normal file
59
roles/gluster/consolidated/tasks/main.yml
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue