heat_template_version: rocky description: > Ceph OSD service. parameters: ServiceData: default: {} description: Dictionary packing service data type: json ServiceNetMap: default: {} description: Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry. This mapping overrides those in ServiceNetMapDefaults. type: json DefaultPasswords: default: {} type: json RoleName: default: '' description: Role name on which the service is applied type: string RoleParameters: default: {} description: Parameters specific to the role type: json EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json CephAnsibleDisksConfig: type: json description: Disks config settings for ceph-ansible default: devices: - /dev/vdb osd_scenario: lvm osd_objectstore: bluestore CephEnableDashboard: type: boolean default: false description: Parameter used to trigger the dashboard deployment. conditions: dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]} resources: CephBase: type: ./ceph-base.yaml properties: ServiceData: {get_param: ServiceData} ServiceNetMap: {get_param: ServiceNetMap} DefaultPasswords: {get_param: DefaultPasswords} EndpointMap: {get_param: EndpointMap} RoleName: {get_param: RoleName} RoleParameters: {get_param: RoleParameters} CephOsdAnsibleVars: type: OS::Heat::Value properties: type: json value: vars: {get_param: CephAnsibleDisksConfig} outputs: role_data: description: Role data for the Ceph OSD service. value: service_name: ceph_osd upgrade_tasks: list_concat: - {get_attr: [CephBase, role_data, upgrade_tasks]} - - name: Check legacy Ceph hieradata tags: validation when: step|int == 0 shell: test "nil" == "$(hiera -c /etc/puppet/hiera.yaml ceph::profile::params::osds)" - block: - name: Check for docker cli stat: path: "/var/run/docker.sock" register: check_docker_cli check_mode: false - name: Set noout flag shell: "{{ container_client }} exec -u root ceph-mon-${HOSTNAME} ceph osd set {{ item }}" become: true with_items: - noout - norecover - nobackfill - norebalance - nodeep-scrub vars: container_client: |- {% set container_client = 'podman' %} {% if check_docker_cli.stat.exists|bool %} {% set container_client = 'docker' %} {% endif %} {{ container_client }} delegate_to: "{{ ceph_mon_short_bootstrap_node_name }}" tags: - never - system_upgrade - system_upgrade_prepare when: - step|int == 1 - upgrade_leapp_enabled post_upgrade_tasks: list_concat: - {get_attr: [CephBase, role_data, post_upgrade_tasks]} - - name: Unset noout flag shell: "{{ container_cli }} exec -u root ceph-mon-${HOSTNAME} ceph osd unset {{ item }}" with_items: - noout - norecover - nobackfill - norebalance - nodeep-scrub when: step|int == 2 become: true delegate_to: "{{ ceph_mon_short_bootstrap_node_name }}" puppet_config: config_image: '' config_volume: '' step_config: '' docker_config: {} external_deploy_tasks: list_concat: - {get_attr: [CephBase, role_data, external_deploy_tasks]} - - name: ceph_osd_external_deploy_init when: step|int == 1 tags: - ceph - ceph_fstobs - ceph_systemd block: - name: set ceph-ansible group vars osds set_fact: ceph_ansible_group_vars_osds: {get_attr: [CephOsdAnsibleVars, value, vars]} - name: generate ceph-ansible group vars osds copy: dest: "{{playbook_dir}}/ceph-ansible/group_vars/osds.yml" content: "{{ceph_ansible_group_vars_osds|to_nice_yaml}}" external_update_tasks: {get_attr: [CephBase, role_data, external_update_tasks]} external_upgrade_tasks: {get_attr: [CephBase, role_data, external_upgrade_tasks]} config_settings: map_merge: - tripleo::ceph_osd::firewall_rules: '111 ceph_osd': dport: list_concat: - - '6800-7300' - if: - dashboard_enabled - - '9100' - [] - {}