mirror of https://github.com/ceph/ceph-ansible.git
241 lines
7.5 KiB
YAML
241 lines
7.5 KiB
YAML
---
|
|
- name: add nfs-ganesha stable repository
|
|
yum_repository:
|
|
name: nfs_ganesha_stable
|
|
description: nfs-ganesha stable repo
|
|
gpgcheck: yes
|
|
state: present
|
|
gpgkey: "{{ ceph_stable_key }}"
|
|
baseurl: "{{ ceph_mirror }}/nfs-ganesha/rpm-{{ nfs_ganesha_stable_branch }}/{{ ceph_release }}/$basearch"
|
|
when:
|
|
- ansible_os_family == 'RedHat'
|
|
- nfs_ganesha_stable
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'community'
|
|
|
|
- name: fetch nfs-ganesha red hat development repository
|
|
uri:
|
|
url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/flavors/{{ nfs_ganesha_flavor }}/repo
|
|
return_content: yes
|
|
register: nfs_ganesha_dev_yum_repo
|
|
when:
|
|
- ansible_os_family == 'RedHat'
|
|
- nfs_ganesha_dev
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'dev'
|
|
|
|
- name: add nfs-ganesha development repository
|
|
copy:
|
|
content: "{{ nfs_ganesha_dev_yum_repo.content }}"
|
|
dest: /etc/yum.repos.d/nfs-ganesha-dev.repo
|
|
owner: root
|
|
group: root
|
|
backup: yes
|
|
when:
|
|
- ansible_os_family == 'RedHat'
|
|
- nfs_ganesha_dev
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'dev'
|
|
|
|
- name: add nfs-ganesha stable repository
|
|
apt_repository:
|
|
repo: "deb {{ nfs_ganesha_stable_deb_repo }} {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main"
|
|
state: present
|
|
update_cache: no
|
|
register: add_ganesha_apt_repo
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- nfs_ganesha_stable
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'community'
|
|
|
|
- name: update apt cache
|
|
apt:
|
|
update_cache: yes
|
|
register: update_ganesha_apt_cache
|
|
retries: 5
|
|
delay: 2
|
|
until: update_ganesha_apt_cache | success
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- nfs_ganesha_stable
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'community'
|
|
- add_ganesha_apt_repo | changed
|
|
|
|
- name: fetch nfs-ganesha development repository
|
|
uri:
|
|
url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_release }}/flavors/{{ nfs_ganesha_flavor }}/repo
|
|
return_content: yes
|
|
register: nfs_ganesha_apt_repo
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- nfs_ganesha_dev
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'dev'
|
|
|
|
- name: add nfs-ganesha development repository
|
|
copy:
|
|
content: "{{ nfs_ganesha_dev_apt_repo.content }}"
|
|
dest: /etc/apt/sources.list.d/nfs-ganesha-dev.list
|
|
owner: root
|
|
group: root
|
|
backup: yes
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- nfs_ganesha_dev
|
|
- ceph_origin == 'repository'
|
|
- ceph_repository == 'dev'
|
|
|
|
- name: install nfs cephfs gateway
|
|
package:
|
|
name: nfs-ganesha-ceph
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
when:
|
|
- nfs_file_gw
|
|
- ansible_os_family == 'RedHat'
|
|
|
|
- name: install redhat nfs-ganesha-rgw and ceph-radosgw packages
|
|
package:
|
|
name: "{{ item }}"
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
with_items:
|
|
- nfs-ganesha-rgw
|
|
- ceph-radosgw
|
|
when:
|
|
- nfs_obj_gw
|
|
- ansible_os_family == 'RedHat'
|
|
|
|
- name: install jemalloc for debian
|
|
apt:
|
|
name: libjemalloc1
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
update_cache: yes
|
|
when:
|
|
- (ceph_origin == 'repository' or ceph_origin == 'distro')
|
|
- ceph_repository != 'rhcs'
|
|
- ansible_os_family == 'Debian'
|
|
|
|
- name: install nfs rgw/cephfs gateway - suse
|
|
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_os_family == 'Suse'
|
|
- item.install | bool
|
|
|
|
- name: install nfs rgw/cephfs gateway - debian
|
|
apt:
|
|
name: "{{ item.name }}"
|
|
allow_unauthenticated: 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_os_family == 'Debian'
|
|
- item.install | bool
|
|
|
|
# debian_rhcs installation
|
|
- name: install red hat storage nfs gateway for debian
|
|
apt:
|
|
name: nfs-ganesha
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- (ceph_origin == 'repository' or ceph_origin == 'distro')
|
|
- ceph_repository == 'rhcs'
|
|
|
|
- name: install red hat storage nfs file gateway
|
|
apt:
|
|
name: nfs-ganesha-ceph
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- (ceph_origin == 'repository' or ceph_origin == 'distro')
|
|
- ceph_repository == 'rhcs'
|
|
- nfs_file_gw
|
|
|
|
- name: install red hat storage nfs obj gateway
|
|
apt:
|
|
name: nfs-ganesha-rgw
|
|
state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}"
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- (ceph_origin == 'repository' or ceph_origin == 'distro')
|
|
- ceph_repository == 'rhcs'
|
|
- nfs_obj_gw
|
|
|
|
# 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: "ceph"
|
|
group: "ceph"
|
|
mode: "0755"
|
|
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_hostname }}", create: "{{ nfs_obj_gw }}" }
|
|
- { name: "{{ rbd_client_admin_socket_path }}", create: "{{ nfs_obj_gw }}" }
|
|
- { name: "/var/log/ceph", create: true }
|
|
- { name: "/var/run/ceph", create: true }
|
|
when:
|
|
- item.create|bool
|
|
|
|
- name: copy bootstrap cephx keys
|
|
copy:
|
|
src: "{{ fetch_directory }}/{{ fsid }}{{ item.name }}"
|
|
dest: "{{ item.name }}"
|
|
owner: "ceph"
|
|
group: "ceph"
|
|
mode: "0600"
|
|
with_items:
|
|
- { name: "/var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring", copy_key: "{{ nfs_obj_gw }}" }
|
|
when:
|
|
- cephx
|
|
- item.copy_key|bool
|
|
|
|
- name: create rados gateway keyring
|
|
command: ceph --cluster {{ cluster }} --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring auth get-or-create client.rgw.{{ ansible_hostname }} osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring
|
|
args:
|
|
creates: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring
|
|
changed_when: false
|
|
when:
|
|
- nfs_obj_gw
|
|
- cephx
|
|
|
|
- name: set rados gateway key permissions
|
|
file:
|
|
path: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring
|
|
owner: "ceph"
|
|
group: "ceph"
|
|
mode: "0600"
|
|
when:
|
|
- nfs_obj_gw
|
|
- cephx
|
|
|
|
- name: change ownership on /var/log/ganesha
|
|
file:
|
|
path: /var/log/ganesha
|
|
owner: "root"
|
|
group: "root"
|
|
mode: "0755"
|
|
|
|
- name: stop nfs server service
|
|
systemd:
|
|
name: "{%- if ansible_os_family == 'RedHat' 'nfs-server' %}{%- endif %}{%- if ansible_os_family == 'Suse' 'nfsserver' %}{%- endif %}{%- if ansible_os_family == 'Debian' 'nfs-kernel-server' %}{%- endif %}"
|
|
state: stopped
|
|
enabled: no
|
|
ignore_errors: true
|