From 818f21d47e9dbba4f28f31144cdaf6f28c3d1e0c Mon Sep 17 00:00:00 2001
From: Klaus Frank <git@frank.fyi>
Date: Mon, 2 Nov 2020 20:30:01 +0100
Subject: [PATCH] Add ubuntu

---
 defaults/main.yml |  4 +---
 tasks/main.yml    | 42 ++++++++++++++++++++++++++++++++++--------
 vars/.gitkeep.yml |  0
 vars/main.yml     |  7 +++++++
 4 files changed, 42 insertions(+), 11 deletions(-)
 delete mode 100644 vars/.gitkeep.yml
 create mode 100644 vars/main.yml

diff --git a/defaults/main.yml b/defaults/main.yml
index d1e4f9f..9f1f28d 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1,3 +1 @@
-ansible_prerequirements_packages:
-  - python
-  - lsb-release
+minimal_ansible_version: 2.10.2
diff --git a/tasks/main.yml b/tasks/main.yml
index e12705c..41fe719 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,13 +1,39 @@
-- name: PREREQUIREMENTS | Update package index
-  raw: pacman -Sy
-  register: command_res
+- name: "Check local ansible version >= {{ minimal_ansible_version }}"
+  delegate_to: localhost
+  vars:
+    ansible_connection: local
+  run_once: true
+  assert:
+    msg: "Ansible must be {{ minimal_ansible_version }} or higher"
+    that:
+      - ansible_version.string is version(minimal_ansible_version, ">=")
+
+- name: PREREQUIREMENTS | Get os-release
+  raw: cat /etc/os-release
+  register: os_release
   changed_when: false
 
-- name: PREREQUIREMENTS | Install packages
-  raw: pacman --needed --noconfirm -S {{ item }}
-  with_items: '{{ ansible_prerequirements_packages }}'
-  register: command_res
-  changed_when: "'there is nothing to do' not in command_res.stdout"
+- name: PREREQUIREMENTS | ArchLinux
+  when: os_release.stdout.find("ID=arch") != -1
+  block:
+    - name: PREREQUIREMENTS | Update package index (pacman)
+      raw: pacman -Sy
+      changed_when: false
+    - name: PREREQUIREMENTS | Install packages (pacman)
+      raw: pacman --needed --noconfirm -S {{ archlinux_prerequirements_packages|join(" ") }}
+      register: command_res
+      changed_when: command_res.stdout.find('there is nothing to do') == -1
+
+- name: PREREQUIREMENTS | Ubuntu
+  when: os_release.stdout.find("ID=ubuntu")
+  block:
+    - name: PREREQUIREMENTS | Update package index (apt)
+      raw: apt update
+      changed_when: false
+    - name: PREREQUIREMENTS | Install packages (apt)
+      raw: apt install -y {{ ubuntu_prerequirements_packages|join(" ") }}
+      register: command_res
+      changed_when: command_res.stdout.find('0 upgraded, 0 newly installed, 0 to remove and ') == -1
 
 - name: PREREQUIREMENTS | Gather facts
   setup: null
diff --git a/vars/.gitkeep.yml b/vars/.gitkeep.yml
deleted file mode 100644
index e69de29..0000000
diff --git a/vars/main.yml b/vars/main.yml
new file mode 100644
index 0000000..f5e267f
--- /dev/null
+++ b/vars/main.yml
@@ -0,0 +1,7 @@
+archlinux_prerequirements_packages:
+  - python
+  - lsb-release
+
+ubuntu_prerequirements_packages:
+  - python3
+  - lsb-release
-- 
GitLab