]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph-mon: Create openstack pools and keys even for containerized deployments 1331/head
authorGuillaume Abrioux <gabrioux@redhat.com>
Fri, 24 Feb 2017 09:22:16 +0000 (10:22 +0100)
committerGuillaume Abrioux <gabrioux@redhat.com>
Thu, 16 Mar 2017 09:53:53 +0000 (10:53 +0100)
Add the possibility to create openstack pools and keys even for containerized deployments

Fix: #1321
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
group_vars/docker-commons.yml.sample
group_vars/mons.yml.sample
roles/ceph-docker-common/tasks/main.yml
roles/ceph-mon/defaults/main.yml
roles/ceph-mon/tasks/ceph_keys.yml
roles/ceph-mon/tasks/docker/main.yml
roles/ceph-mon/tasks/openstack_config.yml
roles/ceph-mon/tasks/set_osd_pool_default_pg_num.yml [new file with mode: 0644]

index 69bcc8401edd4b2a454ed86e5e668cd2ad766710..c6ef74d4b132fc12cc4d47cb85d291772d522829 100644 (file)
@@ -9,4 +9,5 @@ dummy:
 
 
 #ceph_docker_registry: docker.io
+#ceph_mon_docker_enable_centos_extra_repo: false
 
index 43341f3aebe4a0b341a645a4826938bf022aa62e..5e28a72e51eaee06cc08b3d04afcb9bcf4330d0c 100644 (file)
@@ -77,7 +77,7 @@ dummy:
 ##########
 # DOCKER #
 ##########
-
+#docker_exec_cmd:
 #mon_containerized_deployment: false
 #mon_containerized_deployment_with_kv: false
 # This is currently in ceph-common defaults because it is shared with ceph-nfs
@@ -91,5 +91,4 @@ dummy:
 #mon_docker_privileged: false
 #mon_docker_net_host: true
 #ceph_config_keys: [] # DON'T TOUCH ME
-#ceph_mon_docker_enable_centos_extra_repo: false
 
index 7e63d3295a4e84108893fcdba6127c48f8954cac..a01824b16a8b42190d37e621ed997dc6830fc741 100644 (file)
 
 - include: ./pre_requisites/prerequisites.yml
   when: not is_atomic
+
+# NOTE(guits): would be nice to refact this block with L39-45 in roles/ceph-common/tasks/facts.yml
+- set_fact:
+    monitor_name: "{{ ansible_hostname }}"
+  when: not mon_use_fqdn
+
+- set_fact:
+    monitor_name: "{{ ansible_fqdn }}"
+  when: mon_use_fqdn
index 6013bda4efca016b13af936b5ebdc853dc574369..4fcaa88dffba65362e37283e63532c2f35e8214c 100644 (file)
@@ -69,7 +69,7 @@ openstack_keys:
 ##########
 # DOCKER #
 ##########
-
+docker_exec_cmd:
 mon_containerized_deployment: false
 mon_containerized_deployment_with_kv: false
 # This is currently in ceph-common defaults because it is shared with ceph-nfs
index 4feba09e9f20506e4c1ada68f58eab7033ca4f3d..5bd61e51d727dc14deb0179f60a0e5ddb8d34046 100644 (file)
     - cephx
     - groups[restapi_group_name] is defined
 
-# NOTE(leseb): we add a conditional for backward compatibility
-# so people that had 'pool_default_pg_num' declared will get
-# the same behaviour
-#
-- name: check if does global key exist in ceph_conf_overrides
-  set_fact:
-    global_in_ceph_conf_overrides: "{{ 'global' in ceph_conf_overrides }}"
-
-- name: check if ceph_conf_overrides.global.osd_pool_default_pg_num is set
-  set_fact:
-    osd_pool_default_pg_num_in_overrides: "{{ 'osd_pool_default_pg_num' in ceph_conf_overrides.global }}"
-  when: global_in_ceph_conf_overrides
-
-- name: get default value for osd_pool_default_pg_num
-  shell: |
-    ceph --cluster {{ cluster }} daemon mon.{{ monitor_name }} config get osd_pool_default_pg_num | grep -Po '(?<="osd_pool_default_pg_num": ")[^"]*'
-  failed_when: false
-  changed_when: false
-  run_once: true
-  register: default_pool_default_pg_num
-  when: (pool_default_pg_num is not defined or not global_in_ceph_conf_overrides)
-
-- set_fact:
-    osd_pool_default_pg_num: "{{ pool_default_pg_num }}"
-  when: pool_default_pg_num is defined
-
-- set_fact:
-    osd_pool_default_pg_num: "{{ default_pool_default_pg_num.stdout }}"
-  when:
-    - pool_default_pg_num is not defined
-    - default_pool_default_pg_num.rc == 0
-    - (osd_pool_default_pg_num_in_overrides is not defined or not osd_pool_default_pg_num_in_overrides)
-
-- set_fact:
-    osd_pool_default_pg_num: "{{ ceph_conf_overrides.global.osd_pool_default_pg_num }}"
-  when:
-    - global_in_ceph_conf_overrides
-    - ceph_conf_overrides.global.osd_pool_default_pg_num is defined
+- include: set_osd_pool_default_pg_num.yml
 
 - name: test if rbd exists
   command: ceph --cluster {{ cluster }} osd pool stats rbd
     - ceph_conf_overrides.global.osd_pool_default_size is defined
 
 - include: openstack_config.yml
