Track the nginx-menu playbook as it stands
It has been serving three menu Sites from an untracked directory, so today's state was not reproducible or revertible.
This commit is contained in:
1 parent
b7c5997274
commit
e54dd127ed
8 files changed
+162
No files matched your search
@@ -0,0 +1,24 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name {{ host }};
|
||||||
|
|
||||||
|
location /bar {
|
||||||
|
root /var/lib/menu.greatbear.in;
|
||||||
|
index index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /food {
|
||||||
|
root /var/lib/menu.greatbear.in;
|
||||||
|
index index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /delivery {
|
||||||
|
root /var/lib/menu.greatbear.in;
|
||||||
|
index index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /qr {
|
||||||
|
root /var/lib/menu.greatbear.in;
|
||||||
|
index index.html;
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
become: true
|
||||||
|
vars_files:
|
||||||
|
- vars/default.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- network
|
||||||
|
- nginx
|
||||||
|
- caddy
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# Docker on Ubuntu 18.04
|
||||||
|
|
||||||
|
This playbook will install Docker an Ubuntu 18.04 machine, as explained in the guide on
|
||||||
|
[How to Use Ansible to Install and Set Up Docker on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-use-ansible-to-install-and-set-up-docker-on-ubuntu-18-04).
|
||||||
|
A number of containers will be created with the options specified in the `vars/default.yml` variable file.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
- `create_containers`: number of containers to create.
|
||||||
|
- `default_container_name`: default name for new containers.
|
||||||
|
- `default_container_image`: default image for new containers.
|
||||||
|
- `default_container_command`: default command to run on new containers.
|
||||||
|
|
||||||
|
|
||||||
|
## Running this Playbook
|
||||||
|
|
||||||
|
Quick Steps:
|
||||||
|
|
||||||
|
### 1. Obtain the playbook
|
||||||
|
```shell
|
||||||
|
git clone https://github.com/do-community/ansible-playbooks.git
|
||||||
|
cd ansible-playbooks/docker_ubuntu1804
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Customize Options
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nano vars/default.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
```yml
|
||||||
|
#vars/default.yml
|
||||||
|
---
|
||||||
|
create_containers: 4
|
||||||
|
default_container_name: docker
|
||||||
|
default_container_image: ubuntu
|
||||||
|
default_container_command: sleep 1d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Run the Playbook
|
||||||
|
|
||||||
|
```command
|
||||||
|
ansible-playbook -l [target] -i [inventory file] -u [remote user] playbook.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information on how to run this Ansible setup, please check this guide: [How to Use Ansible to Install and Set Up Docker on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-use-ansible-to-install-and-set-up-docker-on-ubuntu-18-04).
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
# Handlers for Caddy role
|
||||||
|
- name: Reload Caddy configuration
|
||||||
|
ansible.builtin.command: "docker exec -w /etc/caddy {{ caddy_container }} caddy reload"
|
||||||
|
listen: "Reload Caddy"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
- name: Read current Caddyfile
|
||||||
|
ansible.builtin.slurp:
|
||||||
|
path: "{{ caddyfile_path }}"
|
||||||
|
register: caddyfile_raw
|
||||||
|
|
||||||
|
- name: Decode Caddyfile content
|
||||||
|
set_fact:
|
||||||
|
caddyfile_content: "{{ caddyfile_raw['content'] | b64decode }}"
|
||||||
|
|
||||||
|
- name: Check if snippet already exists
|
||||||
|
set_fact:
|
||||||
|
snippet_present: "{{ snippet_block in caddyfile_content }}"
|
||||||
|
|
||||||
|
- name: Add snippet if missing
|
||||||
|
ansible.builtin.blockinfile:
|
||||||
|
path: "{{ caddyfile_path }}"
|
||||||
|
marker: "# {mark} Ansible managed Caddy snippet for {{ host }}"
|
||||||
|
block: "{{ snippet_block }}"
|
||||||
|
create: yes
|
||||||
|
when: not snippet_present
|
||||||
|
notify: "Reload Caddy"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- name: "Ensure {{ docker_container }} Docker network exists"
|
||||||
|
docker_network:
|
||||||
|
name: "{{ docker_network }}"
|
||||||
|
state: present
|
||||||
|
connected:
|
||||||
|
- "{{ caddy_container }}"
|
||||||
|
appends: yes
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
# Tasks for Nginx role to serve static files
|
||||||
|
- name: Pull Nginx image
|
||||||
|
docker_image:
|
||||||
|
name: "{{ image_name }}"
|
||||||
|
source: pull
|
||||||
|
force_source: yes
|
||||||
|
|
||||||
|
- name: Ensure Host Directory exist
|
||||||
|
file:
|
||||||
|
path: "{{ host_directory }}"
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
# - name: Upload the Nginx config file
|
||||||
|
# template:
|
||||||
|
# src: "files/nginx.conf.j2"
|
||||||
|
# dest: "{{ host_directory }}/nginx.conf"
|
||||||
|
|
||||||
|
- name: Create caddy container
|
||||||
|
docker_container:
|
||||||
|
name: "{{ docker_container }}"
|
||||||
|
image: "{{ image_name }}"
|
||||||
|
state: started
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
volumes:
|
||||||
|
# - "{{ host_directory }}/nginx.conf:/etc/nginx/nginx.conf:ro"
|
||||||
|
- "{{ host_directory }}:/usr/share/nginx/html:ro"
|
||||||
|
networks:
|
||||||
|
- name: "{{ docker_network }}"
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: hngmohali.com
|
||||||
|
host: "menu.{{ title }}"
|
||||||
|
|
||||||
|
docker_container: "nginx-{{ host }}"
|
||||||
|
image_name: nginx:alpine
|
||||||
|
|
||||||
|
caddy_container: caddy
|
||||||
|
docker_network: "{{ host }}_net"
|
||||||
|
|
||||||
|
caddyfile_path: /var/lib/caddy/conf/Caddyfile
|
||||||
|
snippet_block: |
|
||||||
|
{{ host }} {
|
||||||
|
reverse_proxy {{ docker_container }}:80
|
||||||
|
}
|
||||||
|
|
||||||
|
host_directory: "/var/lib/{{ host }}"
|
||||||
Reference in new issue
Block a user