From 206a6bc7690ab9ee81cc5482842caa4719ec6fc7 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Thu, 28 Sep 2017 12:34:20 +0000 Subject: [PATCH] Move that new gluster work into a role for re-use. --- playbooks/groups/odcs.yml | 79 +++++------------------ roles/gluster/consolidated/README.md | 13 ++++ roles/gluster/consolidated/tasks/main.yml | 59 +++++++++++++++++ 3 files changed, 87 insertions(+), 64 deletions(-) create mode 100644 roles/gluster/consolidated/README.md create mode 100644 roles/gluster/consolidated/tasks/main.yml diff --git a/playbooks/groups/odcs.yml b/playbooks/groups/odcs.yml index 6f596e2fc5..af327ff852 100644 --- a/playbooks/groups/odcs.yml +++ b/playbooks/groups/odcs.yml @@ -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 diff --git a/roles/gluster/consolidated/README.md b/roles/gluster/consolidated/README.md new file mode 100644 index 0000000000..4e67a72c11 --- /dev/null +++ b/roles/gluster/consolidated/README.md @@ -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. diff --git a/roles/gluster/consolidated/tasks/main.yml b/roles/gluster/consolidated/tasks/main.yml new file mode 100644 index 0000000000..318029503a --- /dev/null +++ b/roles/gluster/consolidated/tasks/main.yml @@ -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