-  when: openstack_config
+  when:
+    - openstack_config
+    - inventory_hostname == groups.mons|last
 
 - name: find ceph keys
   shell: ls -1 /etc/ceph/*.keyring
index ce2ad93244a2455119d4a4a3683a750487779cf1..6b1a53a21e9050dcffc4cfcbb0249b2b6cd29898 100644 (file)
 - include: selinux.yml
   when: ansible_os_family == 'RedHat'
 
+- name: set docker_exec_cmd fact
+  set_fact:
+    docker_exec_cmd: "docker exec ceph-mon-{{ ansible_hostname }}"
+
 - include: start_docker_monitor.yml
 
 - name: wait for monitor socket to exist
     - groups[restapi_group_name] is defined
     - inventory_hostname == groups.mons|last
     - not mon_containerized_deployment_with_kv
+
+- include: "{{ playbook_dir }}/roles/ceph-mon/tasks/set_osd_pool_default_pg_num.yml"
+
+# create openstack pools only when all mons are up.
+- include: "{{ playbook_dir }}/roles/ceph-mon/tasks/openstack_config.yml"
+  when:
+    - openstack_config
+    - inventory_hostname == groups.mons|last
index 90894dc4ce20a51baaf24e62095b73aeb1236afc..5c45b9970d052d91829bae8fdf79eab8f87f39dc 100644 (file)
@@ -1,12 +1,12 @@
 ---
 - name: create openstack pool
-  command: ceph --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pg_num }}
+  command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pg_num }}"
   with_items: "{{ openstack_pools | unique }}"
   changed_when: false
   failed_when: false
 
 - name: create openstack keys
-  command: ceph --cluster {{ cluster }} auth get-or-create {{ item.name }} {{ item.value }} -o /etc/ceph/{{ cluster }}.{{ item.name }}.keyring
+  command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} auth get-or-create {{ item.name }} {{ item.value }} -o /etc/ceph/{{ cluster }}.{{ item.name }}.keyring"
   args:
     creates: /etc/ceph/{{ cluster }}.{{ item.name }}.keyring
   with_items: "{{ openstack_keys }}"
diff --git a/roles/ceph-mon/tasks/set_osd_pool_default_pg_num.yml b/roles/ceph-mon/tasks/set_osd_pool_default_pg_num.yml
new file mode 100644 (file)
index 0000000..e873410
--- /dev/null
@@ -0,0 +1,38 @@
+# NOTE(leseb): we add a conditional for backward compatibility
+# so people that had 'pool_default_pg_num' declared will get
+# the same behaviour
+#
+- name: check if does global key exist in ceph_conf_overrides
+  set_fact:
+    global_in_ceph_conf_overrides: "{{ 'global' in ceph_conf_overrides }}"
+
+- name: check if ceph_conf_overrides.global.osd_pool_default_pg_num is set
+  set_fact:
+    osd_pool_default_pg_num_in_overrides: "{{ 'osd_pool_default_pg_num' in ceph_conf_overrides.global }}"
+  when: global_in_ceph_conf_overrides
+
+- name: get default value for osd_pool_default_pg_num
+  shell: |
+   {{ docker_exec_cmd }} ceph --cluster {{ cluster }} daemon mon.{{ monitor_name }} config get osd_pool_default_pg_num | grep -Po '(?<="osd_pool_default_pg_num": ")[^"]*'
+  failed_when: false
+  changed_when: false
+  run_once: true
+  register: default_pool_default_pg_num
+  when: pool_default_pg_num is not defined or not global_in_ceph_conf_overrides
+
+- set_fact:
+    osd_pool_default_pg_num: "{{ pool_default_pg_num }}"
+  when: pool_default_pg_num is defined
+
+- set_fact:
+    osd_pool_default_pg_num: "{{ default_pool_default_pg_num.stdout }}"
+  when:
+    - pool_default_pg_num is not defined
+    - default_pool_default_pg_num.rc == 0
+    - (osd_pool_default_pg_num_in_overrides is not defined or not osd_pool_default_pg_num_in_overrides)
+
+- set_fact:
+    osd_pool_default_pg_num: "{{ ceph_conf_overrides.global.osd_pool_default_pg_num }}"
+  when:
+    - global_in_ceph_conf_overrides
+    - ceph_conf_overrides.global.osd_pool_default_pg_num is defined