--- - name: include red hat based system related tasks include_tasks: pre_requisite_non_container_red_hat.yml when: ansible_facts['os_family'] == 'RedHat' - name: include debian based system related tasks include_tasks: pre_requisite_non_container_debian.yml when: ansible_facts['os_family'] == 'Debian' - name: install nfs rgw/cephfs gateway - SUSE/openSUSE zypper: name: "{{ item.name }}" disable_gpg_check: yes with_items: - { name: 'nfs-ganesha-rgw', install: "{{ nfs_obj_gw }}" } - { name: 'radosgw', install: "{{ nfs_obj_gw }}" } - { name: 'nfs-ganesha-ceph', install: "{{ nfs_file_gw }}" } when: - (ceph_origin == 'repository' or ceph_origin == 'distro') - ceph_repository != 'rhcs' - ansible_facts['os_family'] == 'Suse' - item.install | bool register: result until: result is succeeded # NOTE (leseb): we use root:ceph for permissions since ganesha # does not have the right selinux context to read ceph directories. - name: create rados gateway and ganesha directories file: path: "{{ item.name }}" state: directory owner: "{{ item.owner | default('ceph') }}" group: "{{ item.group | default('ceph') }}" mode: "{{ ceph_directories_mode }}" with_items: - { name: "/var/lib/ceph/bootstrap-rgw", create: "{{ nfs_obj_gw }}" } - { name: "/var/lib/ceph/radosgw", create: "{{ nfs_obj_gw }}" } - { name: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_facts['hostname'] }}", create: "{{ nfs_obj_gw }}" } - { name: "{{ rbd_client_admin_socket_path }}", create: "{{ nfs_obj_gw }}" } - { name: "/var/log/ceph", create: true } - { name: "/var/log/ganesha", create: true, owner: root, group: root } - { name: "/var/run/ceph", create: true } when: item.create | bool - name: cephx related tasks when: - cephx | bool - groups.get(mon_group_name, []) | length > 0 block: - name: get keys from monitors ceph_key: name: "{{ item.name }}" cluster: "{{ cluster }}" output_format: plain state: info register: _rgw_keys with_items: - { name: "client.bootstrap-rgw", path: "/var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring", copy_key: "{{ nfs_obj_gw }}" } - { name: "client.admin", path: "/etc/ceph/{{ cluster }}.client.admin.keyring", copy_key: "{{ copy_admin_key }}" } delegate_to: "{{ groups.get(mon_group_name)[0] }}" run_once: true when: - cephx | bool - item.copy_key | bool - name: copy ceph key(s) if needed copy: dest: "{{ item.item.path }}" content: "{{ item.stdout + '\n' }}" owner: "{{ ceph_uid if containerized_deployment | bool else 'ceph' }}" group: "{{ ceph_uid if containerized_deployment | bool else 'ceph' }}" mode: "{{ ceph_keyring_permissions }}" with_items: "{{ _rgw_keys.results }}" when: - cephx | bool - item.item.copy_key | bool no_log: true - name: nfs object gateway related tasks when: nfs_obj_gw | bool block: - name: create rados gateway keyring ceph_key: name: "client.rgw.{{ ansible_facts['hostname'] }}" cluster: "{{ cluster }}" user: client.bootstrap-rgw user_key: "/var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring" caps: mon: "allow rw" osd: "allow rwx" dest: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_facts['hostname'] }}/keyring" import_key: false owner: ceph group: ceph mode: "{{ ceph_keyring_permissions }}"