mirror of https://github.com/ceph/ceph-ansible.git
237 lines
8.1 KiB
YAML
237 lines
8.1 KiB
YAML
---
|
|
# 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
|
|
- 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') }}"
|
|
- "{{ 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(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-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: Import ceph-exporter role
|
|
ansible.builtin.import_role:
|
|
name: ceph-exporter
|
|
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
|