mirror of https://github.com/ceph/ceph-ansible.git
rgw: fix multi instances scaleout
When rgw and osd are collocated, the current workflow prevents from
scaling out the radosgw_num_instances parameter when rerunning the
playbook.
The environment file used in the rgw systemd template is rendered when
executing the `ceph-rgw` role but during a new run of the playbook (in
order to scale out rgw instances), handlers are triggered from `ceph-osd`
role which is run before `ceph-rgw`, therefore it tries to start the new
rgw daemon whereas its corresponding environment file hasn't been
rendered yet and fails like following:
```
ceph-radosgw@rgw.ceph4osd3.rgw1.service failed to run 'start-pre' task: No such file or directory
```
This commit moves the tasks generating this file in `ceph-config` role
so it is generated early.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1851906
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit 7dd68b9ac1
)
pull/5502/head
parent
503bc893fb
commit
cdf61540d8
|
@ -410,6 +410,10 @@
|
||||||
- import_role:
|
- import_role:
|
||||||
name: ceph-facts
|
name: ceph-facts
|
||||||
|
|
||||||
|
- import_role:
|
||||||
|
name: ceph-config
|
||||||
|
tasks_from: rgw_systemd_environment_file.yml
|
||||||
|
|
||||||
# NOTE: changed from file module to raw find command for performance reasons
|
# NOTE: changed from file module to raw find command for performance reasons
|
||||||
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
|
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
|
||||||
# as in this case we know we want all owned by ceph user
|
# as in this case we know we want all owned by ceph user
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
include_tasks: create_ceph_initial_dirs.yml
|
include_tasks: create_ceph_initial_dirs.yml
|
||||||
when: containerized_deployment | bool
|
when: containerized_deployment | bool
|
||||||
|
|
||||||
|
- name: include_tasks rgw_systemd_environment_file.yml
|
||||||
|
include_tasks: rgw_systemd_environment_file.yml
|
||||||
|
when: inventory_hostname in groups.get(rgw_group_name, [])
|
||||||
|
|
||||||
- name: config file operations related to OSDs
|
- name: config file operations related to OSDs
|
||||||
when:
|
when:
|
||||||
- inventory_hostname in groups.get(osd_group_name, [])
|
- inventory_hostname in groups.get(osd_group_name, [])
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
- name: create rados gateway instance directories
|
||||||
|
file:
|
||||||
|
path: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}.{{ item.instance_name }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ ceph_uid if containerized_deployment else 'ceph' }}"
|
||||||
|
group: "{{ ceph_uid if containerized_deployment else 'ceph' }}"
|
||||||
|
mode: "{{ ceph_directories_mode | default('0755') }}"
|
||||||
|
with_items: "{{ rgw_instances }}"
|
||||||
|
|
||||||
|
- name: generate environment file
|
||||||
|
copy:
|
||||||
|
dest: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}.{{ item.instance_name }}/EnvironmentFile"
|
||||||
|
owner: "root"
|
||||||
|
group: "root"
|
||||||
|
mode: "0644"
|
||||||
|
content: |
|
||||||
|
INST_NAME={{ item.instance_name }}
|
||||||
|
INST_PORT={{ item.radosgw_frontend_port }}
|
||||||
|
with_items: "{{ rgw_instances }}"
|
||||||
|
when:
|
||||||
|
- containerized_deployment | bool
|
||||||
|
- rgw_instances is defined
|
|
@ -8,16 +8,6 @@
|
||||||
mode: "{{ ceph_directories_mode }}"
|
mode: "{{ ceph_directories_mode }}"
|
||||||
with_items: "{{ rbd_client_admin_socket_path }}"
|
with_items: "{{ rbd_client_admin_socket_path }}"
|
||||||
|
|
||||||
- name: create rados gateway instance directories
|
|
||||||
file:
|
|
||||||
path: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}.{{ item.instance_name }}"
|
|
||||||
state: directory
|
|
||||||
owner: "{{ ceph_uid if containerized_deployment else 'ceph' }}"
|
|
||||||
group: "{{ ceph_uid if containerized_deployment else 'ceph' }}"
|
|
||||||
mode: "{{ ceph_directories_mode }}"
|
|
||||||
with_items: "{{ rgw_instances }}"
|
|
||||||
when: rgw_instances is defined
|
|
||||||
|
|
||||||
- name: get keys from monitors
|
- name: get keys from monitors
|
||||||
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} auth get {{ item.name }}"
|
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} auth get {{ item.name }}"
|
||||||
register: _rgw_keys
|
register: _rgw_keys
|
||||||
|
|
|
@ -1,15 +1,4 @@
|
||||||
---
|
---
|
||||||
- name: generate environment file
|
|
||||||
copy:
|
|
||||||
dest: "/var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}.{{ item.instance_name }}/EnvironmentFile"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
content: |
|
|
||||||
INST_NAME={{ item.instance_name }}
|
|
||||||
INST_PORT={{ item.radosgw_frontend_port }}
|
|
||||||
with_items: "{{ rgw_instances }}"
|
|
||||||
|
|
||||||
- name: include_task systemd.yml
|
- name: include_task systemd.yml
|
||||||
include_tasks: systemd.yml
|
include_tasks: systemd.yml
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue