fix ansible-lint errors
This commit is contained in:
37
roles/nginx_docker/README.md
Normal file
37
roles/nginx_docker/README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
ansible-nginx-docker
|
||||||
|
=========
|
||||||
|
|
||||||
|
Deploy NGINX as a Docker container
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Docker
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
Soft dependency on `genlab.docker_ubuntu` (any means of installing Docker on the managed machine should be fine).
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
roles:
|
||||||
|
- role: genlab.nginx_docker
|
||||||
|
```
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
BSD
|
||||||
|
|
||||||
|
Author Information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
corvus-migratorius@proton.me
|
||||||
4
roles/nginx_docker/defaults/main.yml
Normal file
4
roles/nginx_docker/defaults/main.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
nginx_docker_project_path: "/root/nginx-docker"
|
||||||
|
nginx_docker_image_tag: "alpine3.19"
|
||||||
|
nginx_docker_custom_volumes: []
|
||||||
1
roles/nginx_docker/handlers/main.yml
Normal file
1
roles/nginx_docker/handlers/main.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
---
|
||||||
17
roles/nginx_docker/meta/main.yml
Normal file
17
roles/nginx_docker/meta/main.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
role_name: "nginx_docker"
|
||||||
|
namespace: genlab
|
||||||
|
author: "Alexander Gorelyshev"
|
||||||
|
company: "Genlab, LLC"
|
||||||
|
description: ""
|
||||||
|
license: "MIT"
|
||||||
|
min_ansible_version: "2.1"
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: "Ubuntu"
|
||||||
|
versions: ["jammy", "noble"]
|
||||||
|
|
||||||
|
galaxy_tags: []
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
10
roles/nginx_docker/molecule/custom_volumes/converge.yml
Normal file
10
roles/nginx_docker/molecule/custom_volumes/converge.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: genlab.common.docker_ubuntu
|
||||||
|
|
||||||
|
- role: genlab.common.nginx_docker
|
||||||
|
site_config: "nginx/test.conf"
|
||||||
|
nginx_docker_custom_volumes:
|
||||||
|
- {from: /mnt, to: /mnt, mode: ro}
|
||||||
27
roles/nginx_docker/molecule/custom_volumes/molecule.yml
Normal file
27
roles/nginx_docker/molecule/custom_volumes/molecule.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ubuntu
|
||||||
|
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
|
||||||
|
pre_build_image: true
|
||||||
|
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||||
|
cgroupns_mode: host
|
||||||
|
privileged: true
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint .
|
||||||
19
roles/nginx_docker/molecule/custom_volumes/nginx/test.conf
Normal file
19
roles/nginx_docker/molecule/custom_volumes/nginx/test.conf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
# listen [::]:80;
|
||||||
|
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/host.access.log main;
|
||||||
|
|
||||||
|
location /health/startup {
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
return 200 'healthy';
|
||||||
|
}
|
||||||
|
|
||||||
|
## Redirect server error pages to the static page /50x.html
|
||||||
|
# error_page 500 502 503 504 /50x.html;
|
||||||
|
# location = /50x.html {
|
||||||
|
# root /usr/share/nginx/html;
|
||||||
|
# }
|
||||||
|
}
|
||||||
1
roles/nginx_docker/molecule/custom_volumes/test.txt
Normal file
1
roles/nginx_docker/molecule/custom_volumes/test.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
this is a test
|
||||||
23
roles/nginx_docker/molecule/custom_volumes/verify.yml
Normal file
23
roles/nginx_docker/molecule/custom_volumes/verify.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
any_errors_fatal: true
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: "Copy test file"
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: ./test.txt
|
||||||
|
dest: /mnt/test.txt
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0660"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: "Verify custom directory was mounted inside container successfully"
|
||||||
|
register: nginx_docker_this
|
||||||
|
failed_when: nginx_docker_this.stdout != 'this is a test'
|
||||||
|
changed_when: false
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: nginx
|
||||||
|
command: cat /mnt/test.txt
|
||||||
8
roles/nginx_docker/molecule/default/converge.yml
Normal file
8
roles/nginx_docker/molecule/default/converge.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: genlab.common.docker_ubuntu
|
||||||
|
|
||||||
|
- role: genlab.common.nginx_docker
|
||||||
|
site_config: "nginx/test.conf"
|
||||||
27
roles/nginx_docker/molecule/default/molecule.yml
Normal file
27
roles/nginx_docker/molecule/default/molecule.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ubuntu
|
||||||
|
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
|
||||||
|
pre_build_image: true
|
||||||
|
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||||
|
cgroupns_mode: host
|
||||||
|
privileged: true
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint .
|
||||||
19
roles/nginx_docker/molecule/default/nginx/test.conf
Normal file
19
roles/nginx_docker/molecule/default/nginx/test.conf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
# listen [::]:80;
|
||||||
|
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/host.access.log main;
|
||||||
|
|
||||||
|
location /health/startup {
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
return 200 'healthy';
|
||||||
|
}
|
||||||
|
|
||||||
|
## Redirect server error pages to the static page /50x.html
|
||||||
|
# error_page 500 502 503 504 /50x.html;
|
||||||
|
# location = /50x.html {
|
||||||
|
# root /usr/share/nginx/html;
|
||||||
|
# }
|
||||||
|
}
|
||||||
14
roles/nginx_docker/molecule/default/verify.yml
Normal file
14
roles/nginx_docker/molecule/default/verify.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
any_errors_fatal: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: "Make an HTTP query"
|
||||||
|
register: nginx_docker_this
|
||||||
|
failed_when: nginx_docker_this is failed or 'healthy' not in nginx_docker_this.content
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://localhost:80/health/startup"
|
||||||
|
method: "GET"
|
||||||
|
return_content: true
|
||||||
39
roles/nginx_docker/tasks/main.yml
Normal file
39
roles/nginx_docker/tasks/main.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
- name: "Create project directory"
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ nginx_docker_project_path }}/conf.d/"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0660"
|
||||||
|
|
||||||
|
- name: "Template project stack"
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "docker-compose.yml.j2"
|
||||||
|
dest: "{{ nginx_docker_project_path }}/docker-compose.yml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0660"
|
||||||
|
|
||||||
|
- name: "Push Nginx configuration file"
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ site_config }}"
|
||||||
|
dest: "{{ nginx_docker_project_path }}/conf.d/{{ site_config | basename }}"
|
||||||
|
owner: root
|
||||||
|
group: www-data
|
||||||
|
mode: "0660"
|
||||||
|
|
||||||
|
- name: "Build and start the Compose stack"
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
tls_hostname: localhost
|
||||||
|
project_src: "{{ nginx_docker_project_path }}"
|
||||||
|
files:
|
||||||
|
- "docker-compose.yml"
|
||||||
|
build: always
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: "Reload Nginx configuration"
|
||||||
|
changed_when: false
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: nginx
|
||||||
|
command: "nginx -s reload"
|
||||||
15
roles/nginx_docker/templates/docker-compose.yml.j2
Normal file
15
roles/nginx_docker/templates/docker-compose.yml.j2
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
image: nginx:{{ nginx_docker_image_tag }}
|
||||||
|
container_name: nginx
|
||||||
|
hostname: nginx
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- "{{ nginx_docker_project_path }}/conf.d/:/etc/nginx/conf.d/:ro"
|
||||||
|
- "/var/log/nginx/:/var/log/nginx/:rw"
|
||||||
|
{% for v in nginx_docker_custom_volumes %}
|
||||||
|
- {{ v.from}}:{{v.to}}:{{v.mode | default('rw')}}
|
||||||
|
{% endfor %}
|
||||||
1
roles/nginx_docker/vars/main.yml
Normal file
1
roles/nginx_docker/vars/main.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
---
|
||||||
Reference in New Issue
Block a user