diff --git a/apps/registry/config.yml b/apps/registry/config.yml index 10f2013..82353c0 100644 --- a/apps/registry/config.yml +++ b/apps/registry/config.yml @@ -18,9 +18,6 @@ http: draintimeout: 60s headers: X-Content-Type-Options: [nosniff] - # tls: - # certificate: /etc/certs/vps2.nilstrieb.dev.crt - # key: /etc/certs/vps2.nilstrieb.dev.key auth: htpasswd: realm: nilstrieb-registry diff --git a/inventory.yml b/inventory.yml index 199c724..bec3c73 100644 --- a/inventory.yml +++ b/inventory.yml @@ -1,6 +1,6 @@ vps: hosts: - # vps1: - # ansible_host: vps1.nilstrieb.dev + vps1: + ansible_host: vps1.nilstrieb.dev vps2: ansible_host: vps2.nilstrieb.dev diff --git a/playbooks/all.yml b/playbooks/all.yml new file mode 100644 index 0000000..f1f8ba7 --- /dev/null +++ b/playbooks/all.yml @@ -0,0 +1,7 @@ +--- +- name: Generic setup + ansible.builtin.import_playbook: ./basic-setup.yml +- name: VPS 1 + ansible.builtin.import_playbook: ./vps1.yml +- name: VPS 2 + ansible.builtin.import_playbook: ./vps2.yml diff --git a/playbooks/basic-setup.yml b/playbooks/basic-setup.yml index 19366b8..0529419 100644 --- a/playbooks/basic-setup.yml +++ b/playbooks/basic-setup.yml @@ -35,7 +35,7 @@ ansible.builtin.shell: | set -euo pipefail - sudo rm /usr/share/keyrings/caddy-stable-archive-keyring.gpg + sudo rm -f /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list @@ -56,16 +56,16 @@ ansible.builtin.file: path: /var/www/html/debug state: directory - mode: u=rwx,g=rx,o=rx + mode: "u=rwx,g=rx,o=rx" - name: Create debug webserver file ansible.builtin.copy: dest: /var/www/html/debug/index.html src: "../debug.html" - mode: u=rw,g=r,o=r + mode: "u=rw,g=r,o=r" - name: Copy Caddyfile ansible.builtin.copy: dest: /etc/caddy/Caddyfile - src: "../vps2/Caddyfile" # TODO: Choose the right caddyfile depending on the server. + src: "../{{ inventory_hostname }}/Caddyfile" # TODO: Choose the right caddyfile depending on the server. mode: "u=rw,g=r,o=r" notify: - "Caddyfile changed" @@ -77,7 +77,7 @@ - name: Copy docker-compose ansible.builtin.copy: dest: /apps/docker-compose.yml - src: "../vps2/docker-compose.yml" # TODO: choose the right directory + src: "../{{ inventory_hostname }}/docker-compose.yml" # TODO: choose the right directory mode: "u=r,g=r,o=r" handlers: - name: "Caddyfile changed" diff --git a/playbooks/vps1.yml b/playbooks/vps1.yml new file mode 100644 index 0000000..0543aa4 --- /dev/null +++ b/playbooks/vps1.yml @@ -0,0 +1,14 @@ +--- +- name: VPS 1 setup + hosts: vps1 + gather_facts: false + tasks: + ##### + # END: docker compose up! + ##### + # We want this to be last so that all app-specific config has been done. + - name: Docker compose up! 🚀 + community.docker.docker_compose: + project_src: /apps + state: present + restarted: true diff --git a/playbooks/vps2.yml b/playbooks/vps2.yml index eb5e443..6ddca89 100644 --- a/playbooks/vps2.yml +++ b/playbooks/vps2.yml @@ -1,6 +1,4 @@ --- -- name: Generic setup - ansible.builtin.import_playbook: ./basic-setup.yml - name: VPS 2 setup hosts: vps2 gather_facts: false diff --git a/run.sh b/run.sh index b13699f..52be449 100755 --- a/run.sh +++ b/run.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -ansible-playbook -i inventory.yml playbooks/vps2.yml -u root +ansible-playbook -i inventory.yml playbooks/all.yml -u root diff --git a/vps1/Caddyfile b/vps1/Caddyfile new file mode 100644 index 0000000..d26f23c --- /dev/null +++ b/vps1/Caddyfile @@ -0,0 +1,34 @@ +{ + email nilstrieb@gmail.com +} + +# https://gist.github.com/ryanburnette/d13575c9ced201e73f8169d3a793c1a3 +(cors) { + @cors_preflight{args.0} method OPTIONS + @cors{args.0} header Origin {args.0} + + handle @cors_preflight{args.0} { + header { + Access-Control-Allow-Origin "{args.0}" + Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" + Access-Control-Allow-Credentials "false" + Access-Control-Allow-Headers "${args.1}" + Access-Control-Max-Age "86400" + defer + } + respond "" 204 + } + + handle @cors{args.0} { + header { + Access-Control-Allow-Origin "{args.0}" + Access-Control-Expose-Headers * + defer + } + } +} + +vps1.nilstrieb.dev { + root * /var/www/html/debug + file_server +} diff --git a/vps1/README.md b/vps1/README.md new file mode 100644 index 0000000..a788e3a --- /dev/null +++ b/vps1/README.md @@ -0,0 +1 @@ +## ports diff --git a/vps1/docker-compose.yml b/vps1/docker-compose.yml new file mode 100644 index 0000000..2842721 --- /dev/null +++ b/vps1/docker-compose.yml @@ -0,0 +1,7 @@ +version: "3.8" +services: + dummy: + container_name: dummy + image: alpine:latest +networks: + internal: