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/ansible_collections/openstack/osa/playbooks/ceph_install.yml

---
# Copyright 2016, Logan Vig <logan2211@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Gather ceph-mon facts
  hosts: ceph-mon
  gather_facts: false
  tasks:
    - name: Refresh all_addresses facts
      ansible.builtin.setup:
        gather_subset: "all_ipv4_addresses,all_ipv6_addresses"

    - name: Define discovered_interpreter_python
      ansible.builtin.set_fact:
        discovered_interpreter_python: /usr/bin/python3
  tags:
    - always

- name: Install ceph mons
  hosts: ceph-mon
  user: root
  gather_facts: false
  pre_tasks:
    - name: Setup installation variables
      ansible.builtin.include_role:
        name: openstack.osa.install_defaults
        defaults_from: "{{ install_method }}"
        public: true
        apply:
          tags:
            - always
      tags:
        - always

    - name: Gather additional facts for monitor_address_block
      ansible.builtin.include_role:
        name: openstack.osa.gather_extra_facts
      vars:
        deployment_extra_facts_filter: "ansible_all_ipv[4|6]_addresses"
        deployment_extra_facts_subset: "!all,network"
      when: monitor_address_block is defined
      args:
        apply:
          tags:
            - always
      tags:
        - always

    - name: Gather additional facts for monitor_interface
      ansible.builtin.include_role:
        name: openstack.osa.gather_extra_facts
      vars:
        deployment_extra_facts_filter: "{{ 'ansible_' ~ monitor_interface | replace('-','_') }}"
        deployment_extra_facts_subset: "!all,network"
      when: monitor_interface is defined
      args:
        apply:
          tags:
            - always
      tags:
        - always

    - name: Gather memory facts
      ansible.builtin.include_role:
        name: openstack.osa.gather_extra_facts
      vars:
        deployment_extra_facts_filter: "ansible_memtotal*"
        deployment_extra_facts_subset: "!all,hardware"
      args:
        apply:
          tags:
            - always
      tags:
        - always

    - name: Including container setup role
      ansible.builtin.include_role:
        name: "openstack.osa.{{ container_tech | default('lxc') }}_container_setup"
      when: not is_metal
      vars:
        list_of_bind_mounts: "{{ ceph_container_bind_mounts }}"

    - name: Including unbound-clients role
      ansible.builtin.include_role:
        name: openstack.osa.unbound_clients
      when:
        - hostvars['localhost']['resolvconf_enabled'] | bool

    # Set the priority of the ceph community apt repo either above or below that of UCA or distro sources
    - name: Set apt package pins
      ansible.builtin.include_role:
        name: apt_package_pinning
      vars:
        apt_package_pinning_file_name: "ceph_community_pin.pref"
        apt_package_pinning_priority: "{{ (ceph_repository == 'community') | ternary(1000, 100) }}"
        apt_pinned_packages: [{ package: '*', release: 'ceph.com' }]
      when:
        - ansible_facts['pkg_mgr'] == 'apt'

    - name: Install python3-yaml
      ansible.builtin.package:
        name: "{{ (ansible_facts['os_family'] | lower == 'debian') | ternary('python3-yaml', 'python3-pyyaml') }}"
        state: present

    - name: Create systemd service directory
      ansible.builtin.file:
        path: "/etc/systemd/system/ceph-mon@.service.d/"
        state: directory
        group: "root"
        owner: "root"
        mode: "0755"
      when:
        - ansible_facts['pkg_mgr'] == 'dnf'
        - ansible_facts['service_mgr'] == 'systemd'

    - name: Add systemd override for PrivateDevices
      ansible.builtin.copy:
        dest: "/etc/systemd/system/ceph-mon@.service.d/ceph-mon-systemd-overrides.conf"
        content: |
          [Service]
          PrivateDevices=false
        mode: "0640"
      when:
        - ansible_facts['pkg_mgr'] == 'dnf'
        - ansible_facts['service_mgr'] == 'systemd'

  roles:
    - role: ceph-defaults
      tags:
        - skip_ansible_lint
    - role: ceph-facts
      tags:
        - skip_ansible_lint
    - role: ceph-common
      tags:
        - skip_ansible_lint
    - role: ceph-handler
      tags:
        - skip_ansible_lint
    - role: ceph-config
      tags:
        - skip_ansible_lint
    - role: ceph-mon
      tags:
        - skip_ansible_lint
    - role: ceph-mgr
      tags:
        - skip_ansible_lint
    - role: openstack.osa.system_crontab_coordination
      tags:
        - crontab

  environment: "{{ deployment_environment_variables | default({}) }}"
  tags:
    - ceph
    - ceph-mon

