Added first, albeit incomplete, playbook for microservices container infrastructure set-up on VPS
This commit is contained in:
125
playbooks/cengine.init.yaml
Normal file
125
playbooks/cengine.init.yaml
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
---
|
||||||
|
- name: Ensuring microservice infrastructure
|
||||||
|
hosts: webservers
|
||||||
|
tasks:
|
||||||
|
- name: Ensure podman is installed
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: podman
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
- name: Ensure podman-compose is installed
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: podman-compose
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
- name: Ensure git is installed
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: git
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
- name: Ensure possession of cloned repository with Compose files
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: senpai@sukaato.moe:repos/sukaato-compose.git
|
||||||
|
dest: ~/dev/sukaato-compose
|
||||||
|
version: latest
|
||||||
|
register: sshgit
|
||||||
|
ignore_errors: true
|
||||||
|
- name: Ensure possession of cloned repository with Compose files
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: 'https://git.sukaato.moe/' # @TODO: Finish HTTPS URI
|
||||||
|
dest: ~/dev/sukaato-compose
|
||||||
|
version: latest
|
||||||
|
register: webgit
|
||||||
|
ignore_errors: true
|
||||||
|
when: sshgit is failed or sshgit is skipped
|
||||||
|
- name: Ensure possession of cloned repository with Compose files
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: ~/repos/sukaato-compose.git
|
||||||
|
dest: ~/dev/sukaato-compose
|
||||||
|
version: latest
|
||||||
|
register: autogit
|
||||||
|
ignore_errors: true
|
||||||
|
when: webgit is failed or webgit is skipped
|
||||||
|
- name: Ensuring pods or containers are run
|
||||||
|
block:
|
||||||
|
- name: Ensuring pods or containers are run from Compose file(s)
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: podman-compose up -d
|
||||||
|
chdir: ~/dev/sukaato-compose
|
||||||
|
register: podup
|
||||||
|
changed_when: podup.rc != 0
|
||||||
|
rescue:
|
||||||
|
- name: Ensure existence of Caddy data container volume
|
||||||
|
containers.podman.podman_volume:
|
||||||
|
state: present
|
||||||
|
name: caddy_data
|
||||||
|
- name: Ensure existence of Caddy configuration container volume
|
||||||
|
containers.podman.podman_volume:
|
||||||
|
state: present
|
||||||
|
name: caddy_config
|
||||||
|
- name: Ensure existence of directory for Caddyfile root path # @TODO: Specify ownership
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /srv/www/sukaato.moe
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
- name: Ensure existence of directory for Caddyfile root path
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: ~/.config/caddy
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
- name: Ensure Caddyfile is copied into separate directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: /srv/www/sukaato.moe/Caddyfile
|
||||||
|
dest: ~/.config/caddy/Caddyfile
|
||||||
|
mode: '0644'
|
||||||
|
state: hard
|
||||||
|
- name: Ensure possession of Caddy container image
|
||||||
|
containers.podman.podman_image:
|
||||||
|
name: caddy
|
||||||
|
tag: 2.9.1-alpine
|
||||||
|
- name: Ensure possession of Nextcloud container image
|
||||||
|
containers.podman.podman_image:
|
||||||
|
name: nextcloud
|
||||||
|
tag: 31.0.0-fpm-alpine
|
||||||
|
- name: Ensure possession of Gitea container image
|
||||||
|
containers.podman.podman_image:
|
||||||
|
name: gitea
|
||||||
|
tag: 1.23.5
|
||||||
|
- name: Ensure existence of shared network for Caddy reverse proxying
|
||||||
|
containers.podman.podman_network:
|
||||||
|
name: caddynet
|
||||||
|
- name: Ensure containers are running with appropriate configuration
|
||||||
|
containers.podman.podman_containers:
|
||||||
|
containers:
|
||||||
|
- name: revproxy
|
||||||
|
state: started
|
||||||
|
restart_policy: on-failure:5
|
||||||
|
image: caddy
|
||||||
|
publish:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "443:443/udp"
|
||||||
|
volumes:
|
||||||
|
- "caddy_config:/config"
|
||||||
|
- "caddy_data:/data"
|
||||||
|
- "/srv/www/sukaato.moe:/srv/www/sukaato.moe"
|
||||||
|
- "~/.config/caddy:/etc/caddy"
|
||||||
|
network:
|
||||||
|
- "caddynet"
|
||||||
|
generate_systemd:
|
||||||
|
restart_policy: always
|
||||||
|
stop_timeout: 120
|
||||||
|
names: true
|
||||||
|
container_prefix: pm@
|
||||||
|
- name: cloud # @TODO: fill out rest of needed attributes
|
||||||
|
state: present # @TODO: Change to "started" later on
|
||||||
|
restart_policy: on-failure:5
|
||||||
|
image: nextcloud
|
||||||
|
network:
|
||||||
|
- "caddynet"
|
||||||
|
- name: http_git # @TODO: fill out rest of needed attributes
|
||||||
|
state: present # @TODO: Change to "started" later on
|
||||||
|
restart_policy: on-failure:5
|
||||||
|
image: gitea
|
||||||
|
network:
|
||||||
|
- "caddynet"
|
Reference in New Issue
Block a user