---
# l_base_packages_hosts may be passed in via prerequisites.yml during scaleup plays
# and upgrade_control_plane.yml upgrade plays.

- name: Install packages necessary for installer
  hosts: "{{ l_base_packages_hosts | default('oo_all_hosts') }}"
  any_errors_fatal: true
  tasks:
  - name: Ensure minimum kernel version
    fail:
      msg: |
        The installed kernel version does not meet the required minimum for RHEL {{ ansible_distribution_version  }}.
        Please update the kernel before continuing.
        Minimum Kernel Version: {{ minimum_kernel_version[ansible_distribution_version] }}
        Installed Kernel Version: {{ ansible_kernel }}
        Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1749024
    when:
    - ansible_distribution == "RedHat"
    - ansible_distribution_version in minimum_kernel_version
    - ansible_kernel is version_compare(minimum_kernel_version[ansible_distribution_version], '<')
    vars:
      minimum_kernel_version:
        "7.5": "3.10.0-862.31.1"
        "7.6": "3.10.0-957.27.2"
        "7.7": "3.10.0-1062"

  - when:
    - not openshift_is_atomic | bool
    block:
    - name: Ensure openshift-ansible installer package deps are installed
      package:
        name: "{{ item }}"
        state: present
      with_items:
      - iproute
      - "{{ 'python3-dbus' if ansible_distribution == 'Fedora' else 'dbus-python' }}"
      - "{{ 'python3-PyYAML' if ansible_distribution == 'Fedora' else 'PyYAML' }}"
      - "{{ 'python-ipaddress' if ansible_distribution != 'Fedora' else '' }}"
      - yum-utils
      when: item != ''
      register: result
      until: result is succeeded

    - name: Ensure various deps for running system containers are installed
      package:
        name: "{{ item }}"
        state: present
      with_items:
      - atomic
      - ostree
      - runc
      when:
      - >
        (openshift_use_system_containers | default(False)) | bool
        or (openshift_use_etcd_system_container | default(False)) | bool
        or (openshift_use_openvswitch_system_container | default(False)) | bool
        or (openshift_use_node_system_container | default(False)) | bool
        or (openshift_use_master_system_container | default(False)) | bool
      register: result
      until: result is succeeded
