--- # This playbook is intended to be used as part of the el7 to el8 OS upgrade. # It modifies the systemd unit files so containers are launched with podman # instead of docker after the OS reboot once it is upgraded. # It is *not* intended to restart services since we don't want to multiple services # restarts. - name: Pre-requisite and facts gathering hosts: - mons - osds - mdss - rgws - nfss - rbdmirrors - clients - iscsigws - mgrs - monitoring gather_facts: false become: true any_errors_fatal: true vars: delegate_facts_host: true pre_tasks: - name: Import raw_install_python tasks ansible.builtin.import_tasks: "{{ playbook_dir }}/../raw_install_python.yml" tasks: - name: Import ceph-defaults role ansible.builtin.import_role: name: ceph-defaults # pre-tasks for following import - - name: Gather facts ansible.builtin.setup: gather_subset: - 'all' - '!facter' - '!ohai' when: not delegate_facts_host | bool or inventory_hostname in groups.get(client_group_name, []) - name: Gather and delegate facts ansible.builtin.setup: gather_subset: - 'all' - '!facter' - '!ohai' delegate_to: "{{ item }}" delegate_facts: true with_items: "{{ groups['all'] | difference(groups.get(client_group_name | default('clients'), [])) }}" run_once: true when: delegate_facts_host | bool - name: Migrate to podman hosts: - "{{ mon_group_name | default('mons') }}" - "{{ osd_group_name | default('osds') }}" - "{{ mds_group_name | default('mdss') }}" - "{{ rgw_group_name | default('rgws') }}" - "{{ nfs_group_name | default('nfss') }}" - "{{ mgr_group_name | default('mgrs') }}" - "{{ iscsi_gw_group_name | default('iscsigws') }}" - "{{ rbdmirror_group_name | default('rbdmirrors') }}" - "{{ monitoring_group_name | default('monitoring') }}" gather_facts: false become: true tasks: - name: Set_fact docker2podman and container_binary ansible.builtin.set_fact: docker2podman: true container_binary: podman - name: Import ceph-defaults role ansible.builtin.import_role: name: ceph-defaults - name: Import ceph-facts role ansible.builtin.import_role: name: ceph-facts - name: Import ceph-handler role ansible.builtin.import_role: name: ceph-handler - name: Install podman ansible.builtin.package: name: podman state: present register: result until: result is succeeded tags: with_pkg when: not is_atomic | bool - name: Check podman presence # noqa command-instead-of-shell ansible.builtin.shell: command -v podman register: podman_presence changed_when: false failed_when: false - name: Pulling images from docker daemon when: podman_presence.rc == 0 block: - name: Pulling Ceph container image from docker daemon ansible.builtin.command: "{{ timeout_command }} {{ container_binary }} pull docker-daemon:{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}" changed_when: false register: pull_image until: pull_image.rc == 0 retries: "{{ docker_pull_retry }}" delay: 10 when: inventory_hostname in groups.get(mon_group_name, []) or inventory_hostname in groups.get(osd_group_name, []) or inventory_hostname in groups.get(mds_group_name, []) or inventory_hostname in groups.get(rgw_group_name, []) or inventory_hostname in groups.get(mgr_group_name, []) or inventory_hostname in groups.get(rbdmirror_group_name, []) or inventory_hostname in groups.get(iscsi_gw_group_name, []) or inventory_hostname in groups.get(nfs_group_name, []) - name: Pulling alertmanager/grafana/prometheus images from docker daemon ansible.builtin.command: "{{ timeout_command }} {{ container_binary }} pull docker-daemon:{{ item }}" changed_when: false register: pull_image until: pull_image.rc == 0 retries: "{{ docker_pull_retry }}" delay: 10 loop: - "{{ alertmanager_container_image }}" - "{{ grafana_container_image }}" - "{{ prometheus_container_image }}" when: - dashboard_enabled | bool - inventory_hostname in groups.get(monitoring_group_name, []) - name: Pulling node_exporter image from docker daemon ansible.builtin.command: "{{ timeout_command }} {{ container_binary }} pull docker-daemon:{{ node_exporter_container_image }}" changed_when: false register: pull_image until: pull_image.rc == 0 retries: "{{ docker_pull_retry }}" delay: 10 when: dashboard_enabled | bool - name: Import ceph-mon role ansible.builtin.import_role: name: ceph-mon tasks_from: systemd.yml when: inventory_hostname in groups.get(mon_group_name, []) - name: Import ceph-iscsi-gw role ansible.builtin.import_role: name: ceph-iscsi-gw tasks_from: systemd.yml when: inventory_hostname in groups.get(iscsi_gw_group_name, []) - name: Import ceph-mds role ansible.builtin.import_role: name: ceph-mds tasks_from: systemd.yml when: inventory_hostname in groups.get(mds_group_name, []) - name: Import ceph-mgr role ansible.builtin.import_role: name: ceph-mgr tasks_from: systemd.yml when: inventory_hostname in groups.get(mgr_group_name, []) - name: Import ceph-nfs role ansible.builtin.import_role: name: ceph-nfs tasks_from: systemd.yml when: inventory_hostname in groups.get(nfs_group_name, []) - name: Import ceph-osd role ansible.builtin.import_role: name: ceph-osd tasks_from: systemd.yml when: inventory_hostname in groups.get(osd_group_name, []) - name: Import ceph-rbd-mirror role ansible.builtin.import_role: name: ceph-rbd-mirror tasks_from: systemd.yml when: inventory_hostname in groups.get(rbdmirror_group_name, []) - name: Import ceph-rgw role ansible.builtin.import_role: name: ceph-rgw tasks_from: systemd.yml when: inventory_hostname in groups.get(rgw_group_name, []) - name: Import ceph-crash role ansible.builtin.import_role: name: ceph-crash tasks_from: systemd.yml when: inventory_hostname in groups.get(mon_group_name, []) or inventory_hostname in groups.get(osd_group_name, []) or inventory_hostname in groups.get(mds_group_name, []) or inventory_hostname in groups.get(rgw_group_name, []) or inventory_hostname in groups.get(mgr_group_name, []) or inventory_hostname in groups.get(rbdmirror_group_name, []) - name: Dashboard configuration when: dashboard_enabled | bool block: - name: Import ceph-node-exporter role ansible.builtin.import_role: name: ceph-node-exporter tasks_from: systemd.yml - name: Import ceph-facts role ansible.builtin.import_role: name: ceph-facts tasks_from: grafana.yml when: inventory_hostname in groups.get(monitoring_group_name, []) - name: Import ceph-grafana role ansible.builtin.import_role: name: ceph-grafana tasks_from: systemd.yml when: inventory_hostname in groups.get(monitoring_group_name, []) - name: Import ceph-prometheus role ansible.builtin.import_role: name: ceph-prometheus tasks_from: systemd.yml when: inventory_hostname in groups.get(monitoring_group_name, []) - name: Reload systemd daemon ansible.builtin.systemd: daemon_reload: true