7 Commits

9 changed files with 71 additions and 18 deletions

View File

@ -1,11 +1,12 @@
namespace: finallycoffee namespace: finallycoffee
name: services name: services
version: 0.1.2 version: 0.1.3
readme: README.md readme: README.md
authors: authors:
- transcaffeine <transcaffeine@finally.coffee> - transcaffeine <transcaffeine@finally.coffee>
description: Various ansible roles useful for automating infrastructure description: Various ansible roles useful for automating infrastructure
dependencies: dependencies:
"community.crypto": "^2.0.0"
"community.docker": "^3.0.0" "community.docker": "^3.0.0"
license_file: LICENSE.md license_file: LICENSE.md
build_ignore: build_ignore:

View File

@ -0,0 +1,9 @@
---
allow_duplicates: true
dependencies: []
galaxy_info:
role_name: authelia
description: Ansible role to deploy authelia using docker
galaxy_tags:
- authelia
- docker

View File

@ -1,14 +1,14 @@
--- ---
- name: Ensure user {{ authelia_user }} exists - name: Ensure user {{ authelia_user }} exists
user: ansible.builtin.user:
name: "{{ authelia_user }}" name: "{{ authelia_user }}"
state: present state: present
system: true system: true
register: authelia_user_info register: authelia_user_info
- name: Ensure host directories are created with correct permissions - name: Ensure host directories are created with correct permissions
file: ansible.builtin.file:
path: "{{ item.path }}" path: "{{ item.path }}"
state: directory state: directory
owner: "{{ item.owner | default(authelia_user) }}" owner: "{{ item.owner | default(authelia_user) }}"
@ -26,7 +26,7 @@
mode: "0750" mode: "0750"
- name: Ensure config file is generated - name: Ensure config file is generated
copy: ansible.builtin.copy:
content: "{{ authelia_config | to_nice_yaml(indent=2, width=10000) }}" content: "{{ authelia_config | to_nice_yaml(indent=2, width=10000) }}"
dest: "{{ authelia_config_file }}" dest: "{{ authelia_config_file }}"
owner: "{{ authelia_run_user }}" owner: "{{ authelia_run_user }}"
@ -35,7 +35,7 @@
notify: restart-authelia notify: restart-authelia
- name: Ensure sqlite database file exists before mounting it - name: Ensure sqlite database file exists before mounting it
file: ansible.builtin.file:
path: "{{ authelia_sqlite_storage_file }}" path: "{{ authelia_sqlite_storage_file }}"
state: touch state: touch
owner: "{{ authelia_run_user }}" owner: "{{ authelia_run_user }}"
@ -46,7 +46,7 @@
when: authelia_config_storage_local_path | default(false, true) when: authelia_config_storage_local_path | default(false, true)
- name: Ensure user database exists before mounting it - name: Ensure user database exists before mounting it
file: ansible.builtin.file:
path: "{{ authelia_user_storage_file }}" path: "{{ authelia_user_storage_file }}"
state: touch state: touch
owner: "{{ authelia_run_user }}" owner: "{{ authelia_run_user }}"
@ -57,7 +57,7 @@
when: authelia_config_authentication_backend_file_path | default(false, true) when: authelia_config_authentication_backend_file_path | default(false, true)
- name: Ensure notification reports file exists before mounting it - name: Ensure notification reports file exists before mounting it
file: ansible.builtin.file:
path: "{{ authelia_notification_storage_file }}" path: "{{ authelia_notification_storage_file }}"
state: touch state: touch
owner: "{{ authelia_run_user }}" owner: "{{ authelia_run_user }}"
@ -76,7 +76,7 @@
register: authelia_container_image_info register: authelia_container_image_info
- name: Ensure authelia container is running - name: Ensure authelia container is running
docker_container: community.docker.docker_container:
name: "{{ authelia_container_name }}" name: "{{ authelia_container_name }}"
image: "{{ authelia_container_image_ref }}" image: "{{ authelia_container_image_ref }}"
env: "{{ authelia_container_env }}" env: "{{ authelia_container_env }}"
@ -88,5 +88,6 @@
etc_hosts: "{{ authelia_container_etc_hosts | default(omit, true) }}" etc_hosts: "{{ authelia_container_etc_hosts | default(omit, true) }}"
purge_networks: "{{ authelia_container_purge_networks | default(omit, true)}}" purge_networks: "{{ authelia_container_purge_networks | default(omit, true)}}"
restart_policy: "{{ authelia_container_restart_policy }}" restart_policy: "{{ authelia_container_restart_policy }}"
recreate: "{{ authelia_container_recreate | default(omit, true) }}"
state: "{{ authelia_container_state }}" state: "{{ authelia_container_state }}"
register: authelia_container_info register: authelia_container_info

10
roles/ghost/meta/main.yml Normal file
View File

