Execution
Date
08 Dec 2025 13:33:24 +0000
Duration
00:06:14.05
Controller
aio1.openstack.local
User
root
Versions
Ansible
2.18.6
ara
1.7.4 / 1.7.4
Python
3.12.3
Summary
2
Hosts
374
Tasks
364
Results
37
Plays
208
Files
0
Records
File: /etc/ansible/roles/ceph-ansible/roles/ceph-config/tasks/main.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | --- - name: Include create_ceph_initial_dirs.yml ansible.builtin.include_tasks: create_ceph_initial_dirs.yml when: containerized_deployment | bool - name: Include_tasks rgw_systemd_environment_file.yml ansible.builtin.include_tasks: rgw_systemd_environment_file.yml when: inventory_hostname in groups.get(rgw_group_name, []) - name: Config file operations related to OSDs when: - inventory_hostname in groups.get(osd_group_name, []) # the rolling_update.yml playbook sets num_osds to the number of currently # running osds - not rolling_update | bool block: - name: Reset num_osds ansible.builtin.set_fact: num_osds: 0 - name: Count number of osds for lvm scenario ansible.builtin.set_fact: num_osds: "{{ num_osds | int + (lvm_volumes | length | int) }}" when: lvm_volumes | default([]) | length > 0 - name: Ceph-volume pre-requisites tasks when: - devices | default([]) | length > 0 block: - name: Look up for ceph-volume rejected devices ceph_volume: cluster: "{{ cluster }}" action: "inventory" register: rejected_devices environment: CEPH_VOLUME_DEBUG: "{{ ceph_volume_debug }}" CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" CEPH_CONTAINER_BINARY: "{{ container_binary }}" PYTHONIOENCODING: utf-8 - name: Set_fact rejected_devices ansible.builtin.set_fact: _rejected_devices: "{{ _rejected_devices | default([]) + [item.path] }}" with_items: "{{ rejected_devices.stdout | default('{}') | from_json }}" when: "'Used by ceph-disk' in item.rejected_reasons" - name: Set_fact _devices ansible.builtin.set_fact: _devices: "{{ devices | difference(_rejected_devices | default([])) }}" - name: Run 'ceph-volume lvm batch --report' to see how many osds are to be created ceph_volume: cluster: "{{ cluster }}" objectstore: "{{ osd_objectstore }}" batch_devices: "{{ _devices }}" osds_per_device: "{{ osds_per_device | default(1) | int }}" block_db_size: "{{ block_db_size }}" report: true action: "batch" register: lvm_batch_report environment: CEPH_VOLUME_DEBUG: "{{ ceph_volume_debug }}" CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" CEPH_CONTAINER_BINARY: "{{ container_binary }}" PYTHONIOENCODING: utf-8 when: _devices | default([]) | length > 0 - name: Set_fact num_osds from the output of 'ceph-volume lvm batch --report' (legacy report) ansible.builtin.set_fact: num_osds: "{{ num_osds | int + ((lvm_batch_report.stdout | default('{}') | from_json).osds | default([]) | length | int) + (_rejected_devices | default([]) | length | int) }}" when: - (lvm_batch_report.stdout | default('{}') | from_json) is mapping - (lvm_batch_report.stdout | default('{}') | from_json).changed | default(true) | bool - name: Set_fact num_osds from the output of 'ceph-volume lvm batch --report' (new report) ansible.builtin.set_fact: num_osds: "{{ num_osds | int + ((lvm_batch_report.stdout | default('{}') | from_json) | default([]) | length | int) + (_rejected_devices | default([]) | length | int) }}" when: - (lvm_batch_report.stdout | default('{}') | from_json) is not mapping - (lvm_batch_report.stdout | default('{}') | from_json).changed | default(true) | bool - name: Run 'ceph-volume lvm list' to see how many osds have already been created ceph_volume: action: "list" register: lvm_list environment: CEPH_VOLUME_DEBUG: "{{ ceph_volume_debug }}" CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" CEPH_CONTAINER_BINARY: "{{ container_binary }}" PYTHONIOENCODING: utf-8 changed_when: false - name: Set_fact num_osds (add existing osds) ansible.builtin.set_fact: num_osds: "{{ num_osds | int + (lvm_list.stdout | default('{}') | from_json | dict2items | map(attribute='value') | flatten | map(attribute='devices') | sum(start=[]) | difference(lvm_volumes | default([]) | map(attribute='data')) | length | int) }}" - name: Set osd related config facts when: inventory_hostname in groups.get(osd_group_name, []) block: - name: Set_fact _osd_memory_target ansible.builtin.set_fact: _osd_memory_target: "{{ ((ansible_facts['memtotal_mb'] * 1048576 * safety_factor | float) / num_osds | float) | int }}" when: - _osd_memory_target is undefined - num_osds | default(0) | int > 0 - ((ansible_facts['memtotal_mb'] * 1048576 * safety_factor | float) / num_osds | float) > (osd_memory_target | float) - ceph_conf_overrides.get('osd', {}).get('osd_memory_target', '') == '' - name: Set osd_memory_target to cluster host config ceph_config: action: set who: "osd.*/{{ ansible_facts['hostname'] }}:host" option: "osd_memory_target" value: "{{ _osd_memory_target }}" when: - ceph_config_osd_memory_target | default(true) - _osd_memory_target is defined - running_mon is defined 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: "{{ running_mon }}" - name: Set rgw configs when: inventory_hostname in groups.get(rgw_group_name, []) block: - name: Render rgw configs vars: _rgw_binding_socket: "{{ item.radosgw_address | default(_radosgw_address) | string + ':' + item.radosgw_frontend_port | default(radosgw_frontend_port) | string }}" _rgw_beast_endpoint: "{{ 'ssl_' if radosgw_frontend_ssl_certificate else '' }}endpoint={{ _rgw_binding_socket }}" _rgw_beast_ssl_option: "{{ ' ssl_certificate=' + radosgw_frontend_ssl_certificate if radosgw_frontend_ssl_certificate else '' }}" ansible.builtin.set_fact: _ceph_ansible_rgw_conf: >- {{ _ceph_ansible_rgw_conf | default({}) | combine({ 'client.rgw.' + rgw_zone + '.' + ansible_facts['hostname'] + '.' + item.instance_name: { 'log_file': '/var/log/ceph/' + cluster + '-rgw-' + rgw_zone + '-' + ansible_facts['hostname'] + '.' + item.instance_name + '.log', 'rgw_frontends': 'beast ' + _rgw_beast_endpoint + _rgw_beast_ssl_option, } }, recursive=true) }} loop: "{{ rgw_instances }}" - name: Set config to cluster ceph_config: action: set who: "{{ item.0.key }}" option: "{{ item.1.key }}" value: "{{ item.1.value }}" loop: "{{ _ceph_ansible_rgw_conf | dict2dict }}" when: - rgw_conf_to_cluster | default(true) | bool - running_mon is defined 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: "{{ running_mon }}" - name: Set rgw configs to file ansible.builtin.set_fact: ceph_conf_overrides: "{{ ceph_conf_overrides | default({}) | combine(_ceph_ansible_rgw_conf, recursive=true) }}" when: not rgw_conf_to_cluster | default(true) | bool - name: Create ceph conf directory ansible.builtin.file: path: "/etc/ceph" state: directory owner: "ceph" group: "ceph" mode: "{{ ceph_directories_mode }}" when: not containerized_deployment | bool - name: Import_role ceph-facts ansible.builtin.import_role: name: ceph-facts tasks_from: set_radosgw_address.yml when: - set_radosgw_address | default(true) - inventory_hostname in groups.get(rgw_group_name, []) - name: Generate Ceph file openstack.config_template.config_template: src: "ceph.conf.j2" dest: "{{ ceph_conf_key_directory }}/{{ cluster }}.conf" owner: "{{ ceph_uid if containerized_deployment | bool else 'ceph' }}" group: "{{ ceph_uid if containerized_deployment | bool else 'ceph' }}" mode: "0644" config_overrides: "{{ ceph_conf_overrides }}" config_type: ini notify: - Restart ceph mons - Restart ceph osds - Restart ceph mdss - Restart ceph rgws - Restart ceph mgrs - Restart ceph rbdmirrors |