]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
update: avoid skipping single mds deployment upgrade
authorGuillaume Abrioux <gabrioux@redhat.com>
Wed, 23 Oct 2019 17:39:15 +0000 (19:39 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Fri, 25 Oct 2019 07:42:52 +0000 (09:42 +0200)
otherwise a single MDS would never be updated.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit d8ab11d2f8e08c28731f783d592507dd198b5742)

infrastructure-playbooks/rolling_update.yml

index b2b033406e9541c095e1d03d35c10755e3745e54..82388cd10a67d61c16452b328838166402a35366 100644 (file)
   become: true
   tasks:
     - name: deactivate all mds rank > 0
-      when: groups.get(mds_group_name, []) | length > 1
+      when: groups.get(mds_group_name, []) | length > 0
       block:
         - import_role:
             name: ceph-defaults
         - import_role:
             name: ceph-facts
 
-        - name: set max_mds 1 on ceph fs
-          command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds 1"
-          changed_when: false
-
-        - name: wait until only rank 0 is up
-          command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs get {{ cephfs }} -f json"
-          changed_when: false
-          register: wait_rank_zero
-          retries: 720
-          delay: 5
-          until: (wait_rank_zero.stdout | from_json).mdsmap.in | length == 1 and (wait_rank_zero.stdout | from_json).mdsmap.in[0]  == 0
-
-        - name: get name of remaining active mds
-          command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs dump -f json"
-          changed_when: false
-          register: _mds_active_name
-
-        - name: set_fact mds_active_name
-          set_fact:
-            mds_active_name: "{{ [(_mds_active_name.stdout | from_json)['filesystems'][0]['mdsmap']['info'][item.key]['name']] }}"
-          with_dict: "{{ (_mds_active_name.stdout | from_json).filesystems[0]['mdsmap']['info'] }}"
+        - name: deactivate all mds rank > 0 if any
+          when: groups.get(mds_group_name, []) | length > 1
+          block:
+            - name: set max_mds 1 on ceph fs
+              command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs set {{ cephfs }} max_mds 1"
+              changed_when: false
+
+            - name: wait until only rank 0 is up
+              command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs get {{ cephfs }} -f json"
+              changed_when: false
+              register: wait_rank_zero
+              retries: 720
+              delay: 5
+              until: (wait_rank_zero.stdout | from_json).mdsmap.in | length == 1 and (wait_rank_zero.stdout | from_json).mdsmap.in[0]  == 0
+
+            - name: get name of remaining active mds
+              command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs dump -f json"
+              changed_when: false
+              register: _mds_active_name
+
+            - name: set_fact mds_active_name
+              set_fact:
+                mds_active_name: "{{ [(_mds_active_name.stdout | from_json)['filesystems'][0]['mdsmap']['info'][item.key]['name']] }}"
+              with_dict: "{{ (_mds_active_name.stdout | from_json).filesystems[0]['mdsmap']['info'] }}"
+
+            - name: create standby_mdss group
+              add_host:
+                name: "{{ item }}"
+                groups: standby_mdss
+                ansible_host: "{{ hostvars[item]['ansible_host'] | default(omit) }}"
+                ansible_port: "{{ hostvars[item]['ansible_port'] | default(omit) }}"
+              with_items: "{{ groups[mds_group_name] | difference(mds_active_name) }}"
+
+            - name: stop standby ceph mds
+              systemd:
+                name: "ceph-mds@{{ hostvars[item]['ansible_hostname'] }}"
+                state: stopped
+                enabled: no
+              delegate_to: "{{ item }}"
+              with_items: "{{ groups['standby_mdss'] }}"
+              when: groups['standby_mdss'] | default([]) | length > 0
+
+            # dedicated task for masking systemd unit
+            # somehow, having a single task doesn't work in containerized context
+            - name: mask systemd units for standby ceph mds
+              systemd:
+                name: "ceph-mds@{{ hostvars[item]['ansible_hostname'] }}"
+                masked: yes
+              delegate_to: "{{ item }}"
+              with_items: "{{ groups['standby_mdss'] }}"
+              when: groups['standby_mdss'] | default([]) | length > 0
+
+            - name: wait until all standbys mds are stopped
+              command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs dump -f json"
+              changed_when: false
+              register: wait_standbys_down
+              retries: 300
+              delay: 5
+              until: (wait_standbys_down.stdout | from_json).standbys | length == 0
 
         - name: create active_mdss group
           add_host:
-            name: "{{ mds_active_name[0] }}"
+            name: "{{ mds_active_name[0] if mds_active_name is defined else groups.get(mds_group_name)[0] }}"
             groups: active_mdss
             ansible_host: "{{ hostvars[mds_active_name]['ansible_host'] | default(omit) }}"
             ansible_port: "{{ hostvars[mds_active_name]['ansible_port'] | default(omit) }}"
 
-        - name: create standby_mdss group
-          add_host:
-            name: "{{ item }}"
-            groups: standby_mdss
-            ansible_host: "{{ hostvars[item]['ansible_host'] | default(omit) }}"
-            ansible_port: "{{ hostvars[item]['ansible_port'] | default(omit) }}"
-          with_items: "{{ groups[mds_group_name] | difference(mds_active_name) }}"
-
-        - name: stop standby ceph mds
-          systemd:
-            name: "ceph-mds@{{ hostvars[item]['ansible_hostname'] }}"
-            state: stopped
-            enabled: no
-          delegate_to: "{{ item }}"
-          with_items: "{{ groups['standby_mdss'] }}"
-          when: groups['standby_mdss'] | default([]) | length > 0
-
-        # dedicated task for masking systemd unit
-        # somehow, having a single task doesn't work in containerized context
-        - name: mask systemd units for standby ceph mds
-          systemd:
-            name: "ceph-mds@{{ hostvars[item]['ansible_hostname'] }}"
-            masked: yes
-          delegate_to: "{{ item }}"
-          with_items: "{{ groups['standby_mdss'] }}"
-          when: groups['standby_mdss'] | default([]) | length > 0
-
-        - name: wait until all standbys mds are stopped
-          command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} fs dump -f json"
-          changed_when: false
-          register: wait_standbys_down
-          retries: 300
-          delay: 5
-          until: (wait_standbys_down.stdout | from_json).standbys | length == 0
-
 
 - name: upgrade active mds
   vars: