]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
client: ability to create keys and pool with no cpeh binaries 1889/head
authorSébastien Han <seb@redhat.com>
Wed, 13 Sep 2017 20:13:53 +0000 (14:13 -0600)
committerSébastien Han <seb@redhat.com>
Mon, 18 Sep 2017 12:41:52 +0000 (14:41 +0200)
On a container env, machines don't have any ceph binaries so we need to
use a container to run the commands.

Signed-off-by: Sébastien Han <seb@redhat.com>
roles/ceph-client/tasks/create_users_keys.yml
roles/ceph-client/tasks/pre_requisite.yml
site-docker.yml.sample
tests/functional/centos/7/docker/group_vars/all
tests/functional/centos/7/docker/hosts

index 322ddc934de6c42af8a51ad13f9745ddf6808d9a..dc6b88286736eaff5702d251424d7ed5b9518699 100644 (file)
@@ -1,15 +1,21 @@
 ---
-- name: create pools
-  command: "ceph --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pgs }}"
-  with_items: "{{ pools }}"
-  changed_when: false
-  failed_when: false
-  when: 
-    - pools | length > 0
-    - copy_admin_key
+- name: set docker_exec_client_cmd_binary to ceph-authtool
+  set_fact:
+    docker_exec_client_cmd_binary: ceph-authtool
+  when: containerized_deployment
+
+- name: set docker_exec_client_cmd for containers
+  set_fact:
+    docker_exec_client_cmd: docker run -v /etc/ceph:/etc/ceph --entrypoint /usr/bin/{{ docker_exec_client_cmd_binary }} {{ ceph_docker_registry}}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}
+  when: containerized_deployment
+
+- name: set docker_exec_client_cmd for non-containers
+  set_fact:
+    docker_exec_client_cmd: ceph-authtool
+  when: not containerized_deployment
 
 - name: create key(s)
-  shell: "ceph-authtool -C /etc/ceph/{{ cluster }}.{{ item.name }}.keyring --name {{ item.name }} --add-key {{ item.key }} --cap mon \"{{ item.mon_cap|default('') }}\" --cap osd \"{{ item.osd_cap|default('') }}\" --cap mds \"{{ item.mds_cap|default('') }}\""
+  shell: "{{ docker_exec_client_cmd }} -C /etc/ceph/{{ cluster }}.{{ item.name }}.keyring --name {{ item.name }} --add-key {{ item.key }} --cap mon \"{{ item.mon_cap|default('') }}\" --cap osd \"{{ item.osd_cap|default('') }}\" --cap mds \"{{ item.mds_cap|default('') }}\""
   args:
     creates: /etc/ceph/{{ cluster }}.{{ item.name }}.keyring
   with_items: "{{ keys }}"
     - cephx
     - keys | length > 0
 
+- name: set docker_exec_client_cmd_binary to ceph
+  set_fact:
+    docker_exec_client_cmd_binary: ceph
+  when: containerized_deployment
+
+- name: replace docker_exec_client_cmd by ceph
+  set_fact:
+    docker_exec_client_cmd: ceph
+  when:
+    - not containerized_deployment
+    - docker_exec_client_cmd == 'ceph-authtool'
+
 - name: check if key(s) already exist(s)
-  command: "ceph --cluster {{ cluster }} auth get {{ item.name }}"
+  command: "{{ docker_exec_client_cmd }} --cluster {{ cluster }} auth get {{ item.name }}"
   changed_when: false
   failed_when: false
   with_items: "{{ keys }}"
   when:
     - copy_admin_key
 
+- name: create pools
+  command: "{{ docker_exec_client_cmd }} --cluster {{ cluster }} osd pool create {{ item.name }} {{ item.pgs }}"
+  with_items: "{{ pools }}"
+  changed_when: false
+  failed_when: false
+  when:
+    - pools | length > 0
+    - copy_admin_key
+
 - name: add key(s) to ceph
-  command: "ceph --cluster {{ cluster }} auth import -i /etc/ceph/{{ cluster }}.{{ item.0.name }}.keyring"
+  command: "{{ docker_exec_client_cmd }} --cluster {{ cluster }} auth import -i /etc/ceph/{{ cluster }}.{{ item.0.name }}.keyring"
   changed_when: false
   with_together:
     - "{{ keys }}"
     - "{{ keys_exist.results | default([]) }}"
   when:
-    - not item.1.get("skipped")    
+    - not item.1.get("skipped")
     - copy_admin_key
     - item.1.rc != 0
 
+- name: put docker_exec_client_cmd back to normal with a none value
+  set_fact:
+    docker_exec_client_cmd:
+  when: docker_exec_client_cmd == 'ceph'
+
 - name: setfacl for key(s)
   acl:
     path: "/etc/ceph/{{ cluster }}.{{ item.0.name }}.keyring"
index 7c40f4ccd34583de59192c158a682b10aacfb653..f9f9df913eb054a6faeeb155376a8824b302ee0e 100644 (file)
@@ -1,4 +1,16 @@
 ---
+- name: set selinux permissions
+  shell: |
+    chcon -Rt svirt_sandbox_file_t {{ item }}
+  with_items:
+    - /etc/ceph
+    - /var/lib/ceph
+  changed_when: false
+  when:
+    - sestatus is defined
+    - sestatus.stdout != 'Disabled'
+    - containerized_deployment
+
 - name: copy ceph admin keyring
   copy:
     src: "{{ fetch_directory }}/{{ fsid }}/etc/ceph/{{ cluster }}.client.admin.keyring"
index 2c10d937c5f8ba2a088757712c347d372dd51a4b..f39988c50907d6353786ae39fa5167c3d8188903 100644 (file)
   gather_facts: false
   roles:
   - ceph-defaults
-  - ceph-common
+  - ceph-docker-common
   - ceph-config
   - ceph-client
index 874d6d1b4b3033f523c7f680b3201921553490db..d703a67c3b8d7d6b92aa71895f068738268215c4 100644 (file)
@@ -26,3 +26,7 @@ ceph_conf_overrides:
   global:
     osd_pool_default_pg_num: 8
     osd_pool_default_size: 1
+user_config: True
+keys:
+  - { name: client.test, key: "AQAin8tUoMPDGRAACcfAQHbq4eTuUoTCZdW1Uw==", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=test", mode: "0600", acls: [] }
+  - { name: client.test2, key: "AQAin8tUAJkGGhAA8WZ8Lz5c7IkT8QZ5s7bI1A==", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=test2", mode: "0600", acls: [] }
index fb646969cf19726f1060b481f39288e4a4533bc2..d63336efcf32776ab24d3d644d637c80b6488579 100644 (file)
@@ -16,7 +16,7 @@ rgw0
 mgr0
 
 [clients]
-client0 ceph_origin="repository" ceph_repository="community" containerized_deployment="False"
+client0 ceph_origin="repository" ceph_repository="community"
 
 [rbdmirrors]
 rbd-mirror0