From cd31d8b6afdd4f7e793fb04ca5bad6bbef8c2a76 Mon Sep 17 00:00:00 2001 From: Johanna Dorothea Reichmann Date: Sun, 16 Jul 2023 19:01:55 +0200 Subject: [PATCH] feat(nginx): add ansible role --- roles/nginx/defaults/main.yml | 33 +++++++++++++++++++++++++++++++ roles/nginx/handlers/main.yml | 8 ++++++++ roles/nginx/tasks/main.yml | 37 +++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 roles/nginx/defaults/main.yml create mode 100644 roles/nginx/handlers/main.yml create mode 100644 roles/nginx/tasks/main.yml diff --git a/roles/nginx/defaults/main.yml b/roles/nginx/defaults/main.yml new file mode 100644 index 0000000..1c7ef7e --- /dev/null +++ b/roles/nginx/defaults/main.yml @@ -0,0 +1,33 @@ +--- + +nginx_version: "1.25.1" +nginx_flavour: alpine +nginx_base_path: /opt/nginx +nginx_config_file: "{{ nginx_base_path }}/nginx.conf" + +nginx_container_name: nginx +nginx_container_image_reference: >- + {{ + nginx_container_image_repository + + ':' + (nginx_container_image_tag + | default(nginx_version + + (('-' + nginx_flavour) if nginx_flavour is defined else ''), true)) + }} +nginx_container_image_repository: >- + {{ + ( + container_registries[nginx_container_image_registry] + | default(nginx_container_image_registry) + ) + + '/' + + nginx_container_image_namespace | default('') + + nginx_container_image_name + }} +nginx_container_image_registry: "docker.io" +nginx_container_image_name: "nginx" +nginx_container_image_tag: ~ + +nginx_container_restart_policy: "unless-stopped" +nginx_container_volumes: + - "{{ nginx_config_file }}:/etc/nginx/conf.d/nginx.conf:ro" + diff --git a/roles/nginx/handlers/main.yml b/roles/nginx/handlers/main.yml new file mode 100644 index 0000000..1ad5e3c --- /dev/null +++ b/roles/nginx/handlers/main.yml @@ -0,0 +1,8 @@ +--- + +- name: Ensure nginx container '{{ nginx_container_name }}' is restarted + community.docker.docker_container: + name: "{{ nginx_container_name }}" + state: started + restart: true + listen: restart-nginx diff --git a/roles/nginx/tasks/main.yml b/roles/nginx/tasks/main.yml new file mode 100644 index 0000000..6a5b98d --- /dev/null +++ b/roles/nginx/tasks/main.yml @@ -0,0 +1,37 @@ +--- + +- name: Ensure base path '{{ nginx_base_path }}' exists + ansible.builtin.file: + path: "{{ nginx_base_path }}" + state: directory + mode: 0755 + +- name: Ensure nginx config file is templated + ansible.builtin.copy: + dest: "{{ nginx_config_file }}" + content: "{{ nginx_config }}" + mode: 0640 + notify: + - restart-nginx + +- name: Ensure docker container image is present + community.docker.docker_image: + name: "{{ nginx_container_image_reference }}" + state: present + source: pull + force_source: "{{ nginx_container_image_tag is defined and nginx_container_image_tag | string != '' }}" + +- name: Ensure docker container '{{ nginx_container_name }}' is running + community.docker.docker_container: + name: "{{ nginx_container_name }}" + image: "{{ nginx_container_image_reference }}" + env: "{{ nginx_container_env | default(omit, true) }}" + user: "{{ nginx_container_user | default(omit, true) }}" + ports: "{{ nginx_container_ports | default(omit, true) }}" + labels: "{{ nginx_container_labels | default(omit, true) }}" + volumes: "{{ nginx_container_volumes | default(omit, true) }}" + etc_hosts: "{{ nginx_container_etc_hosts | default(omit, true) }}" + networks: "{{ nginx_container_networks | default(omit, true) }}" + purge_networks: "{{ nginx_container_purge_networks | default(omit, true) }}" + restart_policy: "{{ nginx_container_restart_policy }}" + state: started