Initialize ansible and docker web stuff

This commit is contained in:
Paul Brinkmeier 2021-11-11 18:12:47 +01:00
commit 0e9e7732b2
14 changed files with 148 additions and 0 deletions

22
README.md Normal file
View File

@ -0,0 +1,22 @@
# infrastructure
## pbrinkmeier.de
| Hostname | `h2954114` |
| Domains | `{wiki.,codi.}pbrinkmeier.de`, `tichy.click`, `h2954114.stratoserver.net` |
### Personal Website
[pbrinkmeier.de](https://pbrinkmeier.de)
### Personal Wiki
[wiki.pbrinkmeier.de](https://wiki.pbrinkmeier.de)
### Collaborative Markdown Editing
[codi.pbrinkmeier.de](https://codi.pbrinkmeier.de)
### Tichy-Clicker
[tichy.click](https://tichy.click)

1
ansible/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
venv

14
ansible/README.md Normal file
View File

@ -0,0 +1,14 @@
# ansible
## Ansible Control Node Setup
In a Python 3 environment (perhaps a venv):
```
pip install -r requirements.txt
```
## `misc.yaml`
Server for miscellaneous stuff, e.g. the website.
Expects to have a user `andi` who can `sudo`.

2
ansible/ansible.cfg Normal file
View File

@ -0,0 +1,2 @@
[defaults]
inventory = ./inventory

View File

@ -0,0 +1,3 @@
---
ansible_user: andi
ansible_python_interpreter: /usr/bin/python3

2
ansible/inventory Normal file
View File

@ -0,0 +1,2 @@
[misc]
h2954114.stratoserver.net

33
ansible/misc.yaml Normal file
View File

@ -0,0 +1,33 @@
---
- hosts: misc
tasks:
- include_role:
name: docker
- name: Install pip prerequisites
become: yes
apt:
name:
- python3-pip
- python3-setuptools
- python3-virtualenv
- name: Install global python docker package
become: yes
pip:
name:
- docker
- docker-compose
- requests
- name: Upload docker configuration
become: yes
copy:
src: ../docker
dest: /etc/pbri
- name: Set up docker stuff
become: yes
docker_compose:
project_src: "/etc/pbri/docker/{{ item.name }}"
state: "{{ item.state }}"
debug: yes
loop:
- name: web
state: present

View File

@ -0,0 +1,4 @@
# docker
Installs the Docker repositories and packages as described in [the Docker documentation](https://docs.docker.com/engine/install/debian/#install-using-the-repository).
Currently only works for Ubuntu since ubuntu is hardcoded into the `.list` file.

View File

@ -0,0 +1,38 @@
---
- name: Install Docker installation prerequisites
become: yes
apt:
update_cache: yes
state: latest
name:
- ca-certificates
- curl
- gnupg
- lsb-release
- name: Add Docker GPG key
become: yes
shell: "curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg"
args:
creates: /usr/share/keyrings/docker-archive-keyring.gpg
- name: Retrieve dpkg architecture
shell: dpkg --print-architecture
register: dpkg_architecture
changed_when: False
- name: Add Docker apt repository
become: yes
template:
src: docker.list.j2
dest: /etc/apt/sources.list.d/docker.list
- name: Install Docker
become: yes
apt:
update_cache: yes
state: latest
name:
- docker-ce
- docker-ce-cli
- containerd.io

View File

@ -0,0 +1 @@
deb [arch={{ dpkg_architecture.stdout }} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable

5
docker/web/Caddyfile Normal file
View File

@ -0,0 +1,5 @@
h2954114.stratoserver.net {
file_server browse {
root /usr/share
}
}

3
docker/web/Dockerfile Normal file
View File

@ -0,0 +1,3 @@
FROM caddy
COPY Caddyfile /etc/caddy/Caddyfile

3
docker/web/README.md Normal file
View File

@ -0,0 +1,3 @@
# web
Contains stuff exposed via HTTP(S) to the Internet, e.g. personal website, Wiki, etc.

View File

@ -0,0 +1,17 @@
version: "3"
services:
web:
image: pbrinkmeier/web
build: .
ports:
- 80:80
- 443:443
volumes:
- caddy_data:/data
- caddy_config:/config
restart: always
volumes:
caddy_data:
caddy_config: