From a7d197973fa4c4d00c9c1b57a85d2344a63d5a40 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Thu, 14 Jan 2021 21:57:00 +0200
Subject: [PATCH] Toolbox role and playbook.

Install Podman and Toolbox.
---
 roles/toolbox/README.md      | 17 +++++++++++
 roles/toolbox/tasks/main.yml | 55 ++++++++++++++++++++++++++++++++++++
 roles/toolbox/vars/main.yml  | 15 ++++++++++
 toolbox.yaml                 |  8 ++++++
 4 files changed, 95 insertions(+)
 create mode 100644 roles/toolbox/README.md
 create mode 100644 roles/toolbox/tasks/main.yml
 create mode 100644 roles/toolbox/vars/main.yml
 create mode 100644 toolbox.yaml

diff --git a/roles/toolbox/README.md b/roles/toolbox/README.md
new file mode 100644
index 0000000..aa50307
--- /dev/null
+++ b/roles/toolbox/README.md
@@ -0,0 +1,17 @@
+# Toolbox
+
+Install Podman and Toolbox.
+
+## Supported distros
+
+- Debian Buster
+- Debian Bullseye
+- Debian Sid
+- Ubuntu Bionic
+- Ubuntu Focal
+- ElementaryOS Hera
+- ElementaryOS Odin
+
+Debian Bullseye and Sid have Podman in the Debian repos, the rest don't so the
+Kubic repos are used. Toolbox isn't packaged yet, so
+[toolbox-build](https://git.shore.co.il/shore/toolbox-build) is used.
diff --git a/roles/toolbox/tasks/main.yml b/roles/toolbox/tasks/main.yml
new file mode 100644
index 0000000..5104f2d
--- /dev/null
+++ b/roles/toolbox/tasks/main.yml
@@ -0,0 +1,55 @@
+---
+- name: Install Podman from the Kubic repository
+  # yamllint disable-line rule:line-length
+  when: ansible_distribution_release is in ["buster", "bionic", "focal", "hera", "odin"]
+  block:
+    - name: Assertions
+      assert:
+        that:
+          - toolbox_podman_repo_base_url is defined
+
+    - name: APT install prerequisites
+      apt:
+        cache_valid_time: 3600
+        name:
+          - apt-transport-https
+        state: present
+        update_cache: true
+
+    - name: Add the Podman repo key
+      apt_key:
+        state: present
+        url: |-
+          {{ toolbox_podman_repo_base_url }}/Release.key
+
+    - name: Add the Podman repo
+      apt_repository:
+        repo: |-
+          deb {{ toolbox_podman_repo_base_url }} /
+        state: present
+        update_cache: true
+
+    - name: Install newer libseccomp2 from the backports repository
+      when: ansible_distribution_release == "buster"
+      apt:
+        cache_valid_time: 3600
+        default_release: buster-backports
+        name:
+          - libseccomp2
+        state: present
+        update_cache: true
+
+- name: APT install Podman
+  apt:
+    cache_valid_time: 3600
+    name:
+      - podman
+    state: present
+    update_cache: true
+
+- name: Install Toolbox
+  unarchive:
+    dest: /
+    remote_src: true
+    # yamllint disable-line rule:line-length
+    src: https://git.shore.co.il/shore/toolbox-build/-/jobs/artifacts/master/raw/toolbox.tar.gz?job=build
diff --git a/roles/toolbox/vars/main.yml b/roles/toolbox/vars/main.yml
new file mode 100644
index 0000000..a1257de
--- /dev/null
+++ b/roles/toolbox/vars/main.yml
@@ -0,0 +1,15 @@
+---
+# Hera and Odin are ElementaryOS releases based on Ubuntu Bionic and Focal
+# respectively.
+toolbox_podman_repo_base_url_mapping:
+  # yamllint disable-line rule:line-length
+  bionic: &bionic https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_18.04/
+  # yamllint disable-line rule:line-length
+  buster: https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/
+  # yamllint disable-line rule:line-length
+  focal: &focal https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/
+  hera: *bionic
+  odin: *focal
+
+toolbox_podman_repo_base_url: |-
+  {{ toolbox_podman_repo_base_url_mapping[ansible_distribution_release] }}
diff --git a/toolbox.yaml b/toolbox.yaml
new file mode 100644
index 0000000..933c425
--- /dev/null
+++ b/toolbox.yaml
@@ -0,0 +1,8 @@
+---
+- hosts:
+    - ns4
+    - localhost
+  roles:
+    - toolbox
+  become: true
+  become_user: root
-- 
GitLab