]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
adopt: use mgr/nfs volume
authorGuillaume Abrioux <gabrioux@redhat.com>
Thu, 14 Oct 2021 22:44:02 +0000 (00:44 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Mon, 25 Oct 2021 13:44:53 +0000 (15:44 +0200)
use the mgr 'nfs' module to recreate nfs exports.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1954971
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
infrastructure-playbooks/cephadm-adopt.yml

index ac31a6b52d03baf0c268635dda94e8e7ca4c6fb7..ee69f4fbe5948bc2d393941ac188bd51a4d3c21e 100644 (file)
         name: ceph-nfs
         tasks_from: create_rgw_nfs_user.yml
 
+    - name: enable ceph mgr nfs module
+      ceph_mgr_module:
+        name: "nfs"
+        cluster: "{{ cluster }}"
+        state: enable
+      environment:
+        CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}"
+        CEPH_CONTAINER_BINARY: "{{ container_binary }}"
+      delegate_to: "{{ groups[mon_group_name][0] }}"
+
     - name: stop and disable ceph-nfs systemd service
       service:
         name: "ceph-nfs@{{ ansible_facts['hostname'] }}"
         path: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_facts['hostname'] }}"
         state: absent
 
-    - name: set_fact rados_cmd
-      set_fact:
-        rados_cmd: "{{ hostvars[groups[mon_group_name][0]]['container_binary'] + ' run --interactive --rm --net=host -v /etc/ceph:/etc/ceph:z --entrypoint=rados ' + ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else 'rados' }}"
-
-    - name: get legacy nfs export from rados object
-      command: "{{ rados_cmd }} -p {{ cephfs_data_pool.name }} get {{ ceph_nfs_rados_export_index }} /dev/stdout"
-      register: legacy_export
+    - name: create nfs ganesha cluster
+      command: "{{ cephadm_cmd }} shell --fsid {{ fsid }} -- ceph --cluster {{ cluster }} nfs cluster create {{ ansible_facts['hostname'] }} {{ ansible_facts['hostname'] }}"
       changed_when: false
       delegate_to: "{{ groups[mon_group_name][0] }}"
-      when: ceph_nfs_rados_backend | bool
-
-    - name: set_fact nfs_file_gw_export
-      set_fact:
-        nfs_file_gw_export: |
-          EXPORT
-          {
-            Export_id={{ ceph_nfs_ceph_export_id }};
-            Path = "/";
-            Pseudo = {{ ceph_nfs_ceph_pseudo_path }};
-            Access_Type = {{ ceph_nfs_ceph_access_type }};
-            Protocols = {{ ceph_nfs_ceph_protocols }};
-            Transports = TCP;
-            SecType = {{ ceph_nfs_ceph_sectype }};
-            Squash = {{ ceph_nfs_ceph_squash }};
-            Attr_Expiration_Time = 0;
-            FSAL {
-              Name = CEPH;
-              User_Id = "{{ ceph_nfs_ceph_user }}";
-            }
-                  {{ ganesha_ceph_export_overrides | default(None) }}
-          }
-      when: nfs_file_gw | bool
-
-    - name: set_fact nfs_obj_gw_export
-      set_fact:
-        nfs_obj_gw_export: |
-          EXPORT
-          {
-            Export_id={{ ceph_nfs_rgw_export_id }};
-            Path = "/";
-            Pseudo = {{ ceph_nfs_rgw_pseudo_path }};
-            Access_Type = {{ ceph_nfs_rgw_access_type }};
-            Protocols = {{ ceph_nfs_rgw_protocols }};
-            Transports = TCP;
-            SecType = {{ ceph_nfs_rgw_sectype }};
-            Squash = {{ ceph_nfs_rgw_squash }};
-            FSAL {
-              Name = RGW;
-              User_Id = "{{ ceph_nfs_rgw_user }}";
-              Access_Key_Id ="{{ ceph_nfs_rgw_access_key }}";
-              Secret_Access_Key = "{{ ceph_nfs_rgw_secret_key }}";
-            }
-                  {{ ganesha_rgw_export_overrides | default(None) }}
-          }
-      when: nfs_obj_gw | bool
-
-    - name: set_fact new_export
-      set_fact:
-        new_export: |
-          {{ legacy_export.stdout | default('') }}
-          {{ nfs_file_gw_export | default('') }}
-          {{ nfs_obj_gw_export | default('') }}
+      environment:
+        CEPHADM_IMAGE: '{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}'
 
-    - name: create nfs exports pool
-      ceph_pool:
-        name: .nfs
-        cluster: "{{ cluster }}"
-        application: nfs
+    - name: create cephfs export
+      command: "{{ cephadm_cmd }} shell --fsid {{ fsid }} -- ceph --cluster {{ cluster }} nfs export create cephfs {{ cephfs }} {{ ansible_facts['hostname'] }} {{ ceph_nfs_ceph_pseudo_path }} --squash {{ ceph_nfs_ceph_squash }}"
+      changed_when: false
       delegate_to: "{{ groups[mon_group_name][0] }}"
-      run_once: true
       environment:
-        CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}"
-        CEPH_CONTAINER_BINARY: "{{ container_binary }}"
+        CEPHADM_IMAGE: '{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}'
+      when: nfs_file_gw | bool
 
-    - name: push the new exports in a rados object
-      command: "{{ rados_cmd }} -p .nfs -N {{ nfs_ganesha_export_namespace | default('nfs-ganesha') }} put conf-nfs.{{ nfs_group_name | default('nfss') }} -"
-      args:
-        stdin: "{{ new_export }}"
-        stdin_add_newline: no
+    - name: get a list of existing buckets
+      command: "{{ cephadm_cmd }} shell --fsid {{ fsid }} -- radosgw-admin --cluster {{ cluster }} bucket list --format json"
       changed_when: false
       delegate_to: "{{ groups[mon_group_name][0] }}"
+      register: bucket_list
+      environment:
+        CEPHADM_IMAGE: '{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}'
+      when:
+        - nfs_obj_gw | bool
+        - bucket_list is undefined
 
-    - name: update the placement of nfs hosts
-      command: "{{ cephadm_cmd }} shell --fsid {{ fsid }} -- ceph --cluster {{ cluster }} orch apply nfs {{ nfs_group_name | default('nfss') }} --placement='{{ groups.get(nfs_group_name, []) | length }} label:{{ nfs_group_name }}'"
-      run_once: true
+    - name: set_fact bucket_list
+      set_fact:
+        bucket_list: "{{ (bucket_list.stdout | from_json) }}"
+      when: bucket_list.skipped is undefined
+
+    - name: create rgw export
+      command: "{{ cephadm_cmd }} shell --fsid {{ fsid }} -- ceph --cluster {{ cluster }} nfs export create rgw {{ item }} {{ ansible_facts['hostname'] }} {{ ceph_nfs_rgw_pseudo_path }} --squash {{ ceph_nfs_rgw_squash }}"
       changed_when: false
       delegate_to: "{{ groups[mon_group_name][0] }}"
       environment:
         CEPHADM_IMAGE: '{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}'
+      loop: "{{ bucket_list }}"
+      when:
+        - nfs_obj_gw | bool
+        - (bucket_list.skipped is undefined or bucket_list | length > 0)
+
 
 - name: redeploy rbd-mirror daemons
   hosts: "{{ rbdmirror_group_name|default('rbdmirrors') }}"