feat: switch to binary runc and containerd install (#333)

* feat: switch to binary runc and containerd install

* fix: always download directly to dst node

* feat: add crictl role

* ci: add tests for binary downloads

* ci: rename scenario and add matrix

* ci: move to using prepare

* ci: stop using  anchors

* chore: refactor to download_artifact

* chore: add jammy to containerd+runc

* chore: bump ansible-lint

* chore: add more platforms for cri

* fix: ensure tar command exists

* chore: drop amznlinux2

---------

Co-authored-by: Mohammed Naser <mnaser@vexxhost.com>
diff --git a/roles/runc/tasks/main.yml b/roles/runc/tasks/main.yml
new file mode 100644
index 0000000..32b815d
--- /dev/null
+++ b/roles/runc/tasks/main.yml
@@ -0,0 +1,31 @@
+# Copyright (c) 2023 VEXXHOST, Inc.
+#
+# 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: Uninstall runc package
+  ansible.builtin.package:
+    name: "{{ runc_package_name }}"
+    state: absent
+
+- name: Copy runc binary from download dir
+  ansible.builtin.copy:
+    src: "{{ runc_download_dest }}"
+    dest: "{{ runc_bin_dir }}/runc"
+    mode: "0755"
+    remote_src: true
+
+- name: Remove runc orphaned binary
+  ansible.builtin.file:
+    path: /usr/bin/runc
+    state: absent
+  when: runc_bin_dir != "/usr/bin"