@ -0,0 +1,10 @@
---
allow_duplicates: true
dependencies: []
galaxy_info:
role_name: ghost
description: Ansible role to deploy ghost (https://ghost.org) using docker
galaxy_tags:
- ghost
- blog
- docker

10
roles/gitea/meta/main.yml Normal file
View File

@ -0,0 +1,10 @@
---
allow_duplicates: true
dependencies: []
galaxy_info:
role_name: gitea
description: Ansible role to deploy gitea using docker
galaxy_tags:
- gitea
- git
- docker

View File

@ -1,7 +1,7 @@
--- ---
- name: Ensure gitea user '{{ gitea_user }}' is present - name: Ensure gitea user '{{ gitea_user }}' is present
user: ansible.builtin.user:
name: "{{ gitea_user }}" name: "{{ gitea_user }}"
state: "present" state: "present"
system: false system: false
@ -9,7 +9,7 @@
register: gitea_user_res register: gitea_user_res
- name: Ensure host directories exist - name: Ensure host directories exist
file: ansible.builtin.file:
path: "{{ item }}" path: "{{ item }}"
owner: "{{ gitea_user_res.uid }}" owner: "{{ gitea_user_res.uid }}"
group: "{{ gitea_user_res.group }}" group: "{{ gitea_user_res.group }}"
@ -19,7 +19,7 @@
- "{{ gitea_data_path }}" - "{{ gitea_data_path }}"
- name: Ensure .ssh folder for gitea user exists - name: Ensure .ssh folder for gitea user exists
file: ansible.builtin.file:
path: "/home/{{ gitea_user }}/.ssh" path: "/home/{{ gitea_user }}/.ssh"
state: directory state: directory
owner: "{{ gitea_user_res.uid }}" owner: "{{ gitea_user_res.uid }}"
@ -38,7 +38,7 @@
register: gitea_user_ssh_key register: gitea_user_ssh_key
- name: Create forwarding script - name: Create forwarding script
copy: ansible.builtin.copy:
dest: "/usr/local/bin/gitea" dest: "/usr/local/bin/gitea"
owner: "{{ gitea_user_res.uid }}" owner: "{{ gitea_user_res.uid }}"
group: "{{ gitea_user_res.group }}" group: "{{ gitea_user_res.group }}"
@ -47,7 +47,7 @@
ssh -p {{ gitea_public_ssh_server_port }} -o StrictHostKeyChecking=no {{ gitea_run_user }}@127.0.0.1 -i /home/{{ gitea_user }}/.ssh/id_ssh_ed25519 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@" ssh -p {{ gitea_public_ssh_server_port }} -o StrictHostKeyChecking=no {{ gitea_run_user }}@127.0.0.1 -i /home/{{ gitea_user }}/.ssh/id_ssh_ed25519 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
- name: Add host pubkey to git users authorized_keys file - name: Add host pubkey to git users authorized_keys file
lineinfile: ansible.builtin.lineinfile:
path: "/home/{{ gitea_user }}/.ssh/authorized_keys" path: "/home/{{ gitea_user }}/.ssh/authorized_keys"
line: "{{ gitea_user_ssh_key.public_key }} Gitea:Host2Container" line: "{{ gitea_user_ssh_key.public_key }} Gitea:Host2Container"
state: present state: present
@ -77,7 +77,7 @@
state: "{{ gitea_container_state }}" state: "{{ gitea_container_state }}"
- name: Ensure given configuration is set in the config file - name: Ensure given configuration is set in the config file
ini_file: ansible.builtin.ini_file:
path: "{{ gitea_data_path }}/gitea/conf/app.ini" path: "{{ gitea_data_path }}/gitea/conf/app.ini"
section: "{{ section }}" section: "{{ section }}"
option: "{{ option }}" option: "{{ option }}"

View File

@ -0,0 +1,10 @@
---
allow_duplicates: true
dependencies: []
galaxy_info:
role_name: jellyfin
description: Ansible role to deploy jellyfin using docker
galaxy_tags:
- jellyfin
- streaming
- docker

View File

@ -1,14 +1,14 @@
--- ---
- name: Ensure user '{{ jellyfin_user }}' for jellyfin is created - name: Ensure user '{{ jellyfin_user }}' for jellyfin is created
user: ansible.builtin.user:
name: "{{ jellyfin_user }}" name: "{{ jellyfin_user }}"
state: present state: present
system: yes system: yes
register: jellyfin_user_info register: jellyfin_user_info
- name: Ensure host directories for jellyfin exist - name: Ensure host directories for jellyfin exist
file: ansible.builtinfile:
path: "{{ item.path }}" path: "{{ item.path }}"
state: directory state: directory
owner: "{{ item.owner | default(jellyfin_uid) }}" owner: "{{ item.owner | default(jellyfin_uid) }}"
@ -17,7 +17,7 @@
loop: "{{ jellyfin_host_directories }}" loop: "{{ jellyfin_host_directories }}"
- name: Ensure container image for jellyfin is available - name: Ensure container image for jellyfin is available
docker_image: community.docker.docker_image:
name: "{{ jellyfin_container_image_ref }}" name: "{{ jellyfin_container_image_ref }}"
state: present state: present
source: pull source: pull
@ -28,7 +28,7 @@
delay: 3 delay: 3
- name: Ensure container '{{ jellyfin_container_name }}' is running - name: Ensure container '{{ jellyfin_container_name }}' is running
docker_container: community.docker.docker_container:
name: "{{ jellyfin_container_name }}" name: "{{ jellyfin_container_name }}"
image: "{{ jellyfin_container_image_ref }}" image: "{{ jellyfin_container_image_ref }}"
user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}" user: "{{ jellyfin_uid }}:{{ jellyfin_gid }}"

View File

@ -0,0 +1,12 @@
---
allow_duplicates: true
dependencies: []
galaxy_info:
role_name: vouch_proxy
description: Ansible role to deploy vouch_proxy using docker
galaxy_tags:
- vouch_proxy
- oidc
- authentication
- authorization
- docker