- name: Gather ceph-osd facts
  hosts: ceph-osd
  gather_facts: "{{ osa_gather_facts | default(True) }}"
  module_defaults:
    ansible.builtin.setup:
      gather_subset: "{{ osa_gather_subset | default(lookup('ansible.builtin.env', 'ANSIBLE_GATHER_SUBSET', default='!all,min')) }}"
  tasks:
    - name: Define discovered_interpreter_python
      ansible.builtin.set_fact:
        discovered_interpreter_python: /usr/bin/python3
  tags:
    - always

- name: Install ceph osds
  hosts: ceph-osd
  user: root
  gather_facts: false
  pre_tasks:
    - name: Setup installation variables
      ansible.builtin.include_role:
        name: openstack.osa.install_defaults
        defaults_from: "{{ install_method }}"
        public: true
        apply:
          tags:
            - always
      tags:
        - always

    - name: Gather memory facts
      ansible.builtin.include_role:
        name: openstack.osa.gather_extra_facts
      vars:
        deployment_extra_facts_filter: "ansible_memtotal*"
        deployment_extra_facts_subset: "!all,hardware"
      args:
        apply:
          tags:
            - always
      tags:
        - always

    - name: Including container setup role
      ansible.builtin.include_role:
        name: "openstack.osa.{{ container_tech | default('lxc') }}_container_setup"
      when: not is_metal
      vars:
        list_of_bind_mounts: "{{ ceph_container_bind_mounts }}"

    - name: Including unbound-clients tasks
      ansible.builtin.include_role:
        name: openstack.osa.unbound_clients
      when:
        - hostvars['localhost']['resolvconf_enabled'] | bool

    # Set the priority of the ceph community apt repo either above or below that of UCA or distro sources
    - name: Set apt package pins
      ansible.builtin.include_role:
        name: apt_package_pinning
      vars:
        apt_package_pinning_file_name: "ceph_community_pin.pref"
        apt_package_pinning_priority: "{{ (ceph_repository == 'community') | ternary(1000, 100) }}"
        apt_pinned_packages: [{ package: '*', release: 'ceph.com' }]
      when:
        - ansible_facts['pkg_mgr'] == 'apt'

    - name: Install python3-yaml
      ansible.builtin.package:
        name: "{{ (ansible_facts['os_family'] | lower == 'debian') | ternary('python3-yaml', 'python3-pyyaml') }}"
        state: present

  roles:
    - role: ceph-defaults
      tags:
        - skip_ansible_lint
    - role: ceph-facts
      tags:
        - skip_ansible_lint
    - role: ceph-common
      tags:
        - skip_ansible_lint
    - role: ceph-handler
      tags:
        - skip_ansible_lint
    - role: ceph-config
      tags:
        - skip_ansible_lint
    - role: ceph-osd
      tags:
        - skip_ansible_lint
    - role: openstack.osa.system_crontab_coordination
      tags:
        - crontab

  environment: "{{ deployment_environment_variables | default({}) }}"
  tags:
    - ceph
    - ceph-osd

- name: Gather ceph-mds facts
  hosts: ceph-mds
  gather_facts: "{{ osa_gather_facts | default(True) }}"
  module_defaults:
    ansible.builtin.setup:
      gather_subset: "{{ osa_gather_subset | default(lookup('ansible.builtin.env', 'ANSIBLE_GATHER_SUBSET', default='!all,min')) }}"
  tasks:
    - name: Define discovered_interpreter_python
      ansible.builtin.set_fact:
        discovered_interpreter_python: /usr/bin/python3
  tags:
    - always

- name: Install ceph metadata servers
  hosts: ceph-mds
  gather_facts: false
  user: root
  pre_tasks:
    - name: Setup installation variables
      ansible.builtin.include_role:
        name: openstack.osa.install_defaults
        defaults_from: "{{ install_method }}"
        public: true
        apply:
          tags:
            - always
      tags:
        - always

    - name: Gather memory facts
      ansible.builtin.include_role:
        name: openstack.osa.gather_extra_facts
      vars:
        deployment_extra_facts_filter: "ansible_memtotal*"
        deployment_extra_facts_subset: "!all,hardware"
      args:
        apply:
          tags:
            - always
      tags:
        - always
  roles:
    - role: ceph-defaults
      tags:
        - skip_ansible_lint
    - role: ceph-facts
      tags:
        - skip_ansible_lint
    - role: ceph-common
      tags:
        - skip_ansible_lint
    - role: ceph-handler
      tags:
        - skip_ansible_lint
    - role: ceph-config
      tags:
        - skip_ansible_lint
    - role: ceph-mds
      tags:
        - skip_ansible_lint
    - role: "openstack.osa.system_crontab_coordination"
      tags:
        - "system-crontab-coordination"
  vars:
    is_metal: "{{ properties.is_metal|default(false) }}"
  tags:
    - ceph-mds