]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph-{mon,osd}: move default crush variables
authorDimitri Savineau <dsavinea@redhat.com>
Mon, 10 Feb 2020 18:43:31 +0000 (13:43 -0500)
committerDimitri Savineau <savineau.dimitri@gmail.com>
Mon, 17 Feb 2020 15:18:56 +0000 (10:18 -0500)
Since ed36a11 we move the crush rules creation code from the ceph-mon to
the ceph-osd role.
To keep the backward compatibility we kept the possibility to set the
crush variables on the mons side but we didn't move the default values.
As a result, when using crush_rule_config set to true and wanted to use
the default values for crush_rules then the crush rule ansible task
creation will fail.

"msg": "'ansible.vars.hostvars.HostVarsVars object' has no attribute
'crush_rules'"

This patch move the default crush variables from ceph-mon to ceph-osd
role but also use those default values when nothing is defined on the
mons side.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1798864
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
(cherry picked from commit 1fc6b337142efdc76c10340c076653d298e11c68)

group_vars/mons.yml.sample
group_vars/osds.yml.sample
roles/ceph-mon/defaults/main.yml
roles/ceph-osd/defaults/main.yml
roles/ceph-osd/tasks/crush_rules.yml
roles/ceph-osd/tasks/main.yml

index 6f79ae41b4df17e0fac21bc6656fe9aa27848503..002d62b220b55ab692b64eb08b0d6b0ec0128360 100644 (file)
@@ -36,39 +36,6 @@ dummy:
 #  mds: allow *
 #  mgr: allow *
 
-###############
-# CRUSH RULES #
-###############
-#crush_rule_config: false
-
-#crush_rule_hdd:
-#  name: HDD
-#  root: default
-#  type: host
-#  class: hdd
-#  default: false
-
-#crush_rule_ssd:
-#  name: SSD
-#  root: default
-#  type: host
-#  class: ssd
-#  default: false
-
-#crush_rules:
-#  - "{{ crush_rule_hdd }}"
-#  - "{{ crush_rule_ssd }}"
-
-# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
-# and will move hosts into them which might lead to significant data movement in the cluster!
-#
-# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
-#
-# [osds]
-# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
-#
-# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
-#create_crush_tree: false
 
 ##########
 # DOCKER #
index 2d2bcefa28eeafc7d3ca5d8d2396bb822990d463..ebd8c6243803fad4090e01cf82f5189d001d98af 100644 (file)
@@ -125,6 +125,39 @@ dummy:
 #crush_device_class: ""
 #osds_per_device: 1
 
+###############
+# CRUSH RULES #
+###############
+#crush_rule_config: false
+
+#crush_rule_hdd:
+#  name: HDD
+#  root: default
+#  type: host
+#  class: hdd
+#  default: false
+
+#crush_rule_ssd:
+#  name: SSD
+#  root: default
+#  type: host
+#  class: ssd
+#  default: false
+
+#crush_rules:
+#  - "{{ crush_rule_hdd }}"
+#  - "{{ crush_rule_ssd }}"
+
+# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
+# and will move hosts into them which might lead to significant data movement in the cluster!
+#
+# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
+#
+# [osds]
+# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
+#
+# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
+#create_crush_tree: false
 
 ##########
 # DOCKER #
index 46d20d506790a63ee439e6c066b802980d2f9034..ac362b41243f75701d1c729d305ef116b280224c 100644 (file)
@@ -28,39 +28,6 @@ client_admin_ceph_authtool_cap:
   mds: allow *
   mgr: allow *
 
-###############
-# CRUSH RULES #
-###############
-crush_rule_config: false
-
-crush_rule_hdd:
-  name: HDD
-  root: default
-  type: host
-  class: hdd
-  default: false
-
-crush_rule_ssd:
-  name: SSD
-  root: default
-  type: host
-  class: ssd
-  default: false
-
-crush_rules:
-  - "{{ crush_rule_hdd }}"
-  - "{{ crush_rule_ssd }}"
-
-# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
-# and will move hosts into them which might lead to significant data movement in the cluster!
-#
-# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
-#
-# [osds]
-# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
-#
-# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
-create_crush_tree: false
 
 ##########
 # DOCKER #
index 2d2ab4ef6fbc0fe49070f81c489385e0ae0d72cc..24ef3ec0886bef15493843daf5dfb077ce17301d 100644 (file)
@@ -117,6 +117,39 @@ lvm_volumes: []
 crush_device_class: ""
 osds_per_device: 1
 
+###############
+# CRUSH RULES #
+###############
+crush_rule_config: false
+
+crush_rule_hdd:
+  name: HDD
+  root: default
+  type: host
+  class: hdd
+  default: false
+
+crush_rule_ssd:
+  name: SSD
+  root: default
+  type: host
+  class: ssd
+  default: false
+
+crush_rules:
+  - "{{ crush_rule_hdd }}"
+  - "{{ crush_rule_ssd }}"
+
+# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
+# and will move hosts into them which might lead to significant data movement in the cluster!
+#
+# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
+#
+# [osds]
+# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
+#
+# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
+create_crush_tree: false
 
 ##########
 # DOCKER #
index edeedc1ba39314c91790801276f088d500a88e3a..9a01063afef9c841205f60de18ac5a02344dd57c 100644 (file)
@@ -7,13 +7,13 @@
   register: config_crush_hierarchy
   delegate_to: '{{ groups[mon_group_name][0] }}'
   when:
-    - hostvars[groups[mon_group_name][0]]['create_crush_tree'] | default(false) | bool
+    - hostvars[groups[mon_group_name][0]]['create_crush_tree'] | default(create_crush_tree) | bool
     - osd_crush_location is defined
 
 - name: create configured crush rules
   command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule {{ 'create-replicated' if item.class is defined else 'create-simple' }} {{ item.name }} {{ item.root }} {{ item.type }} {{ item.class | default('') }}"
   changed_when: false
-  with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | unique }}"
+  with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | default(crush_rules) | unique }}"
   delegate_to: '{{ groups[mon_group_name][0] }}'
   run_once: true
 
@@ -21,7 +21,7 @@
   command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd -f json crush rule dump {{ item.name }}"
   register: info_ceph_default_crush_rule
   changed_when: false
-  with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | unique }}"
+  with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | default(crush_rules) | unique }}"
   delegate_to: '{{ groups[mon_group_name][0] }}'
   run_once: true
   when: item.default | bool
index e59b80390715219c473e2939c7f83f3fedd48332..d22ba4a9556c48a7e3da0fadb3c85a6c1db3e898 100644 (file)
@@ -87,7 +87,7 @@
 
 - name: include crush_rules.yml
   include_tasks: crush_rules.yml
-  when: hostvars[groups[mon_group_name][0]]['crush_rule_config'] | default(false) | bool
+  when: hostvars[groups[mon_group_name][0]]['crush_rule_config'] | default(crush_rule_config) | bool
 
 - name: set_fact openstack_keys_tmp - preserve backward compatibility after the introduction of the ceph_keys module
   set_fact: