From 9bbf0a37c030545cdfa23ce62cdbcaf777f2e8b4 Mon Sep 17 00:00:00 2001 From: Petar Cubela Date: Wed, 4 Dec 2024 15:38:14 +0100 Subject: [PATCH] added nginx role --- roles/nginx/.vagrant/rgloader/loader.rb | 12 ++++++++ roles/nginx/defaults/main.yml | 11 +++++++ roles/nginx/handlers/main.yml | 4 +++ roles/nginx/tasks/link.yml | 9 ++++++ roles/nginx/tasks/main.yml | 9 ++++++ roles/nginx/tasks/nginx.yml | 10 +++++++ roles/nginx/tasks/template.yml | 39 +++++++++++++++++++++++++ roles/nginx/templates/hostname.j2 | 1 + roles/nginx/templates/index.html.j2 | 4 +++ roles/nginx/templates/nginx-config.j2 | 10 +++++++ 10 files changed, 109 insertions(+) create mode 100644 roles/nginx/.vagrant/rgloader/loader.rb create mode 100644 roles/nginx/defaults/main.yml create mode 100644 roles/nginx/handlers/main.yml create mode 100644 roles/nginx/tasks/link.yml create mode 100644 roles/nginx/tasks/main.yml create mode 100644 roles/nginx/tasks/nginx.yml create mode 100644 roles/nginx/tasks/template.yml create mode 100644 roles/nginx/templates/hostname.j2 create mode 100644 roles/nginx/templates/index.html.j2 create mode 100644 roles/nginx/templates/nginx-config.j2 diff --git a/roles/nginx/.vagrant/rgloader/loader.rb b/roles/nginx/.vagrant/rgloader/loader.rb new file mode 100644 index 0000000..b6c81bf --- /dev/null +++ b/roles/nginx/.vagrant/rgloader/loader.rb @@ -0,0 +1,12 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: BUSL-1.1 + +# This file loads the proper rgloader/loader.rb file that comes packaged +# with Vagrant so that encoded files can properly run with Vagrant. + +if ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"] + require File.expand_path( + "rgloader/loader", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]) +else + raise "Encoded files can't be read outside of the Vagrant installer." +end diff --git a/roles/nginx/defaults/main.yml b/roles/nginx/defaults/main.yml new file mode 100644 index 0000000..8f72696 --- /dev/null +++ b/roles/nginx/defaults/main.yml @@ -0,0 +1,11 @@ +# Need to be in var file +#domain_name: kazcynski.duckdns.org +#nginx_root: kazcynski # /var/www/"{{ nginx_root }}" is the folder where the website files reside + +packages: + - nginx + +nginx_root_path: /var/www + +nginx_config_dir: /etc/nginx/sites-available +nginx_sites_enabled: /etc/nginx/sites-enabled diff --git a/roles/nginx/handlers/main.yml b/roles/nginx/handlers/main.yml new file mode 100644 index 0000000..32b5477 --- /dev/null +++ b/roles/nginx/handlers/main.yml @@ -0,0 +1,4 @@ +- name: Restart nginx + service: + name: nginx + state: reloaded diff --git a/roles/nginx/tasks/link.yml b/roles/nginx/tasks/link.yml new file mode 100644 index 0000000..c75beea --- /dev/null +++ b/roles/nginx/tasks/link.yml @@ -0,0 +1,9 @@ +--- +- name: link nginx config to sites-enabled dir + ansible.builtin.file: + src: "{{ nginx_config_dir }}/{{ domain_name }}" + dest: "{{ nginx_sites_enabled }}/{{ domain_name }}" + owner: root + group: root + state: link + notify: Restart nginx diff --git a/roles/nginx/tasks/main.yml b/roles/nginx/tasks/main.yml new file mode 100644 index 0000000..a46a99f --- /dev/null +++ b/roles/nginx/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- name: Install and enable nginx + include_tasks: nginx.yml + +- name: Template config files into place + include_tasks: template.yml + +- name: Enable site by linking to the dir "{{ nginx_sites_enabled }}" + include_tasks: link.yml diff --git a/roles/nginx/tasks/nginx.yml b/roles/nginx/tasks/nginx.yml new file mode 100644 index 0000000..4146e1d --- /dev/null +++ b/roles/nginx/tasks/nginx.yml @@ -0,0 +1,10 @@ +- name: Install nginx + package: + name: nginx + state: present + +- name: Enable nginx + service: + name: nginx + state: started + enabled: yes diff --git a/roles/nginx/tasks/template.yml b/roles/nginx/tasks/template.yml new file mode 100644 index 0000000..5cff233 --- /dev/null +++ b/roles/nginx/tasks/template.yml @@ -0,0 +1,39 @@ +--- +- name: ensure target dirs exists + file: + path: "{{ item }}" + state: directory + owner: root + group: root + loop: + - "{{ nginx_config_dir }}" + +- name: ensure target dirs exists + file: + path: "{{ item }}" + state: directory + owner: "{{ main_username }}" + group: root + loop: + - "{{ nginx_root_path }}/{{ nginx_root }}" + +- name: change hostname to domain_name + template: + src: ../templates/hostname.j2 + dest: "/etc/hostname" + owner: root + group: root + +- name: write homepage nginx config file + template: + src: ../templates/nginx-config.j2 + dest: "{{ nginx_config_dir }}/{{ domain_name }}" + owner: root + group: root + +- name: write simple homepage index.html file + template: + src: ../templates/index.html.j2 + dest: "{{ nginx_root_path }}/{{ nginx_root }}/index.html" + owner: "{{ main_username }}" + group: root diff --git a/roles/nginx/templates/hostname.j2 b/roles/nginx/templates/hostname.j2 new file mode 100644 index 0000000..ae42b8e --- /dev/null +++ b/roles/nginx/templates/hostname.j2 @@ -0,0 +1 @@ +"{{ domain_name }}" diff --git a/roles/nginx/templates/index.html.j2 b/roles/nginx/templates/index.html.j2 new file mode 100644 index 0000000..dfd6569 --- /dev/null +++ b/roles/nginx/templates/index.html.j2 @@ -0,0 +1,4 @@ + +

Congratulations!

+

The web server is running!

+

And serving this webpage on port 80.

diff --git a/roles/nginx/templates/nginx-config.j2 b/roles/nginx/templates/nginx-config.j2 new file mode 100644 index 0000000..d7b02c3 --- /dev/null +++ b/roles/nginx/templates/nginx-config.j2 @@ -0,0 +1,10 @@ +server { + listen 80 ; + listen [::]:80 ; + server_name {{ domain_name }} ; + root /var/www/{{ nginx_root }} ; + index index.html index.htm index.nginx-debian.html ; + location / { + try_files $uri $uri/ =404 ; + } +}