diff --git a/ansible/ci/inventory_gcp.yml b/ansible/ci/inventory_gcp.yml index 1d996a9353..7781ea24e7 100644 --- a/ansible/ci/inventory_gcp.yml +++ b/ansible/ci/inventory_gcp.yml @@ -18,6 +18,9 @@ keyed_groups: - prefix: vm_arch key: labels.vm_arch + + - prefix: container_engine + key: labels.container_engine groups: gcp: true auth_kind: serviceaccount diff --git a/ansible/dev/inventory_gcp.yml b/ansible/dev/inventory_gcp.yml index 20338647a4..183b3fb42c 100644 --- a/ansible/dev/inventory_gcp.yml +++ b/ansible/dev/inventory_gcp.yml @@ -19,6 +19,9 @@ keyed_groups: - prefix: vm_arch key: labels.vm_arch + + - prefix: container_engine + key: labels.container_engine groups: gcp: true auth_kind: application diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index a1abea1c85..b1187171bf 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -30,6 +30,7 @@ virtual_machines: families: - rhel-8 - rhel-9 + container_engine: podman rhel-arm64: project: rhel-cloud @@ -37,6 +38,7 @@ virtual_machines: machine_type: t2a-standard-2 families: - rhel-9-arm64 + container_engine: podman rhel-s390x: project: rhel-s390x-cloud @@ -59,6 +61,7 @@ virtual_machines: families: - rhel-8-4-sap-ha - rhel-8-6-sap-ha + container_engine: podman rhcos: project: rhcos-cloud @@ -74,6 +77,7 @@ virtual_machines: - name: core sshAuthorizedKeys: - "{{ lookup('file', gcp_ssh_key_file + '.pub', errors='ignore') }}" + container_engine: podman cos: project: cos-cloud diff --git a/ansible/group_vars/container_engine_podman.yml b/ansible/group_vars/container_engine_podman.yml new file mode 100644 index 0000000000..8971c3048c --- /dev/null +++ b/ansible/group_vars/container_engine_podman.yml @@ -0,0 +1,6 @@ +--- +runtime_command: podman +runtime_as_root: true +runtime_socket: /run/podman/podman.sock + +needs_selinux_permissive: true diff --git a/ansible/group_vars/platform_rhcos.yml b/ansible/group_vars/platform_rhcos.yml index c69c65f83f..792d9227f7 100644 --- a/ansible/group_vars/platform_rhcos.yml +++ b/ansible/group_vars/platform_rhcos.yml @@ -1,8 +1,2 @@ --- ansible_user: core - -runtime_command: podman -runtime_as_root: true -runtime_socket: /run/podman/podman.sock - -needs_selinux_permissive: true diff --git a/ansible/roles/create-all-vms/tasks/by-family.yml b/ansible/roles/create-all-vms/tasks/by-family.yml index b3fa0da8fa..e42fa3c412 100644 --- a/ansible/roles/create-all-vms/tasks/by-family.yml +++ b/ansible/roles/create-all-vms/tasks/by-family.yml @@ -32,3 +32,4 @@ vm_machine_type: "{{ item.0.value.machine_type | default('e2-standard-2') }}" vm_ssh_key_file: "{{ item.0.value.ssh_key_file | default(gcp_ssh_key_file) }}" vm_user: "{{ item.0.value.username | default(ansible_user) }}" + container_engine: "{{ item.0.value.container_engine | default('docker') }}" diff --git a/ansible/roles/create-all-vms/tasks/by-image.yml b/ansible/roles/create-all-vms/tasks/by-image.yml index 523542c2be..a44f11f08a 100644 --- a/ansible/roles/create-all-vms/tasks/by-image.yml +++ b/ansible/roles/create-all-vms/tasks/by-image.yml @@ -41,3 +41,4 @@ vm_machine_type: "{{ item.0.value.machine_type | default('e2-standard-2') }}" vm_ssh_key_file: "{{ item.0.value.ssh_key_file | default(gcp_ssh_key_file) }}" vm_user: "{{ item.0.value.username | default(ansible_user) }}" + container_engine: "{{ item.0.value.container_engine | default('docker') }}" diff --git a/ansible/roles/create-vm/tasks/create-gcp-vm.yml b/ansible/roles/create-vm/tasks/create-gcp-vm.yml index f2f11c46bb..90d4582a5e 100644 --- a/ansible/roles/create-vm/tasks/create-gcp-vm.yml +++ b/ansible/roles/create-vm/tasks/create-gcp-vm.yml @@ -39,6 +39,7 @@ vm_image_family: "{{ vm_family }}" vm_collection_method: "{{ vm_collection_method }}" vm_arch: "{{ vm_arch }}" + container_engine: "{{ container_engine }}" - name: Get GCP network gcp_compute_network: diff --git a/ansible/roles/provision-vm/tasks/redhat.yml b/ansible/roles/provision-vm/tasks/redhat.yml index 1d6a769201..edf7dea549 100644 --- a/ansible/roles/provision-vm/tasks/redhat.yml +++ b/ansible/roles/provision-vm/tasks/redhat.yml @@ -1,16 +1,14 @@ --- -- set_fact: - distro: centos - -- when: vm_arch == "s390x" - block: - - name: Get distro info - shell: awk -F= '$1=="ID" { print $2 ;}' /etc/os-release - register: distro_id - when: vm_arch == "s390x" +- name: set distro to RHEL + set_fact: + distro: rhel + when: vm_arch != "ppc64le" - - set_fact: - distro: "{{ distro_id.stdout }}" +# There's currently no ppc64le RHEL docker package, so we use CentOS instead. +- name: set distro to CentOS + set_fact: + distro: centos + when: vm_arch == "ppc64le" - name: Register server with Red Hat for IBM POWER vms tags: attach_subscription @@ -25,21 +23,41 @@ until: registration is not failed when: vm_arch == "ppc64le" or vm_arch == "s390x" -- name: Add repository - shell: | - yum install -y yum-utils device-mapper-persistent-data lvm2 - yum-config-manager --add-repo https://download.docker.com/linux/"{{ distro }}"/docker-ce.repo - yum-config-manager --setopt="docker-ce-stable.baseurl=https://download.docker.com/linux/"{{ distro }}"/\$releasever/\$basearch/stable" --save - yum update -y +- name: Disable troublesome repo + ansible.builtin.shell: | + dnf config-manager --disable rhui-codeready-builder-for-rhel-8-x86_64-rhui-source-rpms + when: vm_config.find('-8') != -1 and vm_arch == 'amd64' + +- name: Install needed utilities + ansible.builtin.dnf: + name: + - git + - make + +- name: Add docker repos + ansible.builtin.shell: | + dnf config-manager --add-repo "https://download.docker.com/linux/{{ distro }}/docker-ce.repo" + when: runtime_command == 'docker' - name: Install docker - yum: + ansible.builtin.dnf: + name: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + state: present + when: runtime_command == 'docker' + +- name: Install podman + ansible.builtin.dnf: name: - - docker-ce - - docker-ce-cli - - containerd.io + - podman + - podman-docker - git - make state: latest update_cache: true + when: runtime_command == 'podman'