Skip to content

Commit

Permalink
common: do not regenerate a cluster fsid if cluster exists
Browse files Browse the repository at this point in the history
This commit solves the situation where you lost your fetch directory and
you are running ansible against an existing cluster. Since no fetch
directory is present the file containing the fsid doesn't exist so we
are creating a new one. Later the ceph.conf gets updated with a wrong
fsid which causes problems for clients and ceph processes.

Closes: #1148

Signed-off-by: Sébastien Han <[email protected]>
  • Loading branch information
leseb committed Dec 7, 2016
1 parent 61551fa commit de07ba8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
12 changes: 12 additions & 0 deletions roles/ceph-common/tasks/facts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@
always_run: yes
register: ceph_version

- name: is ceph running already?
command: ceph --connect-timeout 3 --cluster {{ cluster }} fsid
changed_when: false
failed_when: false
always_run: yes
register: ceph_current_fsid
delegate_to: "{{ groups.mons[0] }}"

- set_fact:
fsid: "{{ ceph_current_fsid.stdout }}"
when: ceph_current_fsid.rc == 0

- set_fact:
ceph_version: "{{ ceph_version.stdout.split(' ')[2] }}"

Expand Down
14 changes: 11 additions & 3 deletions roles/ceph-common/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,22 @@
run_once: true
when: cephx or generate_fsid

- name: generate cluster uuid
- name: generate cluster fsid
local_action: shell python -c 'import uuid; print(str(uuid.uuid4()))' | tee {{ fetch_directory }}/ceph_cluster_uuid.conf
creates="{{ fetch_directory }}/ceph_cluster_uuid.conf"
register: cluster_uuid
become: false
when: generate_fsid
when:
- generate_fsid
- ceph_current_fsid.rc != 0

- name: reuse cluster fsid when cluster is already running
local_action: shell echo {{ fsid }} | tee {{ fetch_directory }}/ceph_cluster_uuid.conf
creates="{{ fetch_directory }}/ceph_cluster_uuid.conf"
become: false
when: ceph_current_fsid.rc == 0

- name: read cluster uuid if it already exists
- name: read cluster fsid if it already exists
local_action: command cat {{ fetch_directory }}/ceph_cluster_uuid.conf
removes="{{ fetch_directory }}/ceph_cluster_uuid.conf"
changed_when: false
Expand Down

0 comments on commit de07ba8

Please sign in to comment.