From c057e5f8d42998ac37ff4046a82341f8897b73bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carl=20Lundstr=C3=B6m?= <carl.lundstrom@ess.eu>
Date: Wed, 9 Oct 2024 14:15:58 +0000
Subject: [PATCH] INFRA-10624 Adapt nginx role for Debian/Ubuntu

---
 meta/main.yml                          |  3 +++
 molecule/default/molecule.yml          | 18 ++++++++++++++++++
 molecule/default/prepare.yml           | 13 +++++++++++--
 molecule/default/tests/test_default.py |  4 +++-
 tasks/main.yml                         | 11 ++++++-----
 templates/nginx.conf.j2                |  2 ++
 vars/{RedHat.yml => debian.yml}        |  2 +-
 vars/redhat.yml                        | 10 ++++++++++
 8 files changed, 54 insertions(+), 9 deletions(-)
 rename vars/{RedHat.yml => debian.yml} (92%)
 create mode 100644 vars/redhat.yml

diff --git a/meta/main.yml b/meta/main.yml
index 6656480..cd123b8 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -9,5 +9,8 @@ galaxy_info:
     - name: CentOS
       versions:
         - 7
+    - name: Ubuntu
+      versions:
+        - jammy
 dependencies:
   - role: ics-ans-role-repository
diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml
index aceca12..711f698 100644
--- a/molecule/default/molecule.yml
+++ b/molecule/default/molecule.yml
@@ -17,6 +17,10 @@ provisioner:
         nginx_vhosts:
           - server_name: "ics-ans-role-nginx-default"
             root: "/var/www/test"
+      ics-ans-role-nginx-ubn:
+        nginx_vhosts:
+          - server_name: "ics-ans-role-nginx-ubn"
+            root: "/var/www/html"
 scenario:
   name: default
 verifier:
@@ -36,3 +40,17 @@ platforms:
     command: /sbin/init
     groups:
       - molecule_group
+  - name: ics-ans-role-nginx-ubn
+    image: registry.esss.lu.se/ics-docker/ubuntu-systemd:22.04
+    # SYS_ADMIN required to run systemctl
+    capabilities:
+      - SYS_ADMIN
+    volumes:
+      - /sys/fs/cgroup:/sys/fs/cgroup
+    tmpfs:
+      - /run
+      - /tmp
+    command: /sbin/init
+    privileged: true
+    groups:
+      - molecule_group
diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml
index 5358b3b..7dfbdb2 100644
--- a/molecule/default/prepare.yml
+++ b/molecule/default/prepare.yml
@@ -1,5 +1,14 @@
 ---
 - name: Prepare
   hosts: all
-  gather_facts: false
-  tasks: []
+  gather_facts: true
+
+  roles:
+    - ics-ans-role-repository
+
+  tasks:
+    - name: Ensure required packages are installed.
+      package:
+        name:
+          - 'curl'
+        state: present
diff --git a/molecule/default/tests/test_default.py b/molecule/default/tests/test_default.py
index d4c574b..86c9d25 100644
--- a/molecule/default/tests/test_default.py
+++ b/molecule/default/tests/test_default.py
@@ -7,7 +7,9 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
 
 
 def test_directory_exists(host):
-    assert host.file("/var/www/test").exists
+    file1 = host.file("/var/www/test")
+    file2 = host.file("/var/www/html")
+    assert file1.exists or file2.exists
 
 
 def test_nginx_access(host):
diff --git a/tasks/main.yml b/tasks/main.yml
index c2d2a76..5b83975 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,17 +1,18 @@
 ---
 # Variable setup.
 - name: Include OS-specific variables.
-  include_vars: "{{ ansible_os_family }}.yml"
+  include_vars: "{{ ansible_os_family | lower }}.yml"
 
 - name: Define nginx_user.
   set_fact:
     nginx_user: "{{ __nginx_user }}"
-  when: nginx_user is not defined
+  when: nginx_user is not defined and ansible_os_family | lower == 'redhat'
 
 # Setup/install tasks.
-- name: Ensure nginx is installed.
+- name: Ensure required packages are installed.
   package:
-    name: "{{ nginx_package_name }}"
+    name:
+      - "{{ nginx_package_name }}"
     state: present
 
 # Vhost configuration.
@@ -38,5 +39,5 @@
   file:
     path: "{{ item.root }}"
     state: directory
-    owner: nginx
+    owner: "{{ nginx_owner }}"
   loop: "{{ nginx_vhosts }}"
diff --git a/templates/nginx.conf.j2 b/templates/nginx.conf.j2
index 7cdec60..7026112 100644
--- a/templates/nginx.conf.j2
+++ b/templates/nginx.conf.j2
@@ -1,4 +1,6 @@
+{% if nginx_user is defined %}
 user  {{ nginx_user }};
+{% endif %}
 
 error_log  {{ nginx_error_log }};
 pid        {{ nginx_pidfile }};
diff --git a/vars/RedHat.yml b/vars/debian.yml
similarity index 92%
rename from vars/RedHat.yml
rename to vars/debian.yml
index 0138f8d..5d3cbbf 100644
--- a/vars/RedHat.yml
+++ b/vars/debian.yml
@@ -6,4 +6,4 @@ nginx_mime_file_path: /etc/nginx/mime.types
 nginx_pidfile: /var/run/nginx.pid
 nginx_vhost_path: /etc/nginx/conf.d
 nginx_default_vhost_path: /etc/nginx/conf.d/default.conf
-__nginx_user: "nginx"
+nginx_owner: root
diff --git a/vars/redhat.yml b/vars/redhat.yml
new file mode 100644
index 0000000..e1b66d5
--- /dev/null
+++ b/vars/redhat.yml
@@ -0,0 +1,10 @@
+---
+root_group: root
+nginx_conf_path: /etc/nginx/conf.d
+nginx_conf_file_path: /etc/nginx/nginx.conf
+nginx_mime_file_path: /etc/nginx/mime.types
+nginx_pidfile: /var/run/nginx.pid
+nginx_vhost_path: /etc/nginx/conf.d
+nginx_default_vhost_path: /etc/nginx/conf.d/default.conf
+nginx_owner: "{{ __nginx_user }}"
+__nginx_user: "nginx"
-- 
GitLab