mirror of
https://github.com/davestephens/ansible-nas
synced 2025-01-12 19:48:47 +00:00
Merge branch 'new_format' of https://github.com/anarion80/ansible-nas into anarion80-new_format_2
This commit is contained in:
commit
6b697c7756
444 changed files with 7494 additions and 2342 deletions
66
nas.yml
66
nas.yml
|
@ -123,12 +123,10 @@
|
|||
- role: freshrss
|
||||
tags:
|
||||
- freshrss
|
||||
when: (freshrss_enabled | default(False))
|
||||
|
||||
- role: get_iplayer
|
||||
tags:
|
||||
- get_iplayer
|
||||
when: (get_iplayer_enabled | default(False))
|
||||
|
||||
- role: gitea
|
||||
tags:
|
||||
|
@ -137,32 +135,26 @@
|
|||
- role: gitlab
|
||||
tags:
|
||||
- gitlab
|
||||
when: (gitlab_enabled | default(False))
|
||||
|
||||
- role: glances
|
||||
tags:
|
||||
- glances
|
||||
when: (glances_enabled | default(False))
|
||||
|
||||
- role: gotify
|
||||
tags:
|
||||
- gotify
|
||||
when: (gotify_enabled | default(False))
|
||||
|
||||
- role: guacamole
|
||||
tags:
|
||||
- guacamole
|
||||
when: (guacamole_enabled | default(False))
|
||||
|
||||
- role: healthchecks.io
|
||||
tags:
|
||||
- healthchecks.io
|
||||
when: (healthchecks_enabled | default(False))
|
||||
|
||||
- role: heimdall
|
||||
tags:
|
||||
- heimdall
|
||||
when: (heimdall_enabled | default(False))
|
||||
|
||||
- role: hello_world
|
||||
tags:
|
||||
|
@ -171,67 +163,54 @@
|
|||
- role: homeassistant
|
||||
tags:
|
||||
- homeassistant
|
||||
when: (homeassistant_enabled | default(False))
|
||||
|
||||
- role: homebridge
|
||||
tags:
|
||||
- homebridge
|
||||
when: (homebridge_enabled | default(False))
|
||||
|
||||
- role: jackett
|
||||
tags:
|
||||
- jackett
|
||||
when: (jackett_enabled | default(False))
|
||||
|
||||
- role: jellyfin
|
||||
tags:
|
||||
- jellyfin
|
||||
when: (jellyfin_enabled | default(False))
|
||||
|
||||
- role: joomla
|
||||
tags:
|
||||
- joomla
|
||||
when: (joomla_enabled | default(False))
|
||||
|
||||
- role: komga
|
||||
tags:
|
||||
- komga
|
||||
when: (komga_enabled | default(False))
|
||||
|
||||
- role: krusader
|
||||
tags:
|
||||
- krusader
|
||||
when: (krusader_enabled | default(False))
|
||||
|
||||
- role: lidarr
|
||||
tags:
|
||||
- lidarr
|
||||
when: (lidarr_enabled | default(False))
|
||||
|
||||
- role: mealie
|
||||
tags:
|
||||
- mealie
|
||||
when: (mealie_enabled | default(False))
|
||||
|
||||
- role: minecraft-server
|
||||
tags:
|
||||
- minecraft-server
|
||||
when: (minecraft_server_enabled | default(False))
|
||||
|
||||
- role: minidlna
|
||||
tags:
|
||||
- minidlna
|
||||
when: (minidlna_enabled | default(False))
|
||||
|
||||
- role: miniflux
|
||||
tags:
|
||||
- miniflux
|
||||
when: (miniflux_enabled | default(False))
|
||||
|
||||
- role: mosquitto
|
||||
tags:
|
||||
- mosquitto
|
||||
when: (mosquitto_enabled | default(False))
|
||||
|
||||
- role: mumble
|
||||
tags:
|
||||
|
@ -240,37 +219,30 @@
|
|||
- role: mylar
|
||||
tags:
|
||||
- mylar
|
||||
when: (mylar_enabled | default(False))
|
||||
|
||||
- role: mymediaforalexa
|
||||
tags:
|
||||
- mymediaforalexa
|
||||
when: (mymediaforalexa_enabled | default(False))
|
||||
|
||||
- role: n8n
|
||||
tags:
|
||||
- n8n
|
||||
when: (n8n_enabled | default(False))
|
||||
|
||||
- role: navidrome
|
||||
tags:
|
||||
- navidrome
|
||||
when: (navidrome_enabled | default(False))
|
||||
|
||||
- role: netbootxyz
|
||||
tags:
|
||||
- netbootxyz
|
||||
when: (netbootxyz_enabled | default(False))
|
||||
|
||||
- role: netdata
|
||||
tags:
|
||||
- netdata
|
||||
when: (netdata_enabled | default(False))
|
||||
|
||||
- role: nextcloud
|
||||
tags:
|
||||
- nextcloud
|
||||
when: (nextcloud_enabled | default(False))
|
||||
|
||||
- role: nomad
|
||||
tags:
|
||||
|
@ -279,189 +251,151 @@
|
|||
- role: nzbget
|
||||
tags:
|
||||
- nzbget
|
||||
when: (nzbget_enabled | default(False))
|
||||
|
||||
- role: octoprint
|
||||
tags:
|
||||
- octoprint
|
||||
when: (octoprint_enabled | default(False))
|
||||
|
||||
- role: ombi
|
||||
tags:
|
||||
- ombi
|
||||
when: (ombi_enabled | default(False))
|
||||
|
||||
- role: openhab
|
||||
tags:
|
||||
- openhab
|
||||
when: (openhab_enabled | default(False))
|
||||
|
||||
- role: organizr
|
||||
tags:
|
||||
- organizr
|
||||
when: (organizr_enabled | default(False))
|
||||
|
||||
- role: overseerr
|
||||
tags:
|
||||
- overseerr
|
||||
when: (overseerr_enabled | default(False))
|
||||
|
||||
- role: paperless_ng
|
||||
tags:
|
||||
- paperless_ng
|
||||
when: (paperless_ng_enabled | default(False))
|
||||
|
||||
- role: piwigo
|
||||
tags:
|
||||
- piwigo
|
||||
when: (piwigo_enabled | default(False))
|
||||
|
||||
- role: plex
|
||||
tags:
|
||||
- plex
|
||||
when: (plex_enabled | default(False))
|
||||
|
||||
- role: portainer
|
||||
tags:
|
||||
- portainer
|
||||
when: (portainer_enabled | default(False))
|
||||
|
||||
- role: prowlarr
|
||||
tags:
|
||||
- prowlarr
|
||||
when: (prowlarr_enabled | default(False))
|
||||
|
||||
- role: pyload
|
||||
tags:
|
||||
- pyload
|
||||
when: (pyload_enabled | default(False))
|
||||
|
||||
- role: pytivo
|
||||
tags:
|
||||
- pytivo
|
||||
when: (pytivo_enabled | default(False))
|
||||
|
||||
- role: radarr
|
||||
tags:
|
||||
- radarr
|
||||
when: (radarr_enabled | default(False))
|
||||
|
||||
- role: route53_ddns
|
||||
tags:
|
||||
- route53_ddns
|
||||
when: (route53_ddns_enabled | default(False))
|
||||
|
||||
- role: rssbridge
|
||||
tags:
|
||||
- rssbridge
|
||||
when: (rssbridge_enabled | default(False))
|
||||
|
||||
- role: sabnzbd
|
||||
tags:
|
||||
- sabnzbd
|
||||
when: (sabnzbd_enabled | default(False))
|
||||
|
||||
- role: sickchill
|
||||
tags:
|
||||
- sickchill
|
||||
when: (sickchill_enabled | default(False))
|
||||
|
||||
- role: sonarr
|
||||
tags:
|
||||
- sonarr
|
||||
when: (sonarr_enabled | default(False))
|
||||
|
||||
- role: speedtest-tracker
|
||||
tags:
|
||||
- speedtest-tracker
|
||||
when: (speedtest_tracker_enabled | default(False))
|
||||
|
||||
- role: stats
|
||||
tags:
|
||||
- stats
|
||||
when: (stats_enabled | default(False))
|
||||
|
||||
- role: syncthing
|
||||
tags:
|
||||
- syncthing
|
||||
when: (syncthing_enabled | default(False))
|
||||
|
||||
- role: tautulli
|
||||
tags:
|
||||
- tautulli
|
||||
when: (tautulli_enabled | default(False))
|
||||
|
||||
- role: thelounge
|
||||
tags:
|
||||
- thelounge
|
||||
when: (thelounge_enabled | default(False))
|
||||
|
||||
- role: tiddlywiki
|
||||
tags:
|
||||
- tiddlywiki
|
||||
when: (tiddlywiki_enabled | default(False))
|
||||
|
||||
- role: timemachine
|
||||
tags:
|
||||
- timemachine
|
||||
when: (timemachine_enabled | default(False))
|
||||
|
||||
- role: traefik
|
||||
tags:
|
||||
- traefik
|
||||
when: (traefik_enabled | default(False))
|
||||
|
||||
- role: transmission
|
||||
tags:
|
||||
- transmission
|
||||
when: (transmission_enabled | default(False))
|
||||
|
||||
- role: transmission-with-openvpn
|
||||
tags:
|
||||
- transmission_with_openvpn
|
||||
when: (transmission_with_openvpn_enabled | default(False))
|
||||
|
||||
- role: ubooquity
|
||||
tags:
|
||||
- ubooquity
|
||||
when: (ubooquity_enabled | default(False))
|
||||
|
||||
- role: utorrent
|
||||
tags:
|
||||
- utorrent
|
||||
when: (utorrent_enabled | default(False))
|
||||
|
||||
- role: virtual_desktop
|
||||
tags:
|
||||
- virtual_desktop
|
||||
when: (virtual_desktop_enabled | default(False))
|
||||
|
||||
- role: wallabag
|
||||
tags:
|
||||
- wallabag
|
||||
when: (wallabag_enabled | default(False))
|
||||
|
||||
- role: watchtower
|
||||
tags:
|
||||
- watchtower
|
||||
when: (watchtower_enabled | default(False))
|
||||
|
||||
- role: wireshark
|
||||
tags:
|
||||
- wireshark
|
||||
when: (wireshark_enabled | default(False))
|
||||
|
||||
- role: woodpecker-ci
|
||||
tags:
|
||||
- woodpecker_ci
|
||||
when: (woodpecker_ci_enabled | default(False))
|
||||
|
||||
- role: youtubedlmaterial
|
||||
tags:
|
||||
- youtubedlmaterial
|
||||
when: (youtubedlmaterial_enabled | default(False))
|
||||
|
||||
- role: znc
|
||||
tags:
|
||||
- znc
|
||||
when: (znc_enabled | default(False))
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Airsonic
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Bazarr
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Bitwarden
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Booksonic
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Calibre
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Cloudcmd
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Cloudflare DDNS
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Code Server
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Couchpotato
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Dashy
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Deluge
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Dokuwiki
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Drone CI
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Duplicacy
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove EspHome
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Firefly
|
||||
|
|
|
@ -10,5 +10,10 @@ freshrss_extensions_directory: "{{ docker_home }}/freshrss"
|
|||
freshrss_port: "8089"
|
||||
freshrss_hostname: "freshrss"
|
||||
|
||||
# docker
|
||||
freshrss_container_name: freshrss
|
||||
freshrss_image_name: "freshrss/freshrss"
|
||||
freshrss_image_version: latest
|
||||
|
||||
# specs
|
||||
freshrss_memory: 1g
|
||||
|
|
6
roles/freshrss/molecule/default/molecule.yml
Normal file
6
roles/freshrss/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
freshrss_enabled: true
|
10
roles/freshrss/molecule/default/side_effect.yml
Normal file
10
roles/freshrss/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
freshrss_enabled: false
|
19
roles/freshrss/molecule/default/verify.yml
Normal file
19
roles/freshrss/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get freshrss container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ freshrss_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if freshrss containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/freshrss/molecule/default/verify_stopped.yml
Normal file
19
roles/freshrss/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove freshrss
|
||||
community.docker.docker_container:
|
||||
name: "{{ freshrss_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if freshrss is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,32 +1,44 @@
|
|||
---
|
||||
- name: Create FreshRSS Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
# mode: 0755
|
||||
with_items:
|
||||
- "{{ freshrss_data_directory }}/data"
|
||||
- "{{ freshrss_extensions_directory }}/extensions"
|
||||
- name: Start FreshRSS
|
||||
block:
|
||||
- name: Create FreshRSS Directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ freshrss_data_directory }}/data"
|
||||
- "{{ freshrss_extensions_directory }}/extensions"
|
||||
|
||||
- name: FreshRSS Docker Container
|
||||
docker_container:
|
||||
name: freshrss
|
||||
image: freshrss/freshrss
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ freshrss_data_directory }}/data:/var/www/FreshRSS/data:rw"
|
||||
- "{{ freshrss_extensions_directory }}/extensions:/var/www/FreshRSS/extensions:rw"
|
||||
ports:
|
||||
- "{{ freshrss_port }}:80"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
CRON_MIN: "1,31"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ freshrss_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ freshrss_available_externally | string }}"
|
||||
traefik.http.routers.freshrss.rule: "Host(`{{ freshrss_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.freshrss.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.freshrss.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.freshrss.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.freshrss.loadbalancer.server.port: "80"
|
||||
- name: FreshRSS Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ freshrss_container_name }}"
|
||||
image: "{{ freshrss_image_name }}:{{ freshrss_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ freshrss_data_directory }}/data:/var/www/FreshRSS/data:rw"
|
||||
- "{{ freshrss_extensions_directory }}/extensions:/var/www/FreshRSS/extensions:rw"
|
||||
ports:
|
||||
- "{{ freshrss_port }}:80"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
CRON_MIN: "1,31"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ freshrss_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ freshrss_available_externally | string }}"
|
||||
traefik.http.routers.freshrss.rule: "Host(`{{ freshrss_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.freshrss.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.freshrss.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.freshrss.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.freshrss.loadbalancer.server.port: "80"
|
||||
when: freshrss_enabled is true
|
||||
|
||||
|
||||
- name: Stop FreshRSS
|
||||
block:
|
||||
- name: Stop FreshRSS
|
||||
community.docker.docker_container:
|
||||
name: "{{ freshrss_container_name }}"
|
||||
state: absent
|
||||
when: freshrss_enabled is false
|
||||
|
|
|
@ -8,5 +8,10 @@ get_iplayer_download_directory: "{{ tv_root }}/iplayer_downloads"
|
|||
# network
|
||||
get_iplayer_port: "8182"
|
||||
|
||||
# docker
|
||||
get_iplayer_container_name: "get_iplayer"
|
||||
get_iplayer_image_name: "kolonuk/get_iplayer"
|
||||
get_iplayer_image_version: "latest"
|
||||
|
||||
# specs
|
||||
get_iplayer_memory: "1g"
|
||||
|
|
6
roles/get_iplayer/molecule/default/molecule.yml
Normal file
6
roles/get_iplayer/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
get_iplayer_enabled: true
|
10
roles/get_iplayer/molecule/default/side_effect.yml
Normal file
10
roles/get_iplayer/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
get_iplayer_enabled: false
|
19
roles/get_iplayer/molecule/default/verify.yml
Normal file
19
roles/get_iplayer/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get get_iplayer container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ get_iplayer_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if get_iplayer containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/get_iplayer/molecule/default/verify_stopped.yml
Normal file
19
roles/get_iplayer/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove get_iplayer
|
||||
community.docker.docker_container:
|
||||
name: "{{ get_iplayer_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if get_iplayer is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,21 +1,33 @@
|
|||
---
|
||||
- name: Create get_iplayer Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ get_iplayer_config_directory }}"
|
||||
- "{{ get_iplayer_download_directory }}"
|
||||
- name: Start get_iplayer
|
||||
block:
|
||||
- name: Create get_iplayer Directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ get_iplayer_config_directory }}"
|
||||
- "{{ get_iplayer_download_directory }}"
|
||||
|
||||
- name: Get_iplayer Docker Container
|
||||
docker_container:
|
||||
name: get_iplayer
|
||||
image: kolonuk/get_iplayer
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ get_iplayer_config_directory }}:/root/.get_iplayer:rw"
|
||||
- "{{ get_iplayer_download_directory }}:/root/output:rw"
|
||||
ports:
|
||||
- "{{ get_iplayer_port }}:8181"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ get_iplayer_memory }}"
|
||||
- name: Create get_iplayer Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ get_iplayer_container_name }}"
|
||||
image: "{{ get_iplayer_image_name }}:{{ get_iplayer_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ get_iplayer_config_directory }}:/root/.get_iplayer:rw"
|
||||
- "{{ get_iplayer_download_directory }}:/root/output:rw"
|
||||
ports:
|
||||
- "{{ get_iplayer_port }}:8181"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ get_iplayer_memory }}"
|
||||
when: get_iplayer_enabled is true
|
||||
|
||||
- name: Stop get_iplayer
|
||||
block:
|
||||
- name: Stop get_iplayer
|
||||
community.docker.docker_container:
|
||||
name: "{{ get_iplayer_container_name }}"
|
||||
state: absent
|
||||
when: get_iplayer_enabled is false
|
||||
|
|
|
@ -7,6 +7,7 @@ gitea_data_directory: "{{ docker_home }}/gitea"
|
|||
|
||||
# network
|
||||
gitea_hostname: "gitea"
|
||||
gitea_network_name: "gitea"
|
||||
gitea_port_http: "3001"
|
||||
gitea_port_ssh: "222"
|
||||
|
||||
|
@ -16,4 +17,8 @@ gitea_mysql_memory: 1g
|
|||
|
||||
# docker
|
||||
gitea_container_name: gitea
|
||||
gitea_image_name: gitea/gitea
|
||||
gitea_image_version: latest
|
||||
gitea_mysql_container_name: gitea-mysql
|
||||
gitea_mysql_image_name: mysql
|
||||
gitea_mysql_image_version: "5.7"
|
||||
|
|
7
roles/gitea/molecule/default/molecule.yml
Normal file
7
roles/gitea/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
gitea_enabled: true
|
||||
ansible_nas_hostname: ansible-nas
|
10
roles/gitea/molecule/default/side_effect.yml
Normal file
10
roles/gitea/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
gitea_enabled: false
|
19
roles/gitea/molecule/default/verify.yml
Normal file
19
roles/gitea/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get gitea container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ gitea_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if gitea containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/gitea/molecule/default/verify_stopped.yml
Normal file
19
roles/gitea/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove gitea
|
||||
community.docker.docker_container:
|
||||
name: "{{ gitea_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if gitea is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -10,11 +10,19 @@
|
|||
- "{{ gitea_data_directory }}/gitea"
|
||||
- "{{ gitea_data_directory }}/mysql"
|
||||
|
||||
- name: Create gitea network
|
||||
community.docker.docker_network:
|
||||
name: "{{ gitea_network_name }}"
|
||||
|
||||
- name: Create MySQL container for Gitea
|
||||
docker_container:
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ gitea_mysql_container_name }}"
|
||||
image: mysql:5.7
|
||||
image: "{{ gitea_mysql_image_name }}:{{ gitea_mysql_image_version }}"
|
||||
pull: true
|
||||
networks:
|
||||
- name: "{{ gitea_network_name }}"
|
||||
network_mode: "{{ gitea_network_name }}"
|
||||
volumes:
|
||||
- "{{ gitea_data_directory }}/mysql:/var/lib/mysql:rw"
|
||||
env:
|
||||
|
@ -26,12 +34,14 @@
|
|||
memory: "{{ gitea_mysql_memory }}"
|
||||
|
||||
- name: Create Gitea container
|
||||
docker_container:
|
||||
name: gitea
|
||||
image: gitea/gitea:latest
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ gitea_container_name }}"
|
||||
image: "{{ gitea_image_name }}:{{ gitea_image_version }}"
|
||||
pull: true
|
||||
links:
|
||||
- gitea-mysql:db
|
||||
networks:
|
||||
- name: "{{ gitea_network_name }}"
|
||||
network_mode: "{{ gitea_network_name }}"
|
||||
volumes:
|
||||
- "{{ gitea_data_directory }}/gitea:/data:rw"
|
||||
ports:
|
||||
|
@ -39,7 +49,7 @@
|
|||
- "{{ gitea_port_ssh }}:22"
|
||||
env:
|
||||
DB_TYPE: "mysql"
|
||||
DB_HOST: "db:3306"
|
||||
DB_HOST: "{{ gitea_mysql_container_name }}:3306"
|
||||
DB_NAME: "gitea"
|
||||
DB_USER: "gitea"
|
||||
DB_PASSWD: "gitea"
|
||||
|
|
|
@ -12,5 +12,12 @@ gitlab_port_http: "4080"
|
|||
gitlab_port_https: "4443"
|
||||
gitlab_port_ssh: "422"
|
||||
|
||||
# docker
|
||||
gitlab_container_name: "gitlab"
|
||||
gitlab_image_name: "gitlab/gitlab-ce"
|
||||
gitlab_image_version: "latest"
|
||||
gitlab_user_id: "1000"
|
||||
gitlab_group_id: "1000"
|
||||
|
||||
# specs
|
||||
gitlab_memory: "4g"
|
||||
|
|
6
roles/gitlab/molecule/default/molecule.yml
Normal file
6
roles/gitlab/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
gitlab_enabled: true
|
10
roles/gitlab/molecule/default/side_effect.yml
Normal file
10
roles/gitlab/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
gitlab_enabled: false
|
19
roles/gitlab/molecule/default/verify.yml
Normal file
19
roles/gitlab/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get gitlab container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ gitlab_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if gitlab containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/gitlab/molecule/default/verify_stopped.yml
Normal file
19
roles/gitlab/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove gitlab
|
||||
community.docker.docker_container:
|
||||
name: "{{ gitlab_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if gitlab is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,57 +1,69 @@
|
|||
---
|
||||
# The gitlab uid/gid matches 'git:git' in the Gitlab Docker image.
|
||||
- name: Create Gitlab group account
|
||||
group:
|
||||
name: gitlab
|
||||
gid: 998
|
||||
state: present
|
||||
- name: Start Gitlab
|
||||
block:
|
||||
# The gitlab uid/gid matches 'git:git' in the Gitlab Docker image.
|
||||
- name: Create Gitlab group account
|
||||
group:
|
||||
name: gitlab
|
||||
gid: 998
|
||||
state: present
|
||||
|
||||
- name: Create Gitlab user account
|
||||
user:
|
||||
name: gitlab
|
||||
uid: 998
|
||||
state: present
|
||||
system: yes
|
||||
update_password: on_create
|
||||
create_home: no
|
||||
group: gitlab
|
||||
- name: Create Gitlab user account
|
||||
user:
|
||||
name: gitlab
|
||||
uid: 998
|
||||
state: present
|
||||
system: yes
|
||||
update_password: on_create
|
||||
create_home: no
|
||||
group: gitlab
|
||||
|
||||
- name: Create Gitlab Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: gitlab
|
||||
group: gitlab
|
||||
with_items:
|
||||
- "{{ gitlab_data_directory }}/config"
|
||||
- "{{ gitlab_data_directory }}/log"
|
||||
- "{{ gitlab_data_directory }}/data"
|
||||
- name: Create Gitlab Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: gitlab
|
||||
group: gitlab
|
||||
with_items:
|
||||
- "{{ gitlab_data_directory }}/config"
|
||||
- "{{ gitlab_data_directory }}/log"
|
||||
- "{{ gitlab_data_directory }}/data"
|
||||
|
||||
- name: Create Gitlab Docker Container
|
||||
docker_container:
|
||||
name: gitlab
|
||||
image: gitlab/gitlab-ce:latest
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ gitlab_data_directory }}/config:/etc/gitlab:rw"
|
||||
- "{{ gitlab_data_directory }}/log:/var/log/gitlab:rw"
|
||||
- "{{ gitlab_data_directory }}/data:/var/opt/gitlab:rw"
|
||||
network_mode: "bridge"
|
||||
ports:
|
||||
- "{{ gitlab_port_http }}:80"
|
||||
- "{{ gitlab_port_https }}:443"
|
||||
- "{{ gitlab_port_ssh }}:22"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PUID: "{{ gitlab_user_id }}"
|
||||
PGID: "{{ gitlab_group_id }}"
|
||||
restart_policy: unless-stopped
|
||||
hostname: "{{ gitlab_hostname }}.{{ ansible_nas_domain }}"
|
||||
memory: "{{ gitlab_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ gitlab_available_externally | string }}"
|
||||
traefik.http.routers.gitlab.rule: "Host(`{{ gitlab_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.gitlab.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.gitlab.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.gitlab.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.gitlab.loadbalancer.server.port: "80"
|
||||
- name: Create Gitlab Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ gitlab_container_name }}"
|
||||
image: "{{ gitlab_image_name }}:{{ gitlab_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ gitlab_data_directory }}/config:/etc/gitlab:rw"
|
||||
- "{{ gitlab_data_directory }}/log:/var/log/gitlab:rw"
|
||||
- "{{ gitlab_data_directory }}/data:/var/opt/gitlab:rw"
|
||||
network_mode: "bridge"
|
||||
ports:
|
||||
- "{{ gitlab_port_http }}:80"
|
||||
- "{{ gitlab_port_https }}:443"
|
||||
- "{{ gitlab_port_ssh }}:22"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PUID: "{{ gitlab_user_id }}"
|
||||
PGID: "{{ gitlab_group_id }}"
|
||||
restart_policy: unless-stopped
|
||||
hostname: "{{ gitlab_hostname }}.{{ ansible_nas_domain }}"
|
||||
memory: "{{ gitlab_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ gitlab_available_externally | string }}"
|
||||
traefik.http.routers.gitlab.rule: "Host(`{{ gitlab_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.gitlab.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.gitlab.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.gitlab.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.gitlab.loadbalancer.server.port: "80"
|
||||
when: gitlab_enabled is true
|
||||
|
||||
- name: Stop Gitlab
|
||||
block:
|
||||
- name: Stop Gitlab
|
||||
community.docker.docker_container:
|
||||
name: "{{ gitlab_container_name }}"
|
||||
state: absent
|
||||
when: gitlab_enabled is false
|
||||
|
|
|
@ -12,5 +12,10 @@ glances_port_two: "61209"
|
|||
glances_security_options:
|
||||
- "apparmor=unconfined"
|
||||
|
||||
# docker
|
||||
glances_container_name: "glances"
|
||||
glances_image_name: "nicolargo/glances"
|
||||
glances_image_version: "latest"
|
||||
|
||||
# specs
|
||||
glances_memory: 1g
|
||||
|
|
6
roles/glances/molecule/default/molecule.yml
Normal file
6
roles/glances/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
glances_enabled: true
|
10
roles/glances/molecule/default/side_effect.yml
Normal file
10
roles/glances/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
glances_enabled: false
|
19
roles/glances/molecule/default/verify.yml
Normal file
19
roles/glances/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get glances container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ glances_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if glances containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/glances/molecule/default/verify_stopped.yml
Normal file
19
roles/glances/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove glances
|
||||
community.docker.docker_container:
|
||||
name: "{{ glances_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if glances is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,25 +1,37 @@
|
|||
---
|
||||
- name: Create Glances Docker Container
|
||||
docker_container:
|
||||
name: glances
|
||||
image: nicolargo/glances
|
||||
pull: true
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
pid_mode: host
|
||||
ports:
|
||||
- "{{ glances_port_one }}:61208"
|
||||
- "{{ glances_port_two }}:61209"
|
||||
env:
|
||||
GLANCES_OPT: "-w"
|
||||
restart_policy: unless-stopped
|
||||
security_opts: "{{ glances_security_options }}"
|
||||
memory: "{{ glances_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ glances_available_externally | string }}"
|
||||
traefik.http.routers.glances.rule: "Host(`{{ glances_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.glances.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.glances.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.glances.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.glances.loadbalancer.server.port: "61208"
|
||||
- name: Start Glances
|
||||
block:
|
||||
- name: Create Glances Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ glances_container_name }}"
|
||||
image: "{{ glances_image_name }}:{{ glances_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
pid_mode: host
|
||||
ports:
|
||||
- "{{ glances_port_one }}:61208"
|
||||
- "{{ glances_port_two }}:61209"
|
||||
env:
|
||||
GLANCES_OPT: "-w"
|
||||
restart_policy: unless-stopped
|
||||
security_opts: "{{ glances_security_options }}"
|
||||
memory: "{{ glances_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ glances_available_externally | string }}"
|
||||
traefik.http.routers.glances.rule: "Host(`{{ glances_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.glances.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.glances.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.glances.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.glances.loadbalancer.server.port: "61208"
|
||||
when: glances_enabled is true
|
||||
|
||||
- name: Stop Glances
|
||||
block:
|
||||
- name: Stop Glances
|
||||
community.docker.docker_container:
|
||||
name: "{{ glances_container_name }}"
|
||||
state: absent
|
||||
when: glances_enabled is false
|
||||
|
|
|
@ -5,14 +5,14 @@ gotify_available_externally: false
|
|||
# data directory
|
||||
gotify_data_directory: "{{ docker_home }}/gotify"
|
||||
|
||||
# docker image to use
|
||||
gotify_docker_image: gotify/server:latest
|
||||
|
||||
# network
|
||||
gotify_port: "2346"
|
||||
gotify_hostname: "gotify"
|
||||
|
||||
# user to run container with
|
||||
# docker
|
||||
gotify_container_name: "gotify"
|
||||
gotify_image_name: "gotify/server"
|
||||
gotify_image_version: "latest"
|
||||
gotify_user_id: "0"
|
||||
gotify_group_id: "0"
|
||||
|
||||
|
|
6
roles/gotify/molecule/default/molecule.yml
Normal file
6
roles/gotify/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
gotify_enabled: true
|
10
roles/gotify/molecule/default/side_effect.yml
Normal file
10
roles/gotify/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
gotify_enabled: false
|
19
roles/gotify/molecule/default/verify.yml
Normal file
19
roles/gotify/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get gotify container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ gotify_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if gotify containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/gotify/molecule/default/verify_stopped.yml
Normal file
19
roles/gotify/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove gotify
|
||||
community.docker.docker_container:
|
||||
name: "{{ gotify_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if gotify is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,31 +1,43 @@
|
|||
---
|
||||
- name: Create Gotify Data Directory
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ gotify_data_directory }}"
|
||||
- name: Start Gotify
|
||||
block:
|
||||
- name: Create Gotify Data Directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ gotify_data_directory }}"
|
||||
|
||||
- name: Gotify Docker Container
|
||||
docker_container:
|
||||
name: gotify
|
||||
image: "{{ gotify_docker_image }}"
|
||||
pull: true
|
||||
ports:
|
||||
- "{{ gotify_port }}:80"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "{{ gotify_data_directory }}:/app/data:rw"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PUID: "{{ gotify_user_id }}"
|
||||
PGID: "{{ gotify_group_id }}"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ gotify_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ gotify_available_externally | string }}"
|
||||
traefik.http.routers.gotify.rule: "Host(`{{ gotify_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.gotify.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.gotify.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.gotify.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.gotify.loadbalancer.server.port: "80"
|
||||
- name: Gotify Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ gotify_container_name }}"
|
||||
image: "{{ gotify_image_name }}:{{ gotify_image_version }}"
|
||||
pull: true
|
||||
ports:
|
||||
- "{{ gotify_port }}:80"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "{{ gotify_data_directory }}:/app/data:rw"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PUID: "{{ gotify_user_id }}"
|
||||
PGID: "{{ gotify_group_id }}"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ gotify_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ gotify_available_externally | string }}"
|
||||
traefik.http.routers.gotify.rule: "Host(`{{ gotify_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.gotify.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.gotify.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.gotify.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.gotify.loadbalancer.server.port: "80"
|
||||
when: gotify_enabled is true
|
||||
|
||||
- name: Stop Gotify
|
||||
block:
|
||||
- name: Stop Gotify
|
||||
community.docker.docker_container:
|
||||
name: "{{ gotify_container_name }}"
|
||||
state: absent
|
||||
when: gotify_enabled is false
|
||||
|
|
|
@ -9,5 +9,10 @@ guacamole_data_directory: "{{ docker_home }}/guacamole"
|
|||
guacamole_port: "8090"
|
||||
guacamole_hostname: "guacamole"
|
||||
|
||||
# docker
|
||||
guacamole_container_name: "guacamole"
|
||||
guacamole_image_name: "oznu/guacamole"
|
||||
guacamole_image_version: "latest"
|
||||
|
||||
# specs
|
||||
guacamole_memory: 1g
|
||||
|
|
6
roles/guacamole/molecule/default/molecule.yml
Normal file
6
roles/guacamole/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
guacamole_enabled: true
|
10
roles/guacamole/molecule/default/side_effect.yml
Normal file
10
roles/guacamole/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
guacamole_enabled: false
|
19
roles/guacamole/molecule/default/verify.yml
Normal file
19
roles/guacamole/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get guacamole container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ guacamole_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if guacamole containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/guacamole/molecule/default/verify_stopped.yml
Normal file
19
roles/guacamole/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove guacamole
|
||||
community.docker.docker_container:
|
||||
name: "{{ guacamole_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if guacamole is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,51 +1,64 @@
|
|||
---
|
||||
- name: Create Guacamole directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ guacamole_data_directory }}/config"
|
||||
- name: Start Guacamole
|
||||
block:
|
||||
- name: Create Guacamole directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ guacamole_data_directory }}/config"
|
||||
|
||||
- name: Remove Old Guacamole Mysql Docker Container
|
||||
docker_container:
|
||||
name: guacamole-mysql
|
||||
state: absent
|
||||
keep_volumes: true
|
||||
- name: Remove Old Guacamole Mysql Docker Container
|
||||
docker_container:
|
||||
name: guacamole-mysql
|
||||
state: absent
|
||||
keep_volumes: true
|
||||
|
||||
- name: Remove Old Guacamole guacd Docker Container
|
||||
docker_container:
|
||||
name: guacamole-guacd
|
||||
state: absent
|
||||
keep_volumes: true
|
||||
- name: Remove Old Guacamole guacd Docker Container
|
||||
docker_container:
|
||||
name: guacamole-guacd
|
||||
state: absent
|
||||
keep_volumes: true
|
||||
|
||||
- name: Remove old Guacamole directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "{{ guacamole_data_directory }}/mysql"
|
||||
- name: Remove old Guacamole directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "{{ guacamole_data_directory }}/mysql"
|
||||
|
||||
- name: Guacamole Container
|
||||
docker_container:
|
||||
name: guacamole
|
||||
image: "oznu/guacamole"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ guacamole_data_directory }}/config:/config:rw"
|
||||
ports:
|
||||
- "{{ guacamole_port }}:8080"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ guacamole_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ guacamole_available_externally | string }}"
|
||||
traefik.http.routers.guacamole.rule: "Host(`{{ guacamole_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.guacamole.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.guacamole.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.guacamole.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.guacamole.loadbalancer.server.port: "8080"
|
||||
- name: Guacamole Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ guacamole_container_name }}"
|
||||
image: "{{ guacamole_image_name }}:{{ guacamole_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ guacamole_data_directory }}/config:/config:rw"
|
||||
ports:
|
||||
- "{{ guacamole_port }}:8080"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ guacamole_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ guacamole_available_externally | string }}"
|
||||
traefik.http.routers.guacamole.rule: "Host(`{{ guacamole_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.guacamole.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.guacamole.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.guacamole.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.guacamole.loadbalancer.server.port: "8080"
|
||||
|
||||
- name: Restart Guacamole Container
|
||||
docker_container:
|
||||
name: guacamole
|
||||
image: "oznu/guacamole"
|
||||
restart: true
|
||||
- name: Restart Guacamole Container
|
||||
community.docker.docker_container:
|
||||
name: "{{ guacamole_container_name }}"
|
||||
image: "{{ guacamole_image_name }}:{{ guacamole_image_version }}"
|
||||
restart: true
|
||||
tags: molecule-idempotence-notest
|
||||
when: guacamole_enabled is true
|
||||
|
||||
- name: Stop Guacamole
|
||||
block:
|
||||
- name: Stop Guacamole
|
||||
community.docker.docker_container:
|
||||
name: "{{ guacamole_container_name }}"
|
||||
state: absent
|
||||
when: guacamole_enabled is false
|
||||
|
|
6
roles/healthchecks.io/molecule/default/molecule.yml
Normal file
6
roles/healthchecks.io/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
healthchecks_enabled: true
|
10
roles/healthchecks.io/molecule/default/side_effect.yml
Normal file
10
roles/healthchecks.io/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
healthchecks_enabled: false
|
19
roles/healthchecks.io/molecule/default/verify.yml
Normal file
19
roles/healthchecks.io/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Check cron job file
|
||||
ansible.builtin.fetch:
|
||||
src: /var/spool/cron/crontabs/root
|
||||
dest: /tmp/fetched
|
||||
|
||||
- name: Check if cron job does exist
|
||||
ansible.builtin.assert:
|
||||
that: "lookup('file', '/tmp/fetched/instance/var/spool/cron/crontabs/root') is search('healthchecks.io')"
|
||||
fail_msg: "Cron job 'healthchecks.io' does not exist!"
|
||||
success_msg: "Cron job 'healthchecks.io' does exist!"
|
19
roles/healthchecks.io/molecule/default/verify_stopped.yml
Normal file
19
roles/healthchecks.io/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Check cron job file
|
||||
ansible.builtin.fetch:
|
||||
src: /var/spool/cron/crontabs/root
|
||||
dest: /tmp/fetched
|
||||
|
||||
- name: Check if cron job does not exist
|
||||
ansible.builtin.assert:
|
||||
that: "not lookup('file', '/tmp/fetched/instance/var/spool/cron/crontabs/root') is search('healthchecks.io')"
|
||||
fail_msg: "Cron job 'healthchecks.io' still exists!"
|
||||
success_msg: "Cron job 'healthchecks.io' does not exist!"
|
|
@ -1,7 +1,19 @@
|
|||
---
|
||||
- name: Add healthchecks.io cronjob
|
||||
cron:
|
||||
name: healthchecks.io
|
||||
minute: "*/{{ healthchecks_ping_minutes }}"
|
||||
user: root
|
||||
job: "curl -m 10 --retry 5 {{ healthchecks_url }}"
|
||||
- name: Start Healthchecks
|
||||
block:
|
||||
- name: Add healthchecks.io cronjob
|
||||
ansible.builtin.cron:
|
||||
name: healthchecks.io
|
||||
minute: "*/{{ healthchecks_ping_minutes }}"
|
||||
user: root
|
||||
job: "curl -m 10 --retry 5 {{ healthchecks_url }}"
|
||||
when: healthchecks_enabled is true
|
||||
|
||||
- name: Stop Healthchecks
|
||||
block:
|
||||
- name: Remove healthchecks.io cronjob
|
||||
ansible.builtin.cron:
|
||||
name: healthchecks.io
|
||||
user: root
|
||||
state: absent
|
||||
when: healthchecks_enabled is false
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Heimdall
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get container state
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- include_vars:
|
||||
- name: Include vars
|
||||
include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove Hello World
|
||||
|
|
|
@ -9,5 +9,10 @@ homeassistant_data_directory: "{{ docker_home }}/homeassistant"
|
|||
homeassistant_port: "8123"
|
||||
homeassistant_hostname: "homeassistant"
|
||||
|
||||
# docker
|
||||
homeassistant_container_name: "homeassistant"
|
||||
homeassistant_image_name: "homeassistant/home-assistant"
|
||||
homeassistant_image_version: latest
|
||||
|
||||
# specs
|
||||
homeassistant_memory: 1g
|
||||
|
|
6
roles/homeassistant/molecule/default/molecule.yml
Normal file
6
roles/homeassistant/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
homeassistant_enabled: true
|
10
roles/homeassistant/molecule/default/side_effect.yml
Normal file
10
roles/homeassistant/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
homeassistant_enabled: false
|
19
roles/homeassistant/molecule/default/verify.yml
Normal file
19
roles/homeassistant/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get homeassistant container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ homeassistant_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if homeassistant containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/homeassistant/molecule/default/verify_stopped.yml
Normal file
19
roles/homeassistant/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove homeassistant
|
||||
community.docker.docker_container:
|
||||
name: "{{ homeassistant_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if homeassistant is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,27 +1,39 @@
|
|||
---
|
||||
- name: Create Home Assistant Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ homeassistant_data_directory }}/config"
|
||||
- name: Start Homeassistant
|
||||
block:
|
||||
- name: Create Home Assistant Directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ homeassistant_data_directory }}/config"
|
||||
|
||||
- name: Home Assistant Docker Container
|
||||
docker_container:
|
||||
name: homeassistant
|
||||
image: homeassistant/home-assistant
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ homeassistant_data_directory }}/config:/config:rw"
|
||||
network_mode: host
|
||||
restart_policy: unless-stopped
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
labels:
|
||||
traefik.enable: "{{ homeassistant_available_externally | string }}"
|
||||
traefik.http.routers.homeassistant.rule: "Host(`{{ homeassistant_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.homeassistant.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.homeassistant.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.homeassistant.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.homeassistant.loadbalancer.server.port: "8123"
|
||||
memory: "{{ homeassistant_memory }}"
|
||||
- name: Home Assistant Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ homeassistant_container_name }}"
|
||||
image: "{{ homeassistant_image_name }}:{{ homeassistant_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ homeassistant_data_directory }}/config:/config:rw"
|
||||
network_mode: host
|
||||
restart_policy: unless-stopped
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
labels:
|
||||
traefik.enable: "{{ homeassistant_available_externally | string }}"
|
||||
traefik.http.routers.homeassistant.rule: "Host(`{{ homeassistant_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.homeassistant.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.homeassistant.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.homeassistant.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.homeassistant.loadbalancer.server.port: "8123"
|
||||
memory: "{{ homeassistant_memory }}"
|
||||
when: homeassistant_enabled is true
|
||||
|
||||
- name: Stop homeassistant
|
||||
block:
|
||||
- name: Stop homeassistant
|
||||
community.docker.docker_container:
|
||||
name: "{{ homeassistant_container_name }}"
|
||||
state: absent
|
||||
when: homeassistant_enabled is false
|
||||
|
|
|
@ -14,5 +14,10 @@ homebridge_group_id: "0"
|
|||
homebridge_hostname: "homebridge"
|
||||
homebridge_port: "8087"
|
||||
|
||||
# docker
|
||||
homebridge_container_name: "homebridge"
|
||||
homebridge_image_name: "oznu/homebridge"
|
||||
homebridge_image_version: "latest"
|
||||
|
||||
# specs
|
||||
homebridge_memory: "1g"
|
||||
|
|
6
roles/homebridge/molecule/default/molecule.yml
Normal file
6
roles/homebridge/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
homebridge_enabled: true
|
10
roles/homebridge/molecule/default/side_effect.yml
Normal file
10
roles/homebridge/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
homebridge_enabled: false
|
19
roles/homebridge/molecule/default/verify.yml
Normal file
19
roles/homebridge/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get homebridge container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ homebridge_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if homebridge containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
19
roles/homebridge/molecule/default/verify_stopped.yml
Normal file
19
roles/homebridge/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Include vars
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove homebridge
|
||||
community.docker.docker_container:
|
||||
name: "{{ homebridge_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if homebridge is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
|
@ -1,32 +1,44 @@
|
|||
---
|
||||
- name: Create Homebridge Directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
# mode: 0755
|
||||
with_items:
|
||||
- "{{ homebridge_config_directory }}"
|
||||
- name: Start Homebridge
|
||||
block:
|
||||
- name: Create Homebridge Directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
# mode: 0755
|
||||
with_items:
|
||||
- "{{ homebridge_config_directory }}"
|
||||
|
||||
- name: Create Homebridge Docker Container
|
||||
docker_container:
|
||||
name: homebridge
|
||||
image: oznu/homebridge
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ homebridge_config_directory }}:/homebridge"
|
||||
network_mode: "host"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PGID: "{{ homebridge_group_id }}"
|
||||
PUID: "{{ homebridge_user_id }}"
|
||||
HOMEBRIDGE_CONFIG_UI: "1"
|
||||
HOMEBRIDGE_CONFIG_UI_PORT: "{{ homebridge_port }}"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ homebridge_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ homebridge_available_externally | string }}"
|
||||
traefik.http.routers.homebridge.rule: "Host(`{{ homebridge_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.homebridge.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.homebridge.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.homebridge.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.homebridge.loadbalancer.server.port: "8087"
|
||||
- name: Create Homebridge Docker Container
|
||||
community.docker.docker_container:
|
||||
container_default_behavior: no_defaults
|
||||
name: "{{ homebridge_container_name }}"
|
||||
image: "{{ homebridge_image_name }}:{{ homebridge_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ homebridge_config_directory }}:/homebridge"
|
||||
network_mode: "host"
|
||||
env:
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PGID: "{{ homebridge_group_id }}"
|
||||
PUID: "{{ homebridge_user_id }}"
|
||||
HOMEBRIDGE_CONFIG_UI: "1"
|
||||
HOMEBRIDGE_CONFIG_UI_PORT: "{{ homebridge_port }}"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ homebridge_memory }}"
|
||||
labels:
|
||||
traefik.enable: "{{ homebridge_available_externally | string }}"
|
||||
traefik.http.routers.homebridge.rule: "Host(`{{ homebridge_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.homebridge.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.homebridge.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.homebridge.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.homebridge.loadbalancer.server.port: "8087"
|
||||
when: homebridge_enabled is true
|
||||
|
||||
- name: Stop Homebridge
|
||||
block:
|
||||
- name: Stop Homebridge
|
||||
community.docker.docker_container:
|
||||
name: "{{ homebridge_container_name }}"
|
||||
state: absent
|
||||
when: homebridge_enabled is false
|
||||
|
|
|
@ -11,5 +11,10 @@ jackett_torrents_root: "{{ torrents_root }}"
|
|||
jackett_hostname: "jackett"
|
||||
jackett_port: "9117"
|
||||
|
||||
# docker
|
||||
jackett_container_name: "jackett"
|
||||
jackett_image_name: "linuxserver/jackett"
|
||||
jackett_image_version: "latest"
|
||||
|
||||
# specs
|
||||
jackett_memory: "1g"
|
||||
|
|
6
roles/jackett/molecule/default/molecule.yml
Normal file
6
roles/jackett/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
jackett_enabled: true
|
10
roles/jackett/molecule/default/side_effect.yml
Normal file
10
roles/jackett/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
jackett_enabled: false
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue