Compare commits
50 Commits
0193e74142
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e9c976bd6 | |||
| cc9d0cadc2 | |||
|
|
e89ca0530e | ||
|
|
ad34858983 | ||
|
|
e86f548b78 | ||
|
|
95cf984bcf | ||
|
|
4b1b235832 | ||
|
|
d12a7530f2 | ||
|
|
45b1075630 | ||
|
|
555cdaedfd | ||
| b61d727e9f | |||
|
|
5e055b864f | ||
| 6208f61652 | |||
| 50d0386d1f | |||
| a6694d3a4b | |||
| 9612c9c6b9 | |||
| 6dd680f777 | |||
| a3599e8e83 | |||
| 01164de6da | |||
| 084e8dbd5f | |||
| 3f21d2211d | |||
| 9da7430e4b | |||
| a35b24dbaa | |||
| 6000e76f42 | |||
| a56e084ddc | |||
| 2c17ec766c | |||
| 3b505b7499 | |||
| 1ee50d0416 | |||
| 6292834417 | |||
| d4b9f3d1d1 | |||
| df4980d443 | |||
| 3a42d5454a | |||
| 4eb4083e69 | |||
| 52bad1a6ca | |||
| 15853e9cbc | |||
| 414cf58574 | |||
| aad9de469e | |||
| bed6e403c2 | |||
| 23998b2800 | |||
| 48aefdefa8 | |||
| 16b35cbfd3 | |||
| a892037efd | |||
| e85df2798a | |||
| a44dd6b5a9 | |||
| 4fa6676e91 | |||
| bc61753794 | |||
| 09c67abe58 | |||
| 9777fb2813 | |||
| 21997f3c33 | |||
| d08ee33972 |
@@ -1,74 +0,0 @@
|
|||||||
name: 'Add Application'
|
|
||||||
description: 'Track the process of adding a new application'
|
|
||||||
title: 'Add Application: [Application Name]'
|
|
||||||
labels:
|
|
||||||
- addition
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Application Details
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: application-name
|
|
||||||
attributes:
|
|
||||||
label: Application Name
|
|
||||||
description: Name of the application to be added
|
|
||||||
placeholder: Name of the application
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: application-description
|
|
||||||
attributes:
|
|
||||||
label: Application Description
|
|
||||||
description: Provide a brief description of the application and its purpose
|
|
||||||
placeholder: Description of the application
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: application-reason
|
|
||||||
attributes:
|
|
||||||
label: Reason for Addition
|
|
||||||
description: Please select one or more reasons for adding the application
|
|
||||||
options:
|
|
||||||
- label: New functionality
|
|
||||||
- label: Performance improvement
|
|
||||||
- label: Security enhancement
|
|
||||||
- label: Replacing another application
|
|
||||||
description: Provide the name of the application being replaced, if applicable
|
|
||||||
- label: Other (please specify)
|
|
||||||
description: Provide additional details
|
|
||||||
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Steps to Add
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: steps-to-add
|
|
||||||
attributes:
|
|
||||||
label: Steps to Add
|
|
||||||
description: Please check off each step as it is completed
|
|
||||||
options:
|
|
||||||
- label: Add Configuration Files
|
|
||||||
description: Create and add configuration files for the new application
|
|
||||||
- label: Update Wiki
|
|
||||||
description: Create or update the Wiki page for the new application and update any relevant architecture diagrams or flowcharts
|
|
||||||
- label: Update README(s)
|
|
||||||
description: Add the new application to the main table and any other relevant sections
|
|
||||||
- label: Add to CD Platform Logic
|
|
||||||
description: Add necessary logic to the CD platform for the new application
|
|
||||||
- label: Testing and Validation
|
|
||||||
description: Ensure the application is tested and validated in the environment
|
|
||||||
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Commit IDs for Completed Steps
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: commit-ids
|
|
||||||
attributes:
|
|
||||||
label: Commit IDs
|
|
||||||
description: Enter the commit IDs for the completed steps above
|
|
||||||
placeholder: Enter commit IDs separated by commas
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
name: 'Feature Request'
|
|
||||||
description: 'Suggest a new feature for the project'
|
|
||||||
title: 'Feature Request: [Summary]'
|
|
||||||
labels:
|
|
||||||
- enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
## Feature Request
|
|
||||||
|
|
||||||
**Please fill out this template with the requested information.**
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: summary
|
|
||||||
attributes:
|
|
||||||
label: Summary
|
|
||||||
description: A concise description of the feature you'd like to see added.
|
|
||||||
placeholder: Brief summary of the feature request
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: motivation
|
|
||||||
attributes:
|
|
||||||
label: Motivation
|
|
||||||
description: Explain why this feature would be beneficial to the project. What problem does it solve or what value does it bring?
|
|
||||||
placeholder: Describe the motivation behind the feature request
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: detailed-description
|
|
||||||
attributes:
|
|
||||||
label: Detailed Description
|
|
||||||
description: |
|
|
||||||
Provide a detailed explanation of the proposed feature. Include:
|
|
||||||
- How would this feature be used?
|
|
||||||
- What are the expected benefits of this feature?
|
|
||||||
- Are there any potential drawbacks or limitations to consider?
|
|
||||||
placeholder: Provide a detailed description of the feature
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: additional-context
|
|
||||||
attributes:
|
|
||||||
label: Additional Context
|
|
||||||
description: |
|
|
||||||
Include any relevant information such as:
|
|
||||||
- Links to external resources (e.g., documentation, articles)
|
|
||||||
- Screenshots or mockups to illustrate the feature
|
|
||||||
- Use cases and examples of how the feature would be used
|
|
||||||
placeholder: Add any other context or screenshots about the feature request here
|
|
||||||
@@ -26,4 +26,5 @@ jobs:
|
|||||||
echo "StrictHostKeyChecking no" >> ~/.ssh/config
|
echo "StrictHostKeyChecking no" >> ~/.ssh/config
|
||||||
echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ~/.vault_password.txt
|
echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ~/.vault_password.txt
|
||||||
echo "nameserver 10.10.10.1" > /etc/resolv.conf
|
echo "nameserver 10.10.10.1" > /etc/resolv.conf
|
||||||
./.gitea/workflows/deploy.sh "${{ github.event.before }}" "${{ github.sha }}"
|
ansible-galaxy install -r requirements.yml
|
||||||
|
ansible-playbook main.yml --vault-password-file ~/.vault_password.txt
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
changed_tasks=($(git diff --name-only $1 $2 | grep '\.yml$'))
|
|
||||||
if [ ! -z "$changed_tasks" ]; then
|
|
||||||
for task in "${changed_tasks[@]}"; do
|
|
||||||
tag=$(echo "$task" | awk -F/ '{print $2}')
|
|
||||||
if [[ "$tag" != "deploy-homelab.yml" && "$tag" != "main.yml" && "$tag" != "all.yml" && "$tag" != "all.example.yml" && "$tag" != "ISSUE_TEMPLATE" && "$tag" != "workflows" ]] ; then
|
|
||||||
tag=${tag%.*}_install
|
|
||||||
ansible-galaxy install -r requirements.yml
|
|
||||||
echo "Running playbook with tag: $tag"
|
|
||||||
ansible-playbook main.yml --tags "$tag" --vault-password-file ~/.vault_password.txt
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "No changes detected in task files. Skipping Ansible playbook execution."
|
|
||||||
fi
|
|
||||||
27
all.yml
Normal file
27
all.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
become: yes
|
||||||
|
name: Configure all servers
|
||||||
|
pre_tasks:
|
||||||
|
- name: Create directories
|
||||||
|
file:
|
||||||
|
path: "/data"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Setup base system
|
||||||
|
import_tasks: tasks/base.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: geerlingguy.docker
|
||||||
|
docker_users:
|
||||||
|
- administrator
|
||||||
|
tasks:
|
||||||
|
- name: Gather facts (always, even with tags)
|
||||||
|
ansible.builtin.setup:
|
||||||
|
tags: always
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: proxmox
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Delete existing template
|
|
||||||
community.general.proxmox_kvm:
|
|
||||||
api_host: "{{ api_host }}"
|
|
||||||
api_user: "{{ api_user }}"
|
|
||||||
api_password: "{{ api_password }}"
|
|
||||||
node: "{{ node_target }}"
|
|
||||||
name: "debian-12-generic-amd64"
|
|
||||||
state: absent
|
|
||||||
|
|
||||||
- name: Download cloud-init image
|
|
||||||
register: image
|
|
||||||
ansible.builtin.get_url:
|
|
||||||
url: "https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2"
|
|
||||||
dest: /tmp
|
|
||||||
mode: "0644"
|
|
||||||
force: true
|
|
||||||
|
|
||||||
- name: Install Tools
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name:
|
|
||||||
- libguestfs-tools
|
|
||||||
- python3
|
|
||||||
- python3-pip
|
|
||||||
- python3-proxmoxer
|
|
||||||
update_cache: true
|
|
||||||
install_recommends: false
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Install Tools to cloud-init image
|
|
||||||
ansible.builtin.shell: |
|
|
||||||
virt-customize -a {{ image.dest }} --run-command 'sed -i "s|primary.*|primary: https://deb.debian.org/debian|g" /etc/cloud/cloud.cfg'
|
|
||||||
virt-customize -a {{ image.dest }} --run-command 'apt update'
|
|
||||||
virt-customize -a {{ image.dest }} --install qemu-guest-agent
|
|
||||||
|
|
||||||
- name: Create new VM template from cloud-init image
|
|
||||||
community.general.proxmox_kvm:
|
|
||||||
api_host: "{{ api_host }}"
|
|
||||||
api_user: "{{ api_user }}"
|
|
||||||
# api_password: "{{ api_password }}"
|
|
||||||
api_token_id: "{{ api_token_id }}"
|
|
||||||
api_token_secret: "{{ api_token_secret }}"
|
|
||||||
api_port: "8006"
|
|
||||||
node: "{{ node_target }}"
|
|
||||||
name: "debian-12-generic-amd64"
|
|
||||||
agent: "enabled=1"
|
|
||||||
bios: ovmf
|
|
||||||
boot: "order=scsi0"
|
|
||||||
cores: 4
|
|
||||||
sockets: 1
|
|
||||||
machine: q35
|
|
||||||
memory: 4096
|
|
||||||
ostype: "l26"
|
|
||||||
vga: std
|
|
||||||
scsihw: "virtio-scsi-single"
|
|
||||||
net:
|
|
||||||
net0: "virtio,bridge=vmbr0,firewall=1,tag=10"
|
|
||||||
ipconfig:
|
|
||||||
ipconfig0: "ip=dhcp"
|
|
||||||
template: true
|
|
||||||
timeout: 600
|
|
||||||
vmid: 10000
|
|
||||||
|
|
||||||
- name: Import HDD to Template
|
|
||||||
command:
|
|
||||||
cmd: "qm set 10000 --scsi0 {{ storage_target }}:0,iothread=1,discard=on,import-from=/tmp/debian-13-generic-amd64.qcow2,format=raw"
|
|
||||||
24
cloud.yml
Normal file
24
cloud.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
- hosts: cloud
|
||||||
|
become: yes
|
||||||
|
vars:
|
||||||
|
traefik_host: "vps02.comprofix.com"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Deploy traefik
|
||||||
|
import_tasks: tasks/traefik.yml
|
||||||
|
|
||||||
|
- name: Deploy postgres
|
||||||
|
import_tasks: tasks/postgres.yml
|
||||||
|
|
||||||
|
- name: Deploy Vaultwarden
|
||||||
|
import_tasks: tasks/vaultwarden.yml
|
||||||
|
tags: vaultwarden_install
|
||||||
|
|
||||||
|
- name: Deploy gitea
|
||||||
|
import_tasks: tasks/gitea.yml
|
||||||
|
tags: gitea_install
|
||||||
|
|
||||||
|
- name: Gotify
|
||||||
|
import_tasks: tasks/gotify.yml
|
||||||
|
tags: gotify_install
|
||||||
96
docker.yml
Normal file
96
docker.yml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
---
|
||||||
|
- hosts: docker
|
||||||
|
become: yes
|
||||||
|
vars_files:
|
||||||
|
- vars/gitea-images.yml
|
||||||
|
vars:
|
||||||
|
traefik_host: "traefik.comprofix.xyz"
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Connect iscsi
|
||||||
|
import_tasks: tasks/iscsi.yml
|
||||||
|
vars:
|
||||||
|
iscsi_targets:
|
||||||
|
- iqn: iqn.2005-10.org.freenas.ctl:iscsi-docker
|
||||||
|
portal: 10.10.10.2
|
||||||
|
mount_point: /data
|
||||||
|
tags: iscsi_connect
|
||||||
|
|
||||||
|
- name: Connect NFS
|
||||||
|
import_tasks: tasks/nfs.yml
|
||||||
|
vars:
|
||||||
|
mounts:
|
||||||
|
- name: Data share
|
||||||
|
path: /mnt/nfs/data
|
||||||
|
src: truenas.comprofix.xyz:/mnt/datapool/docker
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Deploy traefik website
|
||||||
|
import_tasks: tasks/traefik.yml
|
||||||
|
|
||||||
|
- name: Deploy iDrac Fan Controller
|
||||||
|
import_tasks: tasks/idrac.yml
|
||||||
|
tags: idrac_install
|
||||||
|
|
||||||
|
- name: Deploy Planka
|
||||||
|
import_tasks: tasks/planka.yml
|
||||||
|
|
||||||
|
- name: Deploy MariaDB
|
||||||
|
import_tasks: tasks/mariadb.yml
|
||||||
|
tags: mariadb_install
|
||||||
|
|
||||||
|
- name: Deploy InvoiceNinja
|
||||||
|
import_tasks: tasks/invoiceninja.yml
|
||||||
|
tags: invoiceninja_install
|
||||||
|
|
||||||
|
- name: Deploy Homepage
|
||||||
|
import_tasks: tasks/homepage.yml
|
||||||
|
tags: homepage_install
|
||||||
|
|
||||||
|
- name: Deploy speedtest-tracker
|
||||||
|
import_tasks: tasks/speedtest.yml
|
||||||
|
tags: speedtest_install
|
||||||
|
|
||||||
|
- name: Deploy dozzle
|
||||||
|
import_tasks: tasks/dozzle.yml
|
||||||
|
tags: dozzle_install
|
||||||
|
|
||||||
|
- name: Deploy jellyseerr
|
||||||
|
import_tasks: tasks/jellyseerr.yml
|
||||||
|
tags: jellyseerr_install
|
||||||
|
|
||||||
|
- name: Deploy lidarr
|
||||||
|
import_tasks: tasks/lidarr.yml
|
||||||
|
tags: lidarr_install
|
||||||
|
|
||||||
|
- name: Deploy prowlarr
|
||||||
|
import_tasks: tasks/prowlarr.yml
|
||||||
|
tags: prowlarr_install
|
||||||
|
|
||||||
|
- name: Deploy radarr
|
||||||
|
import_tasks: tasks/radarr.yml
|
||||||
|
tags: radarr_install
|
||||||
|
|
||||||
|
- name: Deploy sonarr
|
||||||
|
import_tasks: tasks/sonarr.yml
|
||||||
|
tags: sonarr_install
|
||||||
|
|
||||||
|
- name: Deploy sabnzbd
|
||||||
|
import_tasks: tasks/sabnzbd.yml
|
||||||
|
tags: sabnzbd_install
|
||||||
|
|
||||||
|
- name: Deploy mealie
|
||||||
|
import_tasks: tasks/mealie.yml
|
||||||
|
tags: mealie_install
|
||||||
|
|
||||||
|
- name: Deploy pyKMS
|
||||||
|
import_tasks: tasks/pykms.yml
|
||||||
|
tags: pykms_install
|
||||||
|
|
||||||
|
- name: Deploy mediawiki
|
||||||
|
import_tasks: tasks/mediawiki.yml
|
||||||
|
tags: mediawiki_install
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tags: dockerserver_install
|
||||||
10
frigate.yml
10
frigate.yml
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: frigate
|
|
||||||
become: yes
|
|
||||||
pre_tasks:
|
|
||||||
- name: Base Install
|
|
||||||
include_tasks: tasks/base.yml
|
|
||||||
roles:
|
|
||||||
- role: docker
|
|
||||||
tags: docker_install
|
|
||||||
tags: frigate_install
|
|
||||||
@@ -1,105 +1,102 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
37623630336330623066643530623265303739643661316133316664303338363230353531666263
|
32383865376334343361663231366634376235663132356263663163303333323835363637396139
|
||||||
6162306264303866393030616532663465343931383264360a336166613163386566623339343963
|
3238343638613366373865323665306331383931383837320a316436376266383337396666333464
|
||||||
65623639326134373462396532323738383664316433333261336563636333353365643763663363
|
62633665646137356563316639643139376463396135343362326637616339303762333861633862
|
||||||
6339616662383730370a383736626238643963356666616434323463343639653634323463396339
|
3961353538363235660a646231666237333730313536356561353837353564313133663336303862
|
||||||
64653432353036326630333362353561616238653531386163363533306139616533616134316565
|
32366366613362643938316439353835633963376463353239373533643330306630386639353432
|
||||||
61653164346334346564336431346435303330333835303065363631366363313538616366656363
|
37373736613262646635643833646261356432393463323237623865616464616264303638633662
|
||||||
31653062633135613262366436323234393962623766653466383234353065353130393762636263
|
39623233646138353036353237303766656466376138316633366239396238313734306364393330
|
||||||
33303739343934383363386161326331336430633434656564306633333337653531356532386163
|
32346161376262393862376638616464383963646362366432656437653363393430326263316666
|
||||||
31346265383239303834633961376234343365666262656239323137336561356132323630376361
|
34383732613461346266313061363231626561346363653932613166613031633435666130376337
|
||||||
31626132386562353862396233323835313838333363613531656137336538643335396335663731
|
37643963356262613862646639386263306238383364336635613461333166366261613335363132
|
||||||
36393534653565393839393033623966626162353865353235613964326536346437306632386365
|
34393062353363313637626165313932646335616461326463646534386132663564366564633761
|
||||||
39353139343130346663363632376466393938313438326531353466626637323233313665626438
|
31363033633533366562306236303338336165646564353861356664613539373864353938396561
|
||||||
38366134313966303766306265303864643232306439356264663164356432643731373532363265
|
66316265306161616136303231383034636366313133363061656534313332653261626566623462
|
||||||
62643039653933333331613031376366636430316436643336623665623663396639626133646138
|
64353230316136393764346265666663636134313035613962363831643730643738346132376338
|
||||||
39306561633233343931386231616331323839643530626562316462666230336263323533313837
|
63386136626637646634393563356633383734666138333936303965396432393766643435363832
|
||||||
61623035363536353933346431656134333464336535333239653038306331643463643732663439
|
61383766333937623036393064633934663438643536333939383335613338653934353462626462
|
||||||
34303030323662666230306334363934613738386138386538343833323964326234616139393838
|
37306538666438666137666230346332633966613565653634343437626336343463356337353635
|
||||||
65313633306361383365306232373230386433653233323630383332363134636366366661653030
|
37383334323765346263303039353734313635663164393065393738343037303238386465313634
|
||||||
39353232303731393930656432633261373136353336613966633838373937363865313663323237
|
63613931666164303631323136623039633166373530303734393936633661633266366164333365
|
||||||
62363639643835303865636632316533336265666138303636623162616464383066336631666361
|
38623762326136613761636361326632376534653133653836393362663564336532616334663765
|
||||||
36363264393566383466646332336339306264313738616137633938626366383030656631386236
|
34306237353437303064666431393732333335373264326466333033326664343737333262623261
|
||||||
61393664633563363831333332386332636138323466343034363338626236666130383061303662
|
63303662616536323730636333306133666636373838386630626262393734626337346430646432
|
||||||
64383561643536653337653738346438396166346634633565646339623361363536656264373035
|
39373937313439356362353135303834366334386438623936346332383032613431356264376464
|
||||||
63326536633834646663616263343039346138376166336538643035323034306234376139373033
|
35323232386136303532343965366232376632303665623539656263323761343032336664303031
|
||||||
62356337313063306463323463623764306337626230613236373431663738333862373632666332
|
32323035663661633063653162653132343130366431363431666333613739616161313561323931
|
||||||
39343262373533303762613136346532663930393562323462383431333163653937386132653562
|
30366236343939616463616137653131633864323335373362646266313266326530653766373865
|
||||||
61363134303635626331383961633232323931306263396334396239316361383862353566613134
|
66306364643234643762636665353364393065396637633161386635383466326532613137626634
|
||||||
37373766616264353930663763393763353933656666363963313362333234383530636366383737
|
35373565326431653233653832393039363231383632316638303262666338633462626533373333
|
||||||
62376566346135326338636436383931633137353530323135343538366566623666633933663433
|
63333832613134666636303434663663623264303766393662616632393961393037306365373332
|
||||||
38356531346461313834663364343033323262333864626430653939653563366566636661366263
|
32333135363661653136333062643564303362623739636634363664303765336432353332633366
|
||||||
34363333383435383965353434323764393863666135363462323361656137323931363531376434
|
62356663623832656366373766353839376339306661303731306231386238396331386630623931
|
||||||
33393938353764343062313234396436653232383033353237646463393536383431626265663265
|
62336336346163663032356163626366626236303563653061303439326364333362363237343439
|
||||||
31363662383830633165386661653161646264613032323234313631613635313030383339363334
|
65353236306237363237303936663161363631373064303635346463636363636634363533363035
|
||||||
65343736383133333561363334613362343136623737386663316161666363323731393636343039
|
63313338663438376635653933613933613437376135393339393636346236633039393661333366
|
||||||
62626662336431303432373866326461656561323961636663376234336638663830316337333432
|
38616331646663386662333765633162376366333236396138653533613861363063623734386234
|
||||||
61336330633866346533386661643463623539386361623666623965613062306164393766353237
|
62386238396135386632626135643731346430393038633231333032393265633235336330626139
|
||||||
30393966383332323235313239396437623339363736666632316532666437656465623436343439
|
30633464383638666235323032666433636662653936626237336135363331663330383231376265
|
||||||
61393635653032633966323465613065343932633231333238386338366161656135656361653962
|
34343436366363653030333336376430343266303530373335636438336164393330326665376566
|
||||||
66663334363862376663323066323534323262333531366234663161623863386464343436343431
|
30636164316266336534633363633833616231626138373962333435393064383538343861626434
|
||||||
37313361356534373965643630356430626237653834303861653631316330316361343935323838
|
34306161393965363566623964366262313034656638303330363034303934393731323163666533
|
||||||
31373436396130326630326533636565396565623664383263383934343062383739323063353966
|
30303136656230306337373835303531623339383666646332336135613930383637623765393861
|
||||||
31313733616533626538393938386336353930646662313331343134316161353366623932353739
|
37366366376630343662346266613064303031363437323863646336376333323864393132313135
|
||||||
62653139306439663233393963343666346366626331373962386133336339323838396431333063
|
62396466313637613263626138323038343463386231646136656662636262333665393564633161
|
||||||
33303563623337383731306234333833323338626361366564653531656133633163323062396465
|
61636532663435653834333438393936663433626137313236396531323638633330343132613762
|
||||||
64366339343261303566303335353861613862353264373766336365313864333863316634626538
|
35346433323135626163646362306663366161393766626637326335353434636138363266373838
|
||||||
65356566373563643531613664313633616639343234656537636131643034663539316165346137
|
66353839323635316365663438343566336230373539643762366637653163616630616666623361
|
||||||
39353331653463646363303038306636383831333931616266613265663930623532373037636261
|
66373035393930303530633130643130653231623463346430383233366336373761333739633863
|
||||||
33376531393732613561356662613832396133333566633166313630663664373066646361313138
|
37316462326133326136323461363037663264616138393039616439613966383132343365373762
|
||||||
34663235386639313330643764343339326539316237333766366633666436636432373638616266
|
66666263373165336239353966373432366362336333333539663831313265366361383830383638
|
||||||
63636165306234653635393936663261383331333361353133383538313461363862313562313935
|
63353534643535323362616662646362363163373537353635343534626131666666396134303836
|
||||||
36303462356631316437636636643562333265343765633635623664393965333832613561666566
|
31623731343361343637626436636566323064626334383834633232653135353237343238313932
|
||||||
30636231333666323065336335333964366434323631616330383139663065636130613035616530
|
66353439363838393030643639356636313536343866313231366536376634363738323666643230
|
||||||
63383937393466326634363138623030333534616464666261656134326439323564356261333638
|
31663333633438343634396563373665376333333066353030616462356535623436613238303236
|
||||||
39313935376135356363623066323862663665373136316466396338623363326164346363353631
|
66643737376664323862306639303536326261313830383931306539653863353636636233313238
|
||||||
63303462303832333335663364353866353439376432323232613432366530626334623635393937
|
63316163393638643561356136653735643835633532396366323735393839376230373431613336
|
||||||
66333262666131633363633432636530303562373935313737343866333364336466306331646664
|
38316439616532363838663130653062643336653431663031656530353830373164383161343733
|
||||||
63396166643835313431663530663638616436643337373033626538616265356666646433393036
|
32633133626633323237343831383031396234373361653639306134303234363561636265636135
|
||||||
38373532393731393539653036313363363033343837393635316636306662353964333434306630
|
33636563303466326536353635666165616130383063316661386432633562383161633731396161
|
||||||
63363435386639316264373632316530636166336563333132616433663164333065613664343966
|
37613539633139396636653932316161633461366138613066373633633430633532623662346561
|
||||||
61353161623131363630636264353661346430666634623031333562303630383463333238393638
|
38613930316662363735333038616261353733353931623266663334303233613265623638383330
|
||||||
37363562363034316538303631386136373236623731653336393830633536393930333764393665
|
31613139303631353139386139656661343266616138366630626364356431396435666639376636
|
||||||
30623731666330623334373136313837323731353738386665653733323466613362356137303365
|
31306632363236666133323532356435653331373561323633316466626632373233663961663834
|
||||||
66633161663566653331656239643431356465366635346435323636353064613664643864616631
|
64613238613631393439353638346333656239343562643362366364346338643366353335626239
|
||||||
33383765396333366338313030383532343663323463326466646632386461306663666464313063
|
30336539343333626364313764356233366631626530633834613730646135353332366133646433
|
||||||
61333936666435323765323361353165326134373165613332613161376264616564313862343262
|
35373563333139353439353866633639343864326332346432613936356236373937363936613936
|
||||||
35646664643039373335373134613966353635653361383932343439343230653663616436363639
|
32373464393530376537616264316134383437383735383030393534343262666639636237303534
|
||||||
65326665656130323530326463303766613761396263646364363564303935353739336134303732
|
38643432323036306566316434663063643462623938383532353137613436333930626664376237
|
||||||
39613639613661393136623035303266653934343163643938313862333538326137646330353832
|
64643334633731343266656361323837313461376333313964626361613365376563333866663632
|
||||||
61366537313234386334396362616366616435343165313232383534356461326536333563623362
|
61373734313235656364393763373330313263333765613363636539336133396137666336373839
|
||||||
64373166623736663335653062663234663931646432376337356164613935363333353031623938
|
37623966303964316364366562323335323765393365663433386233373038356634646464396238
|
||||||
31346332653831383635666463343065376638326535646663393535303638646266363265373835
|
37326234373461343036303236623237333863313665303161646437353836323234653331383366
|
||||||
66333161663833396135633436623461353237353533363366656436336563326536666532373862
|
37343436656135356465656134653831346233376134313535306538653333376337653039313835
|
||||||
61383030663263666165373764353232613963666231373636313363366366313231346534613632
|
36383165336463613835396633663937653232366264616161666339373133326362613662313364
|
||||||
37626630363335386165353766333339363864636437356166363437326233623763326262653663
|
66613764363634646430333039643863616631666666323364646231343266653235636661653961
|
||||||
65303766623062633964653662326236643461633364383866313165343462303134393738643433
|
63626161613933316465313965303435626266366230393634353062353832643261353961393131
|
||||||
38636465663730663634353633386639633765313833333336346135393861306166336135303535
|
32373839613936333233636331323530663965386430663763623065616433386166313130383863
|
||||||
65346434653236396436393736393836366139386338393336376562653536356639653738623965
|
36376433653236343364393231666236303731333134353738656138343036313237316362613964
|
||||||
33336438343634666563646131653263616135633035326538616530313864336431316131613438
|
39636137303661343462313033363466663335343566383939643961613539633231373264386165
|
||||||
37646666393636303932663536303163396235646536623632326264313864636465363530626235
|
35373636363834333231333666656333303836663139623161373338643234626233393635326638
|
||||||
32316330613433366666643665343738616139346434653133646438383663313532383836373730
|
34323639346135666331643239326261633836323861646338336161313961396665383438306238
|
||||||
31323533666637323062303561353263653134393736373965333030343566316165623266346132
|
64613938333863303161613665353063613434336438613361336434653963306632323063613932
|
||||||
63666236663565666238666330666561636432636162663535633963633264363836303039666135
|
66623837373831613063633739633466373534663762663565356137393834636332613464643932
|
||||||
35306561623065633462343335343465636539613631616365396138636437343237373163343861
|
32626433623630333236363536656162386333653365303238633237376163336131643065636261
|
||||||
65303465396434646133386162373365303761306238303664316638386538393633616131626538
|
62366531373664343739303661623637666261656538346663306261353630346563623635633535
|
||||||
30303736646236366131663662396131396263636335643936363433373761326365616435666662
|
35353665356535386435653961343435623563613930393566323165326562656561353831313639
|
||||||
31383265393738383436356334363764613134633138363332313630353031343234633332636263
|
31646333303838303133626566383139636433346338626464303261373963343933333162393236
|
||||||
33636535636434386238653433306231326566373663323066353931313530353964386265336539
|
64366466303137663366303434326438346533346437626162313464653064643861613433353861
|
||||||
34336466613466386134363230333366616235623264303533326464636163323766356361373134
|
36643664366364396364333933646531656239646564666139323936313936623733363939393932
|
||||||
61326137303465356436353738366330363261663533663235626534356463636438626631636161
|
61346330356237393532373961616134656563383338386239363961363432386331306465363330
|
||||||
33643332303666313939643936636236383430626337393737323566653235383464616335393135
|
65616433366132656230373833623065333166383862656162393138366439393563643261326336
|
||||||
62333931383033343033626663316464313565646330623033656437633533386633666438363737
|
36383034323932306431653231316236663466613035303335623731346466373230646461396437
|
||||||
31363565323566613337623131666639306530396165623639366532633063626634623762303338
|
64343930383435393936646666633163373034323564306238343263346166306332343537663934
|
||||||
61646337663137626531326330303766663665323430363534316135633334376361313363616632
|
34623961333036323038623635623661313635616334353137653633333038353361316130633565
|
||||||
33366163306564356138656236653764353239366437326562306539653563346461316430353063
|
32663631643366356434346639363666613639643730313337653839343532343735323265313135
|
||||||
36656537396636363362363631623236393133306164383433353664326536616338663462376266
|
33303736363465613335323234373465383937396330383463376262313637393132663631333239
|
||||||
35383766613164353838323332383031333633613830663239666438383833626134393636353339
|
66643532663134623465383133363738646636346631353739393433333436626662343864623233
|
||||||
34323233313430393334303139616433336364373762643363313833653161323739333736393262
|
66643538303165306538626130313834323461653036643932313630363533323065636230356438
|
||||||
33313635323633643765626366616633386530396232333235383739356535346362303631343235
|
65393738336638623163363063346638646139646663346537306630616239633662663335386437
|
||||||
63616134393264343834336130343862353964303762313938666334663663363738643234396430
|
62303832643766396262353836363338356566663930303861396563323133646366623262303863
|
||||||
61613832373165616439636133376138626439363266613439313063646331376531323437313065
|
34383934313666636431663765666334643137613439336334653339316539306562373365373637
|
||||||
66363839623232626534323236303132663939386238396532363438623861613331643336613731
|
3664
|
||||||
63393434336266343636666335336663313236313234353462623564383861333734366530326438
|
|
||||||
31323665396531333366393864336431656163633636636131343730356163386537363137393833
|
|
||||||
64376336616361653833
|
|
||||||
|
|||||||
11
hosts.ini
11
hosts.ini
@@ -1,3 +1,7 @@
|
|||||||
|
[all:vars]
|
||||||
|
ansible_shell_type = sh
|
||||||
|
ansible_shell_executable = /bin/bash
|
||||||
|
|
||||||
[cloud]
|
[cloud]
|
||||||
vps02.comprofix.com
|
vps02.comprofix.com
|
||||||
|
|
||||||
@@ -10,7 +14,6 @@ omada-lxc.comprofix.xyz ansible_user=root
|
|||||||
[vps]
|
[vps]
|
||||||
vps01.comprofix.com
|
vps01.comprofix.com
|
||||||
|
|
||||||
[jellyfin]
|
[internetfacing]
|
||||||
jellyfin.comprofix.xyz
|
vps01.comprofix.com
|
||||||
|
vps02.comprofix.com
|
||||||
|
|
||||||
35
internetfacing.yml
Normal file
35
internetfacing.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
- name: Install fail2ban on internet facing servers
|
||||||
|
hosts: internetfacing
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: grzegorzfranus.fail2ban
|
||||||
|
vars:
|
||||||
|
fail2ban_ignoreip:
|
||||||
|
- 127.0.0.1/8 # loopback
|
||||||
|
- 10.0.0.0/8 # Private
|
||||||
|
- 172.16.0.0/12 # Private
|
||||||
|
- 192.168.0.0/16 # Private
|
||||||
|
- 169.254.0.0/16 # link-local / APIPA
|
||||||
|
- 100.64.0.0/10 # CGNAT
|
||||||
|
- 203.0.113.0/24 # TEST-NETs
|
||||||
|
- 192.0.2.0/24 # TEST-NETs
|
||||||
|
- 198.51.100.0/24 # TEST-NETs
|
||||||
|
- ::1 # ULA - fc00::/7 # Private
|
||||||
|
- fe80::/10 # Private
|
||||||
|
fail2ban_bantime: "1h"
|
||||||
|
fail2ban_findtime: "30m"
|
||||||
|
fail2ban_maxretry: 3
|
||||||
|
fail2ban_custom_jail_files:
|
||||||
|
- name: sshd-strict # This will create /etc/fail2ban/jail.d/sshd-strict.conf
|
||||||
|
content: |
|
||||||
|
[sshd-strict]
|
||||||
|
enabled = true
|
||||||
|
filter = sshd
|
||||||
|
port = ssh
|
||||||
|
logpath = journal
|
||||||
|
backend = systemd
|
||||||
|
maxretry = 3
|
||||||
|
bantime = 3600
|
||||||
|
findtime = 300
|
||||||
|
|
||||||
203
main.yml
203
main.yml
@@ -1,200 +1,7 @@
|
|||||||
---
|
---
|
||||||
- hosts: all
|
- import_playbook: all.yml
|
||||||
name: Configure all servers
|
- import_playbook: internetfacing.yml
|
||||||
tasks:
|
- import_playbook: cloud.yml
|
||||||
- name: Gather facts (always, even with tags)
|
- import_playbook: docker.yml
|
||||||
ansible.builtin.setup:
|
- import_playbook: omada.yml
|
||||||
tags: always
|
|
||||||
|
|
||||||
|
|
||||||
- name: Prepare all servers
|
|
||||||
hosts: all
|
|
||||||
become: true
|
|
||||||
pre_tasks:
|
|
||||||
- name: Create directories
|
|
||||||
file:
|
|
||||||
path: "/data"
|
|
||||||
state: directory
|
|
||||||
|
|
||||||
- name: Setup base system
|
|
||||||
import_tasks: tasks/base.yml
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: geerlingguy.docker
|
|
||||||
docker_users:
|
|
||||||
- administrator
|
|
||||||
|
|
||||||
- role: grzegorzfranus.fail2ban
|
|
||||||
vars:
|
|
||||||
fail2ban_ignoreip:
|
|
||||||
- 127.0.0.1/8 # loopback
|
|
||||||
- 10.0.0.0/8 # Private
|
|
||||||
- 172.16.0.0/12 # Private
|
|
||||||
- 192.168.0.0/16 # Private
|
|
||||||
- 169.254.0.0/16 # link-local / APIPA
|
|
||||||
- 100.64.0.0/10 # CGNAT
|
|
||||||
- 203.0.113.0/24 # TEST-NETs
|
|
||||||
- 192.0.2.0/24 # TEST-NETs
|
|
||||||
- 198.51.100.0/24 # TEST-NETs
|
|
||||||
- ::1 # ULA - fc00::/7 # Private
|
|
||||||
- fe80::/10 # Private
|
|
||||||
fail2ban_bantime: "1h"
|
|
||||||
fail2ban_findtime: "30m"
|
|
||||||
fail2ban_maxretry: 3
|
|
||||||
fail2ban_custom_jail_files:
|
|
||||||
- name: sshd-strict # This will create /etc/fail2ban/jail.d/sshd-strict.conf
|
|
||||||
content: |
|
|
||||||
[sshd-strict]
|
|
||||||
enabled = true
|
|
||||||
filter = sshd
|
|
||||||
port = ssh
|
|
||||||
logpath = journal
|
|
||||||
backend = systemd
|
|
||||||
maxretry = 3
|
|
||||||
bantime = 3600
|
|
||||||
findtime = 300
|
|
||||||
tags: base_install
|
|
||||||
|
|
||||||
|
|
||||||
- hosts: cloud
|
|
||||||
become: yes
|
|
||||||
roles:
|
|
||||||
- name: traefik
|
|
||||||
vars:
|
|
||||||
traefik_host: traefik01.comprofix.com
|
|
||||||
tags: traefik_install
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Deploy Vaultwarden
|
|
||||||
import_tasks: tasks/vaultwarden.yml
|
|
||||||
tags: vaultwarden_install
|
|
||||||
|
|
||||||
- name: Deploy gitea
|
|
||||||
import_tasks: tasks/gitea.yml
|
|
||||||
tags: gitea_install
|
|
||||||
|
|
||||||
- name: Gotify
|
|
||||||
import_tasks: tasks/gotify.yml
|
|
||||||
tags: gotify_install
|
|
||||||
tags: cloud_install
|
|
||||||
|
|
||||||
- hosts: docker
|
|
||||||
become: yes
|
|
||||||
vars_files:
|
|
||||||
- vars/gitea-images.yml
|
|
||||||
|
|
||||||
pre_tasks:
|
|
||||||
- name: Connect iscsi
|
|
||||||
import_tasks: tasks/iscsi.yml
|
|
||||||
tags: iscsi_connect
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: nfs
|
|
||||||
mounts:
|
|
||||||
- name: Data share
|
|
||||||
path: /mnt/nfs/data
|
|
||||||
src: truenas.comprofix.xyz:/mnt/datapool/data
|
|
||||||
tags: nfs_install
|
|
||||||
|
|
||||||
- role: traefik
|
|
||||||
vars:
|
|
||||||
traefik_host: traefik02.comprofix.xyz
|
|
||||||
tags: traefik_install
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Deploy comprofix.com website
|
|
||||||
import_tasks: tasks/comprofix.com.yml
|
|
||||||
tags: comprofix_install
|
|
||||||
|
|
||||||
- name: Deploy iDrac Fan Controller
|
|
||||||
import_tasks: tasks/idrac.yml
|
|
||||||
tags: idrac_install
|
|
||||||
|
|
||||||
- name: Deploy MariaDB
|
|
||||||
import_tasks: tasks/mariadb.yml
|
|
||||||
tags: mariadb_install
|
|
||||||
|
|
||||||
- name: Deploy InvoiceNinja
|
|
||||||
import_tasks: tasks/invoiceninja.yml
|
|
||||||
tags: invoiceninja_install
|
|
||||||
|
|
||||||
- name: Deploy Homepage
|
|
||||||
import_tasks: tasks/homepage.yml
|
|
||||||
tags: homepage_install
|
|
||||||
|
|
||||||
- name: Deploy speedtest-tracker
|
|
||||||
import_tasks: tasks/speedtest.yml
|
|
||||||
tags: speedtest_install
|
|
||||||
|
|
||||||
- name: Deploy dozzle
|
|
||||||
import_tasks: tasks/dozzle.yml
|
|
||||||
tags: dozzle_install
|
|
||||||
|
|
||||||
- name: Deploy jellyseerr
|
|
||||||
import_tasks: tasks/jellyseerr.yml
|
|
||||||
tags: jellyseerr_install
|
|
||||||
|
|
||||||
- name: Deploy lidarr
|
|
||||||
import_tasks: tasks/lidarr.yml
|
|
||||||
tags: lidarr_install
|
|
||||||
|
|
||||||
- name: Deploy prowlarr
|
|
||||||
import_tasks: tasks/prowlarr.yml
|
|
||||||
tags: prowlarr_install
|
|
||||||
|
|
||||||
- name: Deploy radarr
|
|
||||||
import_tasks: tasks/radarr.yml
|
|
||||||
tags: radarr_install
|
|
||||||
|
|
||||||
- name: Deploy sonarr
|
|
||||||
import_tasks: tasks/sonarr.yml
|
|
||||||
tags: sonarr_install
|
|
||||||
|
|
||||||
- name: Deploy sabnzbd
|
|
||||||
import_tasks: tasks/sabnzbd.yml
|
|
||||||
tags: sabnzbd_install
|
|
||||||
|
|
||||||
- name: Deploy mealie
|
|
||||||
import_tasks: tasks/mealie.yml
|
|
||||||
tags: mealie_install
|
|
||||||
|
|
||||||
- name: Deploy pyKMS
|
|
||||||
import_tasks: tasks/pykms.yml
|
|
||||||
tags: pykms_install
|
|
||||||
|
|
||||||
- name: Deploy mediawiki
|
|
||||||
import_tasks: tasks/mediawiki.yml
|
|
||||||
tags: mediawiki_install
|
|
||||||
|
|
||||||
- name: Deploy traggo
|
|
||||||
import_tasks: tasks/traggo.yml
|
|
||||||
tags: traggo_install
|
|
||||||
|
|
||||||
- name: Deploy gitea-runner-homelab
|
|
||||||
import_tasks: tasks/gitea-runner-homelab.yml
|
|
||||||
tags: gitea-runner-homelab_install
|
|
||||||
|
|
||||||
# - name: Deploy mssql
|
|
||||||
# import_tasks: tasks/mssql.yml
|
|
||||||
# tags: mssql_install
|
|
||||||
|
|
||||||
tags: dockerserver_install
|
|
||||||
|
|
||||||
- hosts: omada
|
|
||||||
become: yes
|
|
||||||
roles:
|
|
||||||
- role: nfs
|
|
||||||
mounts:
|
|
||||||
- name: Data share
|
|
||||||
path: /data
|
|
||||||
src: truenas.comprofix.xyz:/mnt/datapool/docker
|
|
||||||
tags: nfs_install
|
|
||||||
tasks:
|
|
||||||
- name: Deploy Dozzle Agent
|
|
||||||
import_tasks: tasks/dozzle-agent.yml
|
|
||||||
tags: dozzle-agent_install
|
|
||||||
|
|
||||||
- name: Deploy Omada
|
|
||||||
import_tasks: tasks/omada.yml
|
|
||||||
tags: omada_install
|
|
||||||
tags: omada_lxc_install
|
|
||||||
|
|||||||
8
omada.yml
Normal file
8
omada.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- name: Setup the omada
|
||||||
|
hosts: omada
|
||||||
|
become: true
|
||||||
|
tasks:
|
||||||
|
- name: Deploy omada controller
|
||||||
|
import_tasks: tasks/omada.yml
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
install_packages: # Add addition packages here
|
|
||||||
- rsyslog
|
|
||||||
- htop
|
|
||||||
- vim-nox
|
|
||||||
- git
|
|
||||||
- zsh
|
|
||||||
- curl
|
|
||||||
- wget
|
|
||||||
- apt-transport-https
|
|
||||||
- ca-certificates
|
|
||||||
- gnupg2
|
|
||||||
- python3
|
|
||||||
- python3-pip
|
|
||||||
- nfs-common
|
|
||||||
- cron
|
|
||||||
- jq
|
|
||||||
- sudo
|
|
||||||
- logwatch
|
|
||||||
- sendemail
|
|
||||||
- libio-socket-ssl-perl
|
|
||||||
- libnet-ssleay-perl
|
|
||||||
- iptables-persistent
|
|
||||||
- rclone
|
|
||||||
- parted
|
|
||||||
- open-iscsi
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Replace sources.list entries for Trixie
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/apt/sources.list
|
|
||||||
regexp: "^deb "
|
|
||||||
line: "deb https://deb.debian.org/debian trixie main"
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Update cache for Trixie
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
force_apt_get: yes
|
|
||||||
|
|
||||||
- name: Dist-upgrade to Trixie
|
|
||||||
apt:
|
|
||||||
upgrade: dist
|
|
||||||
force_apt_get: yes
|
|
||||||
register: trixie_upgrade
|
|
||||||
|
|
||||||
- name: Reboot after Trixie upgrade
|
|
||||||
reboot:
|
|
||||||
reboot_timeout: 600
|
|
||||||
test_command: whoami
|
|
||||||
when:
|
|
||||||
- ansible_virtualization_type != "lxc"
|
|
||||||
- trixie_upgrade.changed
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
# Gather initial facts
|
|
||||||
- name: Gather facts
|
|
||||||
ansible.builtin.setup:
|
|
||||||
|
|
||||||
# Update system and install packages
|
|
||||||
- import_tasks: system_update.yml
|
|
||||||
|
|
||||||
# Upgrade Bookworm -> Trixie if applicable
|
|
||||||
- import_tasks: bookworm_to_trixie.yml
|
|
||||||
when: ansible_distribution_release == "bookworm"
|
|
||||||
|
|
||||||
# Move to Trixie sources.list.d layout
|
|
||||||
- import_tasks: sources_list.yml
|
|
||||||
|
|
||||||
# Remove EXTERNALLY-MANAGED files
|
|
||||||
- import_tasks: python_cleanup.yml
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Find all EXTERNALLY-MANAGED files under /usr/lib/python*
|
|
||||||
find:
|
|
||||||
paths: /usr/lib
|
|
||||||
patterns: "EXTERNALLY-MANAGED"
|
|
||||||
file_type: file
|
|
||||||
recurse: yes
|
|
||||||
register: externally_managed_files
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Delete EXTERNALLY-MANAGED files
|
|
||||||
file:
|
|
||||||
path: "{{ item.path }}"
|
|
||||||
state: absent
|
|
||||||
loop: "{{ externally_managed_files.files }}"
|
|
||||||
when: externally_managed_files.matched > 0
|
|
||||||
become: yes
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Remove old sources.list and sources.list.d
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: absent
|
|
||||||
loop:
|
|
||||||
- /etc/apt/sources.list
|
|
||||||
- /etc/apt/sources.list.d
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Ensure sources.list.d directory exists
|
|
||||||
file:
|
|
||||||
path: /etc/apt/sources.list.d
|
|
||||||
state: directory
|
|
||||||
mode: 0755
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Create Trixie sources.list.d
|
|
||||||
copy:
|
|
||||||
dest: /etc/apt/sources.list.d/debian.sources
|
|
||||||
content: |
|
|
||||||
Types: deb deb-src
|
|
||||||
URIs: https://deb.debian.org/debian
|
|
||||||
Suites: trixie trixie-updates trixie-backports
|
|
||||||
Components: main
|
|
||||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
|
||||||
|
|
||||||
Types: deb deb-src
|
|
||||||
URIs: https://deb.debian.org/debian-security
|
|
||||||
Suites: trixie-security
|
|
||||||
Components: main
|
|
||||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Update APT cache after sources.list.d
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
force_apt_get: yes
|
|
||||||
become: yes
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Ensure debian-archive-keyring is installed
|
|
||||||
apt:
|
|
||||||
name: debian-archive-keyring
|
|
||||||
state: present
|
|
||||||
update_cache: yes
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Update APT cache
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
force_apt_get: yes
|
|
||||||
when: ansible_distribution in ['Debian', 'Ubuntu']
|
|
||||||
|
|
||||||
- name: Upgrade all packages to latest
|
|
||||||
apt:
|
|
||||||
name: "*"
|
|
||||||
state: latest
|
|
||||||
force_apt_get: yes
|
|
||||||
when: ansible_distribution in ['Debian', 'Ubuntu']
|
|
||||||
register: upgrade_result
|
|
||||||
|
|
||||||
- name: Dist-upgrade packages
|
|
||||||
apt:
|
|
||||||
upgrade: dist
|
|
||||||
force_apt_get: yes
|
|
||||||
when: ansible_distribution in ['Debian', 'Ubuntu']
|
|
||||||
register: dist_upgrade_result
|
|
||||||
|
|
||||||
- name: Install required packages
|
|
||||||
apt:
|
|
||||||
name: "{{ install_packages }}"
|
|
||||||
state: present
|
|
||||||
become: yes
|
|
||||||
when: ansible_distribution in ['Debian', 'Ubuntu']
|
|
||||||
register: install_result
|
|
||||||
|
|
||||||
- name: Reboot if required after updates
|
|
||||||
reboot:
|
|
||||||
reboot_timeout: 600
|
|
||||||
test_command: whoami
|
|
||||||
when:
|
|
||||||
- upgrade_result.changed or dist_upgrade_result.changed or install_result.changed
|
|
||||||
- ansible_virtualization_type != "lxc"
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: Gather facts after reboot
|
|
||||||
setup:
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for docker
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
galaxy_info:
|
|
||||||
author: Matthew McKinnon
|
|
||||||
description: Mounting NFS filesystem
|
|
||||||
company: support@comprofix.com
|
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
|
|
||||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
|
||||||
# - BSD-3-Clause (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPL-2.0-or-later
|
|
||||||
# - GPL-3.0-only
|
|
||||||
# - Apache-2.0
|
|
||||||
# - CC-BY-4.0
|
|
||||||
license: license (GPL-2.0-or-later, MIT, etc)
|
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
|
||||||
|
|
||||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
|
||||||
# min_ansible_container_version:
|
|
||||||
|
|
||||||
#
|
|
||||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
|
||||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
|
||||||
# To view available platforms and versions (or releases), visit:
|
|
||||||
# https://galaxy.ansible.com/api/v1/platforms/
|
|
||||||
#
|
|
||||||
# platforms:
|
|
||||||
# - name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 25
|
|
||||||
# - name: SomePlatform
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 1.0
|
|
||||||
# - 7
|
|
||||||
# - 99.99
|
|
||||||
|
|
||||||
galaxy_tags: []
|
|
||||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
|
||||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
|
||||||
# remove the '[]' above, if you add tags to this list.
|
|
||||||
#
|
|
||||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
|
||||||
# Maximum 20 tags per role.
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
|
||||||
# if you add dependencies to this list.
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Add Docker apt key.
|
|
||||||
ansible.builtin.get_url:
|
|
||||||
url: "{{ docker_apt_gpg_key }}"
|
|
||||||
dest: /etc/apt/trusted.gpg.d/docker.asc
|
|
||||||
mode: "0644"
|
|
||||||
force: false
|
|
||||||
checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}"
|
|
||||||
ignore_errors: true
|
|
||||||
|
|
||||||
- name: Add Docker repository.
|
|
||||||
apt_repository:
|
|
||||||
repo: "{{ docker_apt_repository }}"
|
|
||||||
state: present
|
|
||||||
filename: "{{ docker_apt_filename }}"
|
|
||||||
update_cache: true
|
|
||||||
|
|
||||||
- name: Install Docker packages.
|
|
||||||
package:
|
|
||||||
name: "{{ docker_packages }}"
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
- name: Install Docker Module for Python
|
|
||||||
pip:
|
|
||||||
name:
|
|
||||||
- PyYAML==5.3.1
|
|
||||||
- docker
|
|
||||||
- docker-compose
|
|
||||||
- pymysql
|
|
||||||
- passlib
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
- name: Ensure docker users are added to the docker group.
|
|
||||||
user:
|
|
||||||
name: "{{ item }}"
|
|
||||||
groups: docker
|
|
||||||
append: true
|
|
||||||
with_items: "{{ docker_users }}"
|
|
||||||
|
|
||||||
- name: Reset ssh connection to apply user changes.
|
|
||||||
meta: reset_connection
|
|
||||||
|
|
||||||
- name: Setup cron job for backup
|
|
||||||
cron:
|
|
||||||
name: Docker Prune
|
|
||||||
weekday: 0
|
|
||||||
minute: 0
|
|
||||||
hour: 5
|
|
||||||
job: "docker system prune -af && docker image prune -af && docker system prune -af --volumes"
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
66633332373830623139666134663234303066626136383861353962336436383634323261393138
|
|
||||||
6333336361366430366262383061323836653539643732350a313837653930383637393962363130
|
|
||||||
39663033393836656538333163303266663061353364316137663035383765363232653735396237
|
|
||||||
6333653739316163330a626533613330336539626664313733656261336135396466356663313832
|
|
||||||
39326131336261313162666162316562626434623366663530656130623737643765383362393261
|
|
||||||
64616465323438656665323864383431373133346537663930353163643330613763623230316162
|
|
||||||
34636236316263313362616230363161366633636330653937356333633933356539663130333139
|
|
||||||
39383864313434646233343762633130396536386231643539323661623731626637383262353763
|
|
||||||
65323865656330633830646563613666333932323131643434623532623366353530633538393362
|
|
||||||
35383161643363623031386364376435363166306565386530333338363031376134363938666238
|
|
||||||
65313266366535666563666265386565323532386538366332623334356165636364373462633539
|
|
||||||
62326664663834643361343933323630366465636537343265626130633735356263393838396639
|
|
||||||
30666632663034363934363966386130643161313035623862623636343864633665653166396363
|
|
||||||
66326134323638316539333235346261656263633737333038363233613531666139373236666636
|
|
||||||
37636638313635336531623835313630316336386464336231626338333033343437316361386432
|
|
||||||
64363438616634323566336165303066353139396234343932623332653037303533613537306234
|
|
||||||
38346165623861396434333130306239663462663365313365643636616434366463343565643339
|
|
||||||
32383538663865353765313532666464613735363764336334323262633133653131383766353934
|
|
||||||
64326261623833653731356366323138336330396131623836353536306332643531393837613432
|
|
||||||
63366232653561613862316535306666623631633665613838343965326431353761386161616266
|
|
||||||
38323064636632646132393666313339623237383437386635316663383734626466376466623438
|
|
||||||
30303661633932303864326462396364653634306566353234346131663062386337336536366564
|
|
||||||
30303231643461366334306661626336363737376534663330633634353435396431353563303633
|
|
||||||
34346361383635353131353063663836343337643961623934663934613161636466613539303836
|
|
||||||
31363739653739623038303334343364643762643162613866306439653933393866336265363231
|
|
||||||
37623865316139363139396339363835393461356432626134363433353161626137366136363966
|
|
||||||
36663832346338393766363234646336663832656438636536333930356532626638366631336330
|
|
||||||
64313933366166653836313033343637636138653566383264636363626364353766616464386133
|
|
||||||
66636565663331613036323461616531663834303161306531306539656131343164643261636566
|
|
||||||
32613738653564383331323266366339663137656138653862633636333465656232613737353961
|
|
||||||
35306135323132303933383463373262633263613663656162333233393634386364366138393766
|
|
||||||
65313061326132376335656661616238663464303265383362313237323430316337373732313737
|
|
||||||
65343531333163333735396132303162353630356535636138633562626234623362636136393862
|
|
||||||
33643966616465393535383865393762303066353461323133633239383963353162616434333039
|
|
||||||
30386630343834663632303638306664303832373937663465353233386266633963316331633037
|
|
||||||
33353435333939356339386235336231343337623230313130333138666231336136623434333437
|
|
||||||
64333162323237323535643336373939623939303331306433626433396533623339303365393164
|
|
||||||
66353235653062363164343534303134336330653131333635663834386665613433363464353230
|
|
||||||
61386564373861323461643439376165636231646632616333333763313262646232626437383736
|
|
||||||
66316139636532616631396334613966636161653363363333633261616334383034656139393664
|
|
||||||
33633635356562353238313136376639373962643764653338636336666138323337383933656132
|
|
||||||
66363663306336663535333737613838653735626535386431356262623462356433336535613437
|
|
||||||
35356530616365343639656630643063393263626335383461396262396430383839303433376365
|
|
||||||
34653364663939336361373834386431393163656664633536616530643830633239346261396164
|
|
||||||
30326138386565646636636539653761366466663461386366386430396331313434616130633364
|
|
||||||
35386638336536666333633263323030643766323665303763356466393430333336316534306136
|
|
||||||
61396263323636323835623935336135323363633837363364623664646335623163666131666532
|
|
||||||
64346164316133393866316561346137383665363532393064663436333637393737656538313031
|
|
||||||
65653531383830393733663465313437646335316537386530313631636634663564303165366532
|
|
||||||
6432376363336661313535353436316231666462346364373337
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for docker
|
|
||||||
docker_edition: 'ce'
|
|
||||||
docker_packages:
|
|
||||||
- "docker-{{ docker_edition }}"
|
|
||||||
- "docker-{{ docker_edition }}-cli"
|
|
||||||
- "docker-{{ docker_edition }}-rootless-extras"
|
|
||||||
- "containerd.io"
|
|
||||||
- "docker"
|
|
||||||
- "docker-compose-plugin"
|
|
||||||
# Docker repo URL.
|
|
||||||
docker_url: https://download.docker.com/linux
|
|
||||||
docker_apt_repository: "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.asc] {{docker_url}}/{{ ansible_distribution | lower}} {{ansible_distribution_release}} stable"
|
|
||||||
docker_apt_ignore_key_error: true
|
|
||||||
docker_apt_gpg_key: "{{ docker_url }}/{{ ansible_distribution | lower }}/gpg"
|
|
||||||
docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570"
|
|
||||||
docker_apt_filename: "docker"
|
|
||||||
# A list of users who will be added to the docker group.
|
|
||||||
docker_users: [administrator] # CHANGE_ME!!! - Add addition users.
|
|
||||||
# Docker daemon options as a dict
|
|
||||||
docker_daemon_options: {}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for roles/nfs-mount
|
|
||||||
|
|
||||||
# List of NFS shares
|
|
||||||
nfs_share_mounts: []
|
|
||||||
|
|
||||||
# Default NFS4 mount options
|
|
||||||
nfs_mount_opts: "rw,sync,hard"
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
galaxy_info:
|
|
||||||
author: Matthew McKinnon
|
|
||||||
description: Mounting NFS filesystem
|
|
||||||
company: support@comprofix.com
|
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
|
|
||||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
|
||||||
# - BSD-3-Clause (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPL-2.0-or-later
|
|
||||||
# - GPL-3.0-only
|
|
||||||
# - Apache-2.0
|
|
||||||
# - CC-BY-4.0
|
|
||||||
license: license (GPL-2.0-or-later, MIT, etc)
|
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
|
||||||
|
|
||||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
|
||||||
# min_ansible_container_version:
|
|
||||||
|
|
||||||
#
|
|
||||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
|
||||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
|
||||||
# To view available platforms and versions (or releases), visit:
|
|
||||||
# https://galaxy.ansible.com/api/v1/platforms/
|
|
||||||
#
|
|
||||||
# platforms:
|
|
||||||
# - name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 25
|
|
||||||
# - name: SomePlatform
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 1.0
|
|
||||||
# - 7
|
|
||||||
# - 99.99
|
|
||||||
|
|
||||||
galaxy_tags: []
|
|
||||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
|
||||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
|
||||||
# remove the '[]' above, if you add tags to this list.
|
|
||||||
#
|
|
||||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
|
||||||
# Maximum 20 tags per role.
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
|
||||||
# if you add dependencies to this list.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for common
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
galaxy_info:
|
|
||||||
author: Matthew McKinnon
|
|
||||||
description: Traefik Proxy
|
|
||||||
company: support@comprofix.com
|
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
|
|
||||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
|
||||||
# - BSD-3-Clause (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPL-2.0-or-later
|
|
||||||
# - GPL-3.0-only
|
|
||||||
# - Apache-2.0
|
|
||||||
# - CC-BY-4.0
|
|
||||||
license: license (GPL-2.0-or-later, MIT, etc)
|
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
|
||||||
|
|
||||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
|
||||||
# min_ansible_container_version:
|
|
||||||
|
|
||||||
#
|
|
||||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
|
||||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
|
||||||
# To view available platforms and versions (or releases), visit:
|
|
||||||
# https://galaxy.ansible.com/api/v1/platforms/
|
|
||||||
#
|
|
||||||
# platforms:
|
|
||||||
# - name: Fedora
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 25
|
|
||||||
# - name: SomePlatform
|
|
||||||
# versions:
|
|
||||||
# - all
|
|
||||||
# - 1.0
|
|
||||||
# - 7
|
|
||||||
# - 99.99
|
|
||||||
|
|
||||||
galaxy_tags: []
|
|
||||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
|
||||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
|
||||||
# remove the '[]' above, if you add tags to this list.
|
|
||||||
#
|
|
||||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
|
||||||
# Maximum 20 tags per role.
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
|
||||||
# if you add dependencies to this list.
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
33613965373066613539323138336234303066356362393063343234653436393361663464353266
|
|
||||||
3438373135383330313563306362353061343531336231320a333263656535336265373431663637
|
|
||||||
39386136303432393335636662626466343639393966623234376366623466623237356464643131
|
|
||||||
3036363264383535360a303030386464353630306161613239636534313163353563323763663763
|
|
||||||
33363362313130633430373966653530373562613737343366373136646565623831633839656432
|
|
||||||
33386563373864326433663130613664376536353337313465326266633265316438613631633061
|
|
||||||
30363833613032376536346133313566666163303562626366353861626336633530343130373362
|
|
||||||
38643730303530386139376661383662653834383734396633613134353561633538366365623835
|
|
||||||
64356530373064396563643763653735313862643335373363386437666138623861653362343930
|
|
||||||
64346562313533643230373831663036303835343035353036623965636565653331646331303361
|
|
||||||
30613732313134326339633862333532366163346261313836366362313266303734316431336561
|
|
||||||
37663463646162363031363662346431386566656331313235343235663732636236666237663265
|
|
||||||
33336233623636613232333263656266393465333333333330373935346237613337313664346139
|
|
||||||
66653236633030383835326433633737363931356139313331323731343332663937616235346533
|
|
||||||
65636331386631303432373831393037333339316639623561313136643139306263303364383535
|
|
||||||
61633330306630643139616231663134383932306437613138326366386565613030323539306462
|
|
||||||
6439
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
CF_API_EMAIL: CF_EMAIL
|
|
||||||
CF_DNS_API_TOKEN: "CF_API_TOKEN"
|
|
||||||
traefik_api_user: "admin"
|
|
||||||
traefik_api_password: "password"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
curl -H "Content-Type: application/json" -d '{"text": "Cloud-init provisioning has been completed on '"$(hostname)"'!"}' "{{ TEAMS }}"
|
|
||||||
@@ -1,214 +1,214 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
33656232353663376136656237323861386264656230366637393763383262353734303562616237
|
64356532666364343635653938353232643234626263333936623235616536633061663161633735
|
||||||
3564656335663830313838623264353661303930623131630a636337313932666563653130303130
|
3837356130323434383461356266396537613332303665380a323937633664653238333931623939
|
||||||
33356365316337393935353234643432356633653734393031323834633863363539383363366461
|
62646562663031626138343963306431656530376562663861613435386435386338366230336461
|
||||||
6666633038343233320a613437323032376134313837376239363063663032336332396666663830
|
6533353135303538390a373334353036343436366233663763626336343932646136656136346134
|
||||||
38343339396233313031386131383466303933366163396566346334313831303062363866393131
|
63383931386233623935373631303336366433653734336638633037313331383936386564323530
|
||||||
65353233346266386434643665663930373730303566613536376461396338323066623138363632
|
34636363336236646638353137373836373937336438383637643438373862623031353364306165
|
||||||
35396666653961616439656563383562643738373938303964643936613864613831656436356364
|
36333562343533303032366430323330653830613632306332666232616339386264376236326430
|
||||||
61343639363630376661383861373835383133323236353333636233306637363462386564353033
|
37643763336632613530333339653266633562643531313230656537396161386365346139326138
|
||||||
64393834353139633262396434376666653934646433393233376166336164333534666537333166
|
64653234383664613262373863666130656431316236326463313265336365653435616561333665
|
||||||
65313139346464656564356135346262643032303561386332363930326332376532616165396165
|
61313935613034313732353833343439666436366439613533333536326230373161386530356232
|
||||||
61353466613562633632616435343137333963393938613366616232323535333539353763313361
|
35326661343463643134306165353832316536383839653233613332393761396466316137633837
|
||||||
35646537376533393036326237623665663437313264653033353432663131376536623338663032
|
64393264653933653564366566343461343938303265383064373132316634343536303937613037
|
||||||
31323761666563656463663137353762663335393261353336643135356134326363643866363436
|
63343535666535303434303533373537663563666164303764396532613865353763663934326634
|
||||||
65663739316137363333383665623266323633633133623335633335633362633235613838313462
|
66623739653032663464663062326339303938316231376431663739373938363432666135373035
|
||||||
32623561376466393866373966333663663830353139336135363761383433376638666465623165
|
64313463393735323833376532393839376438643238373664373164366662366233333833363861
|
||||||
62343965336664393465353633646135613562316664316631373231626562396236616336633530
|
62386266373361373536326231356436646161636664383631386331653961613664383237336264
|
||||||
33396364393466353134386164633436316366366430313236656666663561616566343761366531
|
39343238633639333761613363343565633131333430313366623566633039353437323338393538
|
||||||
38323737373030666231313061626162396666346436326134316565636462393565353833366531
|
38653635663461356639383364643164613134323435646566303065613131396234373030303437
|
||||||
38316534653036643133636463613563653438373631333666636265316536376134313134313037
|
32326661613236336462613566393664636364343766306161343264356533333239366534363766
|
||||||
39623733353737303832656164663236633361346137653638326562323837656131373237653038
|
31636662396633656633383732313236643539666335383038623566636666313138386663613361
|
||||||
37626164303862623364316662363030353536613639396638326565666332393933656566643336
|
33386666366136393231303264393263613131313365656663326138623434313863646463636536
|
||||||
33383663323466643263623131663530626163343861616138656663626135313562393536326565
|
35316133616232656330656363343063656531663366333533306461336233313562333831343434
|
||||||
66333763313030303166336461316338353233626632353965303631373962353332396534306461
|
34333939356430356436306563356637656338653738333039396530306334323833333433383037
|
||||||
34326363303162333135663834613638333531346334343635306438376139643039663537633235
|
62353863646466306662616139323937333339376232383430326337313034666364393563626232
|
||||||
35393861343336366362666364363037373063666436623236346538373664626433303166616362
|
37366164393336343666646432613930353166396430636434326634336262666537316433633334
|
||||||
36396538343236656431316536643739396639393663333762376239633535643138386666333335
|
63383265356139356165313336386336396236643831663337356362363161326231393237366335
|
||||||
61353332313663313864653739636638613031336439396430306633366636643635326633373139
|
63316565336536363134393736306239363863376439396337373431666564623964353239303566
|
||||||
39653962626638666535373962333565623361303062356531646335336431663062343831386362
|
65663435633835666161333063386134373366626636656431326361613565653665343734383830
|
||||||
37393030333635316134393634323464623935313836306536653664343866313333666134316237
|
63396632636533303130316162616162306464363338353636303134613965373031383234616162
|
||||||
62333562313165656634363065643864356137643439313163616437616436336363646263643164
|
30613038656163306439613630316539303639373931636361343235326636303265323162393561
|
||||||
39316262323862616132366635333438646633666361323361326664333363626461363438323135
|
38366166376435336565326161306632393065653038643836303464386163343832623637323636
|
||||||
37323136383735656334323762636132323732616637383232343638386232343062666438313136
|
39323839356532353337363432653863666562316139326266633836323837646339396132623365
|
||||||
34363535303061363264343061633132363335336162656139616263653064306536636366393864
|
61356538666261656365656632663830323136663439656336653039633664306164613639633434
|
||||||
63336135323162306138616361663232373533306634333831396531363133643838363533383766
|
66666132336166643237363930646638333131376638653930613266393836323834343833356633
|
||||||
35376237333934373939353662663234353334633266653235373864623337333661666239636439
|
61393138376161336430316531623939646334303435646534316363363466363535353861343363
|
||||||
64363062366139616534303738613666636332633361376537333134343536623839366364626531
|
64303134316566616330613236666266333861383132353861373337613539353035626262626565
|
||||||
62393733646639316533363537636161376163633232633436366465623861333663353563363838
|
33303037666566626531393732623734393964333232646161346261623737323665653964353031
|
||||||
65333037306235326534643536393437623432393862303133316333623836366337613365363032
|
64643530366464303636353238386634633063336563393337663361646636343835643037616536
|
||||||
63376539353836306130373938616230646638306531643433326265356131346665336333663633
|
61333739616166336162613133356334306531613963633439333635373362616461373635653939
|
||||||
37656434633933336433323962323561323539653330346231373965653030623066306630323036
|
63363064646263386266623362313962633335306566336136346663363330323763323537633766
|
||||||
62316431666461343836623839633934323235613436653934356261623566643766346665633066
|
35633336313037393937306237663032383939356636353232643066643131396135343931656331
|
||||||
65316332393961363439303264306162336236663565386630383039643437646133303239646135
|
31373639663637326534663766633363646237393865373230616262653134656135336234653138
|
||||||
35356366373030626537313530336531363561643066303232613330656564363335363735363866
|
31663163643331386432303737356262646139626138383162613964346161353563303335643066
|
||||||
32386165306334623237326464326165356537313364383566373361333535396663626362346465
|
66303966363666376131363264663430623939376530343632663433643161643130376161653762
|
||||||
35343438323766323437393732666630623262306566326566613938663966306137376237333932
|
31396630363630646138373964613732653230326637653336626531316633343262353836303734
|
||||||
35346432396165616437346664353235653965326562653561626334306465393565613137633334
|
65373130373763373537646136386531633936303737643936633464383231643565303061303836
|
||||||
64363264363563313932333936613337346161643135646638346664343336653337313764396434
|
31353536306264663164346661643063316137613935306136363935653535316464376233396439
|
||||||
35383536353032646239303338393833653563316432393661313436666161373236326231616632
|
33663365643639613438643135633033656164313266373232643137313337386666383538636331
|
||||||
66313934376361653962653036323837393864653539383332393735663035316538623135336464
|
63656336343837663831313634326463666632626135666664396637303861326563666566356132
|
||||||
66313864323462633338346166643533633832353862353431376133323130633034376534616235
|
38626331333334326537363661336633626532623138323332356433303037356637663737343537
|
||||||
65343434373539613233393335386262303731323662323934653864613530396333393730343836
|
64373234383439353639383061356235333435326433636538346134353532393861336439373938
|
||||||
62316138363530303664306633666438316331313935313433373238303364613964396166623265
|
35303538356161383636306234646137343837396363366161306634316131353334306435646662
|
||||||
32646639623663323762346130613863356330353661336463333634373962653132356261383834
|
38326666316332323261623434306130386461316239653135343330656535643861623665343561
|
||||||
64336231333163343538383232343130646233333332303765653564326639616130346666626334
|
31636634376533333836626436306536346136386439643865336466643836383032346565363230
|
||||||
63363635613965393930613736356263633661326163313839306165663431336332623531383939
|
65323234333365313738653161363264613135656533653861323832323630623966383662373465
|
||||||
62356230613831353535363064326562623065653663643864323336336437393237633835623235
|
37376362653661353835313664353266633932623532653633363364333063643762373366376463
|
||||||
36366230316234346430323162346433336133353730653564366131323962393463333830303761
|
32396339303961356531343464633130306439356466343431343330643965633438623337623131
|
||||||
38333961616537323563306262366463336162633032636435343637383930663739656466333135
|
35363665346161336434363135653166366337376132656361353964636435323131643562636338
|
||||||
36653765613134646663376663353437303839323738363639636263633532333938613461363466
|
34333439643832316531643163393962626237656337373930366462373032666237363461316138
|
||||||
33323631333137633364646638656435343633346465623862333635323332336630643738633464
|
61376638663038616361306664316361353630666434386431653233383435366665646161353530
|
||||||
34313038366665653262386132333038663134306561363762333864613832386631643037343838
|
31316537643237373666383861323832396237363966623665313062383530643734666437643837
|
||||||
39313863613636343432656561626331343763386561656366353164373164623963356332363234
|
63386163383435336261363738333163613735343261356330396434376632386135343739623265
|
||||||
36353063313931643033386131343734343239646162393165666162646561333636376337663233
|
39386136353430303961313934363933306634623232646232346630363763663062313934633165
|
||||||
62376435646562346332363533363165326261613835623061323833643134363435616530613062
|
34653963303938303966353835336230616633373263383166333135666137313138393439646331
|
||||||
62663630386661373961663031373866316230363639333265346264333565613064643966373135
|
39646130336131353966616530653536353330313336353936623764623538343030386664656661
|
||||||
33626466616263623239343765386265376464343964626434336133653837333835643932386534
|
36316235306661393532343633613563373433643061326436643730633631363539363039653164
|
||||||
66333831666238643137643639373865383231383933656364636133616232323866316538343261
|
65373235613333356265616136626133383437643164623462613331636163333437383534633764
|
||||||
35656236373236646138383238353339353936643531353237383361323665636564366163366637
|
66633336306363323933323336333232346530643166663733386431393230613163353665383165
|
||||||
33323963316530346162373030336366626230323137613662396462343562303834343563363833
|
63346365366161646465343932393161313538366333666236613463383034323064323837376332
|
||||||
35643362306432646335616236633431646331636261323636643739303836396166343832623231
|
63356639363232633864643731373031623331363962316362356530323938396665316164363565
|
||||||
64633938386563396363613737383937616539616139376233336631643236656638353263373732
|
66656435653463303431303333346330346230366533313937393062633433306264366337323731
|
||||||
65656663633961383763363737316262643133633063326634313633626166653836363930646662
|
33343930653330343662316161623936303931623236363266643565366434373964356330366438
|
||||||
39303134373532363965396439613864393162373337636338396465643030323332636333333732
|
32383462303132383930363233326535643730363766343162613738323933663662633435393339
|
||||||
37386435633134653564643566356163316134613861373637306232306532343863643933316430
|
36396637643061633265633737623333386465326166383436383833313262393662343231343636
|
||||||
32636463346234326432386333636137346331623131613261393038356563333135653365376333
|
34323737353565383732633634636461326665666232663736313362313037333430346666346630
|
||||||
35353231376237343232666638323938393936663833393736316433326434646131353964353938
|
33373839326639336564386632303038363539356431633363303736666234393139643965363363
|
||||||
39346536323933303237346263646263303233373038613234393636313261373939636566636433
|
39633530393462663561383961323861393232333834656537326238343066336666396234333766
|
||||||
65613465623261396639343235646266336237623531306238326265393335393363396565623165
|
33616635393538316536336531323030393338643864313034623334616335363930623564386232
|
||||||
31303637613466643366366132636130643663393965306162346139626438393033633662383533
|
31646533643535656664323230363132666234386131336331323930336561326531313465626539
|
||||||
64343136303936363238343161346632343131643738326434363834643037383565383537373534
|
30363035383238353564333937353139633664343334633566353461623834623537646238306236
|
||||||
37626631333763376130383164326332303836313332626264313033313930656634626632376437
|
37326232633866656533343135363936353030336338353033623430326338303235353339363263
|
||||||
35656264656138323331643961626264323462306562323638346164363239616330333166356137
|
61313662336261303264663238653834333566626134373563376331653134366634336232666230
|
||||||
65636533633731653435353864343162636530346539306161353834336136313861646564646434
|
32323839666337636331326164353139333639643665636535343664376531666261346366396264
|
||||||
66646265636537376261643935626266346334643063663839346234396661323834623665393561
|
32366137326265363361396531366364626630623431326631383138626535373133386465373831
|
||||||
66313533653532663266326532623636316265613130316463336231343831336333376631653233
|
32343335343963326461396163646366386163313461313033613339336238646665363361313331
|
||||||
35623562303835383664633662633633613564306661346234303234663136653934366565336235
|
33353166343764613032346232383232373832396632646138343566386464616632643838306161
|
||||||
30303131623931333739306431376665613664613736326532313238633662643936323362366632
|
61656166306239333234666664353930396333623037646634633035386335633537623365373366
|
||||||
39313033653566653137303262663230343432653038376265633339613739363232316564356235
|
33343537346232643131306438353834303866663935306539346234333862396332326363653364
|
||||||
64373633663461613134646433646633393634353337653431646663323734353033346662346431
|
37376636386636306530656332656439393736373263303333666666336631343561346561353333
|
||||||
34633635343539353733383237333639333138353236613763346234393633323837656237383361
|
63343833656562333737346237303838613166343938383532623437663263643563313837666233
|
||||||
37643637376264656437376636313034386333306230643036333632636663356363653765313331
|
61316365343565666631656434643136356663613966373237346638646461373436306566303839
|
||||||
62356461623861623137653530393361636262633561626566316161353665333634316262626165
|
61393561613564393533633832643638393366653564376162393261653031653731393131646436
|
||||||
32346636646534363737643337363535323530366430373366336563356362366661303330636463
|
33656630626537326662613335663166383030373339333734656638323162653534346434666338
|
||||||
37643964616538343638303833646265623263653336373237343533373236326136633461346631
|
64386263386663636133633366326434633536643938623864316336323630653263316633653034
|
||||||
62326334643461356436653535366237653531373239616338393935353166656664393432313735
|
34386463356536316338623264353563336264333537656638316636316633313537663863333132
|
||||||
34653031353730636466323966363139633833393066303531313934366263313831346534386530
|
61616562353531623131646230653636383138346663633738336261626438303732613433386662
|
||||||
65616161623134626230393231313866616133613338616335333763653436333366363438353139
|
35666462346336336332346637363330396334643962633863363564633661376239343135316638
|
||||||
63363430626230343638333866653165646638616435383038653936373436623566303666626461
|
37386166313633333761646363343736303938333061313835653031373738356133306134623330
|
||||||
63333730663937346166363136353466373832303939373139393035393230383937393363646365
|
32663034663364633836393266663630303633303332626365306235396462396138306637386165
|
||||||
35303432393739383034316237653033626265643338376639336364626431636333316136666531
|
62373861363763636434663039663966313132356262666639373437333232656237346133346236
|
||||||
34346566326139316365393561636165396361626637323335636165656161363461366632326330
|
63363533613833366133653237643930303831356263313166333362326130336238343862363161
|
||||||
31616535626335663339373034303064623035613131333562643934393665336537646535613732
|
66346464373030353038396230313263656163656565666363613765643861363439333435343361
|
||||||
33643733366463666464633564326461653237316436643831396163306633333334313263333333
|
30633431653738616239363733353136313130313139373466393037336235643061306431656434
|
||||||
66653434386265326563633765653534346138396433336232363133656632343164373638653065
|
30333865326337653266313765323037623863396135336161396235613331323134316435653331
|
||||||
61653737376134653630306139366530313566666133643634626631353463653834616239636662
|
39643966646537363633666161366332393837373666316537666136616463333739396233333233
|
||||||
36373365343530393635623366633162653362326237643236323862326132363236303837613837
|
32353038663366323235353138353930646262343966653430383432326634636262313738313337
|
||||||
39643135613263613532366537396337323533313538326664363039663638323564303764306337
|
34323931646430643837303637343366356161306334363839613766643766323863626431653838
|
||||||
66336166386638336338376534346338303832643134366662626466363535313530333430313162
|
63333335383537633232323136383161343134383064383064613431386231383165373565663766
|
||||||
33333961353437373732653431333430336632363033343661646361393962303636643764343330
|
64373362383639373532356135363565373635333331346561626566663635393839623936396230
|
||||||
39643061306533653564646232336639633935303366613435623030383437623165316433633335
|
38623430633762616561303532623237316161623237373234343437343963626464323865373232
|
||||||
35663337623938396561616266383634376663633565343763626131303430313339313236396362
|
63363661343238656239333466303732663432306136613963363766353139363464363365366131
|
||||||
39363831646435343338383530663064386262333030383364376330616362633333363532346262
|
64656331643365373266613439316262623161353632353734333963313962333262653466633235
|
||||||
31663135373464363238373231326163353834306233376436663663306666346437666162323835
|
37336436346437663264623337383538383465656432666639396165366661326435623538343230
|
||||||
38333564343663626365646231346338363261623664656232323732313034626436336161383830
|
30636261343638653664613838383936343463636134646331363864643138353766313235626130
|
||||||
38616132616165346366396566653664303631386133313032323431343530386135313933653432
|
64343936316130303736356233623338343166613738636363666563633663356364366539366231
|
||||||
65346436376232633639316338623434353639373163643939386166343437366637383262626139
|
64626430373731313861383762653638316533383636383963353234613636393333636530646336
|
||||||
37333031646264333139336664383636643663643630613761326661313935333361333131353630
|
62656666616261363166623335303330306638663461316236363531363936353761303361346463
|
||||||
31396337626565663538396439303332636231363266383037646562636163393761613332303036
|
38326165656365333563636666343130366236386537663165653266353064326461346665663536
|
||||||
35656236373839616663376231323930316636363133626639623538343136656561643063306539
|
39316639306566623461316634343261623830636239336533373362393034353437316132303239
|
||||||
30353961363234643134306633343930653431613034373464346139303232653337323864303166
|
31613965623566323363613031663466633230373833353234663636626564303538316535643831
|
||||||
61346364393765633431393037623138623038393236666334356430373830643965346661663537
|
30613163396538373835366163356666333137303261386235643433326132336462393734313137
|
||||||
30666133633864373034346639343036663630346261373361313039643263626164663635376661
|
30613533346238356466363661326562646631323266663861633237303461653830396363303764
|
||||||
66653633646339363263636334346131623662356335383466366164326435303135303336323732
|
37373937396163653230336530653661383834363964323233616135303934303230373334323230
|
||||||
33333831346633633563663065386661643035363336323262306131333262633063376530643738
|
36326366653039343863613234383832316135303164336662313630333039656332623532386333
|
||||||
33313939616334656464643238663962633635323636316361653363346231366131356661666162
|
61356132303063636438323833353538303962346434613635383632346333376530633835643737
|
||||||
33363836366666353735663336643836656663336639306262383765313435626633616263353132
|
61326632326132336239303537663563356366623536376464653935643462356639386232336231
|
||||||
35363166326165343539646336623933666636333236633863353266386162313134396135396538
|
39343566646639396362363331393931636461313761643038363063636261636337666336666434
|
||||||
31346337396633613930376166393064373161373432656136303633306566306433343630663631
|
33656637383666336464376361653432633665363335346338643833626663343733383964646632
|
||||||
33356533643163313039336565333633303937363634616535623434663066353566383735343637
|
62386662383138336262363538656531383564646164396561336233373965643837616138333165
|
||||||
64666166616462653337303731326366353261313661663762343563666565326566663065616339
|
35306435393866303138623435303565313561343361613263616530363664323633623739363264
|
||||||
30316235333738373630653635353462636137346538303462643632653664306635626566376464
|
62363737326235623138336236373435336333343232343031386265383266346633613464366266
|
||||||
65666266333937616461616233646130326231386662393166623463636139653839613030613964
|
64633061656336393937623261663834336133306239356133633865373532356564616439633238
|
||||||
35396535636637366232383764353835616233316538326237303862393463643934383439366562
|
61653333353162346536663433646437386434393333666535633137326239343233353363643734
|
||||||
64613033613265393930643464373939346533353331366337323131643932366161366636666630
|
32643164366336653331353038386363313962303135346334343536656662373730306430303438
|
||||||
34393863363337636561333931306362663936353565376635663262656133626530653233363635
|
35373637303539353337613733356561383930333361373233323630356161646537303637333263
|
||||||
65396462666431386333613761653738346438656330326464666430303162303263643632326561
|
31353036323462303138353164633739373361646631343639363766373662346465343765613833
|
||||||
33363135633961356137663631366665346533633562663664303837373730346236376132323735
|
38346434303030623531613437333331656137636565336130326536376539373133663763373638
|
||||||
39326137313437376434636436626335333134666163376231623130306634636330366236386139
|
35616331653364323236346166316336306664373634633563653336343834346231303634343762
|
||||||
32333563616339616536363430663362633537353661653136326131343437343738393330333966
|
34623437313966313039363561393062636334326166396261643661363434323766646665386232
|
||||||
63383265623961633864376465633232663536373962386631623161663063346463623339613534
|
32613633653136663461393365623635636236393735343462613437336133653732373165613530
|
||||||
30626165303866346437383364633066326330323165646561623538616235383234343234346334
|
66623564633638643635353436663632613962613338363739366566616662613062366138646339
|
||||||
31623961623762373966396235373161643738623631386462643764393366613937323738646235
|
32323036393565326134363437306632666463623565356461643166323037343139623530323537
|
||||||
34316638306663656137353366393261323132613839633733313336346633303939653231666664
|
35636333323032343531333136373131336434646238633437643830666532373361336335323461
|
||||||
62353232633131303631393035346239363936323633316366346631323362306238363365386134
|
34363134636639353732336533633135643332346138373338336566336334613931393064393963
|
||||||
63333837383734386130653061393966616463643234656566393238383035663765373837613561
|
34313734376630663064363565653539353132623339343133666561346236613664663732383530
|
||||||
61303035653762623536343630616465663166383266363865353137633034626131643863663261
|
62396263303035313938333665323866376530316634313232633939646564336530666633363633
|
||||||
61376464386434626139316532313133386132396338376232626466356532303566646138376662
|
38333232623763366630363536313663393964313635616339323033323332356230346139646136
|
||||||
34646462373634626333346166316232316663346330613237343439323564306266313632633264
|
64623632633139336435643435363732386438313261626632666466366637333038623961333831
|
||||||
39646436613033313865643038353933383431363461313537646463633963396237356336333931
|
62643465306662313233313033386461343661633039303736396164306433393961333463393464
|
||||||
33336364363836343863356565636436346236393435306638323531336263303562633932373230
|
64353631396163373862363634363839383331313264666362313330393132383536656464323362
|
||||||
36653337343930396163643663363333373563356261633833633137386134326138353536656134
|
31313738303864376339646538616632393433303639356666363164343035643962356161363638
|
||||||
64306530613632653535613535653266333639363334343339303436393163666431366164343834
|
61393633613136353838613564313232373037656136366238393537353831383537623265646566
|
||||||
65363031333533613930306433646333353232613336633230373563656361356538653366333130
|
31343766663166313961316532653338653933363432306133616236653164646562373063373063
|
||||||
61636665663234373430313965336334326366353163626265353063323735613766366662326634
|
32356235626461623162643931663732396435316139613837356330303465636633386337646366
|
||||||
37343763316431323733333834643466653638663464636232333664666337323739396539386366
|
32353736643664336334333931313039326538393262623664393438326236613932343438383962
|
||||||
65376566356233363064313138313035613765613035353838353265386264653136363235323031
|
30623830623832316563643565643532366339343131616366326438646138326334306535653961
|
||||||
34643830633361613265613732333766376363633165333866383637306438316430346333313430
|
63623165373339393334323462613631636235326464343036313265393930626436316637396332
|
||||||
37313230393139623633346666326566616465663638326164343764393666616166393363393365
|
38386362643637383732353939336532623531373037313063616663373639623735353765323531
|
||||||
36306636356333643333623334613961626132363135636630663537386230626532313262666565
|
39343265643737656334333361316333626665373262633963663562656336633565643931383164
|
||||||
64623135393063323239653930386463383065656262303365663536376136653139336331633332
|
65663562326461383838376466666566386563303163616461646435353766393233383366303330
|
||||||
64303663656136313430643231306638616361326461616666623234636366363436373464366366
|
38393566643132366664383030366433336265303434666465383861356230373362333739353831
|
||||||
36323733613730313233623466353765353962363934363230353231373265363435363135613338
|
66333436666261306337373430316636633632383933393732663135316666623334316632393534
|
||||||
64306236396561643064616631373366316162386538393734336263623033396564323665376465
|
36303436323733366138613136616331626135616635343064323937336266643364633764343961
|
||||||
63373462333865646265666161393263633632343537626438383833376164383635393566336539
|
63616636633839373730666236626138653430386466373035323665373064613364656130343033
|
||||||
61363666306466616334363561633561363435386537613233383965353330306337396663663631
|
35633133653263653862646163396261613162383233346462323431373932373134613966326165
|
||||||
33333335396432343365353430613662386330666464636266333731653661363833386234383763
|
65346132653132643666323666626338393132633665623133366661303436666165333633613238
|
||||||
36343330653533636361386536643339336630373338653333643736613062366439613031623238
|
65303363373035376362393335383836663064393332653031323737323036383166363836373138
|
||||||
32383463306165343538373765643939623361326263323838333333376462303762633134653635
|
62636461393638306138396230376463383832373033646562363739386261383538623631643931
|
||||||
37356236346462316466366461333730626333633539393035313264353162333931323365333962
|
65316539623336383961306331663132613461346432353438383439383266323538646436333337
|
||||||
39303261343566633735386665396134646537333866613532653065383463303062353930386430
|
63363663386135353230623535636531326132336135636366353164383766363239646639316232
|
||||||
65336666333561373466313066313135333732646262613063333866356336396130633330336434
|
30323461333839643564633631366364303834613333316133323936363239396138633064323632
|
||||||
32656365643464376431363161633732633064396336643134323338623731346163633039626665
|
62316262363531346633383062303264366537363936326163646665396463613838356138353038
|
||||||
35333062626233653733336563323864333666396361613564306534666633353466613434356632
|
30633564646166653438363061616438373238303266643136323864316464626631656666626635
|
||||||
39376233646134363263643164393766363730656161623666313862373566646462396365626234
|
39623865346332636265666330303161623737623664366664363065636331646437333537356265
|
||||||
35366132363264326463303932316561643939623732333939633466383234633763393435396135
|
34396337646263303966343230306639313836643938623563663036303937373936343838636363
|
||||||
34363734343466393930653436323861396334663966333533626165316562653730363262313065
|
61376430623839363631303736373465626132353061636161653236336532393333376263613430
|
||||||
38626666643639323462376639303862336164333065336534373337313133346563626635313534
|
62653262326133666638643531663437623732643330356462303536623533336564346433653366
|
||||||
33646662303831633130613938393231613062643165323464346462643764386461373637323636
|
37343165653864393835666639316139626434343136376439393931633631633931363937316463
|
||||||
62663437313135383339653065626465616564303539663363373964366334393339396361626635
|
37613038643332346637336565383037333935313735383562633964343264663762303939336132
|
||||||
64343430383661356237646630363362623033326133393236336136373165366666653762626637
|
33303361353465316630636230616562346161383333303935316333336661653665636536636131
|
||||||
65356630303135396263626139363331313038363064326436346436353765356431383165313337
|
38363165366338653335303262396166633563373735626263323764353637356565643433616462
|
||||||
34626633353166626663333431653436386337656365336133623662623433393364626536643438
|
36386463323239633535626561653932343665313133356139313330616132396532386465376635
|
||||||
33353666643934633066323565363963626138393066656632333466636632356438346165303462
|
39353763613633343337626465323831656231623033343562643636626634633663396230656137
|
||||||
30383032366539313039633335323438616234613233303435373833353864336138663165326331
|
66323338343836623938383834346231313638323931336365633063636639623538353935666664
|
||||||
61376330313132326530613634316333633339353066626238343361333666616231643031343566
|
33336435626331356363316361393665346638323737383662303638343738333233366135386535
|
||||||
63323232643238393463373264643934353630666165636339303933393264383832663764623437
|
61333963333432393938376633613138633031653162343233646432616465653466653261306534
|
||||||
36373262313934346562633333363861646539343666353532343938363366396464623436636434
|
39633763356561386636306639663463396133376366383663633735666337333135393138383764
|
||||||
38393439393937346263303430366263633566333336373265393837363639666464653538343930
|
65313761613039303039336239343632663437633464386666336466373562376235313565616336
|
||||||
61306163633339613838356661373131376165323664363366633663666633373134383162313732
|
61643638663466636561373831316132326631643263396133623532353464336231616532396266
|
||||||
62383433383362346135633435313563653466383864323236653164303262366363356238333363
|
64383163356164383134363438666231386566323133326636636234356331636165623835653162
|
||||||
65333936633365663134383364643962313739313735383665323762313131616161393266343336
|
64626166353165666464383531356164613932666230646364663762306266346265616533626262
|
||||||
64623930633932623464306438383039343133356235336132633936633562643165343532333564
|
35396262346338303461376134653864356137346439663965363463376439383166333162633835
|
||||||
66633339643837366339316631346561616331353961613333363037396264663866633831383932
|
36623339636162633038666135613037373533333665346636353439333166336665366139323830
|
||||||
66633863313535663138303538653131666665343038396430386435656666393966633436633866
|
33643231316136643132373539613861623837656439343131646635633630383236626135303332
|
||||||
63366366653364356161616134613130303438613065643731313538393862363436393831323335
|
30353436653732613762336265366134383166623264326466313730313763313466346263373935
|
||||||
33613063663162393338313136306262396634653535613030663136326232316364376333313962
|
61356334336238663666613731616239393030616665643665313266623761303531306664383631
|
||||||
66343737646161643062353336373835613662636133363437656239623561346433363965663136
|
63613039633331303837666333613333303331343163363035383539386337323162623736633539
|
||||||
34653837373535663564303932336439643162643135653936316361363566373265616462643763
|
34616231366137326636623265346636376138333836366234333064616237643638653033646338
|
||||||
32643131663263353365316438626663623736353863373236646530353263623432393664363139
|
66306564343436616661396133653931396638393061303961356334303734383736636663613164
|
||||||
31663331336233396639636133626333306134343232633866383030383462366533633461306131
|
66373863616137323861663061343231386565346133636266323462393531663134343534623434
|
||||||
39393430346539323861393863306539613566666361376231613566346231326164376432303536
|
66396463623865656563626139356564373331366337613332386663306465316165663566323864
|
||||||
38393930383335653133326236656630643233396465643233336632666130623034316332633930
|
64343632653931366238383162336636376261336665386635653564306466316435616331633362
|
||||||
30396336643231653264333166653636663630643933343534663833646532323463363165326265
|
66636537386537643839613662366639303865323332646436346566666465663966393032366465
|
||||||
66333837643664333230646236333339663732313532353838643638373237653636303433336139
|
61643339306133333738343162323266376631643264363762343436656365376565393561613332
|
||||||
37353334393363363936383533623962303539343834316561643230393737343837646264623538
|
32643064616138353631616166343739633733396564383836356166666364393234323063663237
|
||||||
64323364386635646531633938373161373832363439376530323861373437396365656437353264
|
61636665313666656162316463353032663139396332356139313362383163663231613831386662
|
||||||
65643635656337336337623762373935613036356231356463613833393435326364373063353236
|
33663763363563363665336266373134633338376333613237383866313933353031653732636463
|
||||||
38663137626331643462313733353563623237373664333234353832653030626435303535346263
|
64363632656338313064343236623539613339363730373530653666326138303632396435303336
|
||||||
61373765376239333232616431643031333638626532326565613339346362626361353263306535
|
66343463353638323737303963343139393661353832656133623939653266633031653035303338
|
||||||
37613764623537393730666364336264623434323739336235626237396137653637373839323930
|
32663437656538646561616362656162386436326534613630623661306261393134656163663166
|
||||||
61386530656339363064323762376536333230313666356639363462633562646231656533646661
|
35373362396535353835646566646439326331373131373932366163396234633464373862356633
|
||||||
62303265373962643838303236616538653731613962393136303861366637643535396666663336
|
66386331333866363331336238633161393764303337326565653338613835376531626136303761
|
||||||
3864
|
6136
|
||||||
|
|||||||
@@ -2,10 +2,9 @@
|
|||||||
- name: Create the dozzle container
|
- name: Create the dozzle container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: dozzle_agent
|
name: dozzle_agent
|
||||||
image: amir20/dozzle:v8.14.4
|
image: amir20/dozzle:v8.14.6
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
command: agent
|
command: agent
|
||||||
recreate: true
|
|
||||||
ports:
|
ports:
|
||||||
- 7007:7007
|
- 7007:7007
|
||||||
volumes:
|
volumes:
|
||||||
38
tasks/OLDmssql.yml
Normal file
38
tasks/OLDmssql.yml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
- name: Create directories
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
with_items:
|
||||||
|
- "/data/mssql"
|
||||||
|
- "/data/mssql/data"
|
||||||
|
- "/data/mssql/log"
|
||||||
|
- "/data/mssql/secrets"
|
||||||
|
|
||||||
|
- name: Pull docker image
|
||||||
|
community.docker.docker_image:
|
||||||
|
name: mcr.microsoft.com/mssql/server
|
||||||
|
tag: 2025-latest@sha256:2c80e548ef65fb65a8ca23c3a74ed60e0964ea709f46d07c97ccaf7c437e2cc6
|
||||||
|
source: pull
|
||||||
|
register: docker_image
|
||||||
|
|
||||||
|
- name: Create the mssql container
|
||||||
|
docker_container:
|
||||||
|
name: mssql
|
||||||
|
image: "{{ docker_image.image.RepoTags[0] }}"
|
||||||
|
user: root
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 1433:1433
|
||||||
|
env:
|
||||||
|
PUID: "0"
|
||||||
|
PGID: "0"
|
||||||
|
ACCEPT_EULA: "Y"
|
||||||
|
MSSQL_PID: "Express"
|
||||||
|
SA_PASSWORD: "{{ SA_PASSWORD }}"
|
||||||
|
volumes:
|
||||||
|
- "/data/mssql/data:/var/opt/mssql/data"
|
||||||
|
- "/data/mssql/log:/var/opt/mssql/log"
|
||||||
|
- "/data/mssql/secrets:/var/opt/mssql/secrets"
|
||||||
|
when: docker_image.changed
|
||||||
|
register: container_mssql
|
||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/osticket"
|
- "/data/osticket"
|
||||||
- "{{ data_folder }}/osticket/config"
|
- "/data/osticket/config"
|
||||||
|
|
||||||
- name: Create the osticket container
|
- name: Create the osticket container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: osticket
|
name: osticket
|
||||||
image: devinsolutions/osticket:1.17.5
|
image: devinsolutions/osticket:1.17.5
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
- name: Create the comprofix.com container
|
|
||||||
docker_container:
|
|
||||||
name: comprofix.com
|
|
||||||
image: git.comprofix.com/mmckinnon/comprofix.com:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: proxy
|
|
||||||
labels:
|
|
||||||
traefik.enable: "true"
|
|
||||||
traefik.http.routers.comprofix.rule: "Host(`comprofix.com`)"
|
|
||||||
traefik.http.routers.comprofix.entrypoints: "https"
|
|
||||||
traefik.http.routers.comprofix.tls: "true"
|
|
||||||
traefik.http.services.comprofix.loadbalancer.server.port: "80"
|
|
||||||
@@ -1,29 +1,24 @@
|
|||||||
---
|
---
|
||||||
- name: Create directories
|
- name: Create/Update the dozzle container
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_folder }}/dozzle"
|
|
||||||
- "{{ data_folder }}/dozzle/config"
|
|
||||||
|
|
||||||
- name: Create the dozzle container
|
|
||||||
docker_container:
|
docker_container:
|
||||||
name: dozzle
|
name: dozzle
|
||||||
image: amir20/dozzle:v8.14.4
|
image: amir20/dozzle:v8.14.6
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
env:
|
# env:
|
||||||
DOZZLE_LEVEL: "trace"
|
# DOZZLE_LEVEL: "trace"
|
||||||
DOZZLE_REMOTE_AGENT: "omada-lxc.comprofix.xyz:7007"
|
# DOZZLE_REMOTE_AGENT: "omada-lxc.comprofix.xyz:7007"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.dozzle.rule: "Host(`dozzle.comprofix.xyz`)"
|
traefik.http.routers.dozzle.rule: "Host(`devdozzle.comprofix.xyz`)"
|
||||||
traefik.http.routers.dozzle.entrypoints: "https"
|
traefik.http.routers.dozzle.entrypoints: "https"
|
||||||
traefik.http.routers.dozzle.tls: "true"
|
traefik.http.routers.dozzle.tls: "true"
|
||||||
traefik.http.services.dozzle.loadbalancer.server.port: "8080"
|
traefik.http.services.dozzle.loadbalancer.server.port: "8080"
|
||||||
traefik.http.services.dozzle.loadbalancer.server.scheme: "http"
|
traefik.http.services.dozzle.loadbalancer.server.scheme: "http"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
- name: Create directories
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_folder }}/gitea-runner"
|
|
||||||
- "{{ data_folder }}/gitea-runner/config"
|
|
||||||
|
|
||||||
- name: Check that config.yaml exists
|
|
||||||
stat:
|
|
||||||
path: "{{ data_folder }}/gitea-runner/config/config.yaml"
|
|
||||||
register: configyaml
|
|
||||||
|
|
||||||
- name: Create config.yaml file
|
|
||||||
file:
|
|
||||||
path: "{{ data_folder }}/gitea-runner/config/config.yaml"
|
|
||||||
state: touch
|
|
||||||
mode: "0600"
|
|
||||||
access_time: preserve
|
|
||||||
modification_time: preserve
|
|
||||||
when: configyaml.stat.exists == False
|
|
||||||
|
|
||||||
- name: Create the gitea-runner container
|
|
||||||
docker_container:
|
|
||||||
name: gitea-runner
|
|
||||||
image: gitea/act_runner:0.2.13
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
# dns_servers:a
|
|
||||||
# - 10.10.10.1
|
|
||||||
# - 127.0.0.11
|
|
||||||
volumes:
|
|
||||||
- "/etc/resolv.conf:/etc/resolv.conf:ro"
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- "{{ data_folder }}/gitea-runner/config/config.yaml:/config.yaml"
|
|
||||||
- "/etc/hosts:/etc/hosts:ro"
|
|
||||||
env:
|
|
||||||
CONFIG_FILE: "/config.yaml"
|
|
||||||
GITEA_INSTANCE_URL: "https://git.comprofix.com"
|
|
||||||
GITEA_RUNNER_REGISTRATION_TOKEN: "{{ GITEA_RUNNER_TOKEN }}"
|
|
||||||
GITEA_RUNNER_NAME: "homelab-runner"
|
|
||||||
GITEA_RUNNER_LABELS: "alpine-latest:docker://{{ alpine_latest_image }},ubuntu-latest:docker://{{ ubuntu_latest_image }},homelab-latest:docker://{{ debian_latest_image }}"
|
|
||||||
@@ -4,9 +4,9 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/gitea"
|
- "/data/gitea"
|
||||||
- "{{ data_folder }}/gitea/data"
|
- "/data/gitea/data"
|
||||||
- "{{ data_folder }}/gitea/db"
|
- "/data/gitea/db"
|
||||||
|
|
||||||
- name: Create MySQL DB for Gitea
|
- name: Create MySQL DB for Gitea
|
||||||
docker_container:
|
docker_container:
|
||||||
@@ -21,17 +21,15 @@
|
|||||||
MYSQL_PASSWORD: "{{ gitea_db_password }}"
|
MYSQL_PASSWORD: "{{ gitea_db_password }}"
|
||||||
MYSQL_DATABASE: gitea
|
MYSQL_DATABASE: gitea
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/gitea/db:/var/lib/mysql"
|
- "/data/gitea/db:/var/lib/mysql"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
- name: Create the Gitea container
|
- name: Create the Gitea container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: gitea
|
name: gitea
|
||||||
image: gitea/gitea:1.24
|
image: gitea/gitea:1.24
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
# dns_servers:
|
|
||||||
# - 10.10.10.1
|
|
||||||
# - 127.0.0.11
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
ports:
|
ports:
|
||||||
@@ -41,7 +39,7 @@
|
|||||||
PGID: "1001"
|
PGID: "1001"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/gitea/data:/data"
|
- "/data/gitea/data:/data"
|
||||||
- "/etc/timezone:/etc/timezone:ro"
|
- "/etc/timezone:/etc/timezone:ro"
|
||||||
- "/etc/localtime:/etc/localtime:ro"
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
labels:
|
labels:
|
||||||
@@ -51,71 +49,25 @@
|
|||||||
traefik.http.routers.gitea.tls: "true"
|
traefik.http.routers.gitea.tls: "true"
|
||||||
traefik.http.routers.gitea.service: "gitea"
|
traefik.http.routers.gitea.service: "gitea"
|
||||||
traefik.http.services.gitea.loadbalancer.server.port: "3000"
|
traefik.http.services.gitea.loadbalancer.server.port: "3000"
|
||||||
register: container_gitea
|
pull: true
|
||||||
|
|
||||||
- name: Create directories
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_folder }}/gitea-runner"
|
|
||||||
- "{{ data_folder }}/gitea-runner/config"
|
|
||||||
|
|
||||||
- name: Check that config.yaml exists
|
|
||||||
stat:
|
|
||||||
path: "{{ data_folder }}/gitea-runner/config/config.yaml"
|
|
||||||
register: configyaml
|
|
||||||
|
|
||||||
- name: Create config.yaml file
|
|
||||||
file:
|
|
||||||
path: "{{ data_folder }}/gitea-runner/config/config.yaml"
|
|
||||||
state: touch
|
|
||||||
mode: "0600"
|
|
||||||
access_time: preserve
|
|
||||||
modification_time: preserve
|
|
||||||
when: configyaml.stat.exists == False
|
|
||||||
|
|
||||||
- name: Create the gitea-runner container
|
|
||||||
docker_container:
|
|
||||||
name: gitea-runner
|
|
||||||
image: gitea/act_runner:0.2.13
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
recreate: true
|
||||||
# dns_servers:
|
|
||||||
# - 10.10.10.1
|
|
||||||
# - 127.0.0.11
|
|
||||||
volumes:
|
|
||||||
- "/etc/resolv.conf:/etc/resolv.conf:ro"
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- "{{ data_folder }}/gitea-runner/config/config.yaml:/config.yaml"
|
|
||||||
- "/etc/hosts:/etc/hosts:ro"
|
|
||||||
env:
|
|
||||||
CONFIG_FILE: "/config.yaml"
|
|
||||||
GITEA_INSTANCE_URL: "https://git.comprofix.com"
|
|
||||||
GITEA_RUNNER_REGISTRATION_TOKEN: "{{ GITEA_RUNNER_TOKEN }}"
|
|
||||||
GITEA_RUNNER_NAME: "gitea-runner"
|
|
||||||
GITEA_RUNNER_LABELS: "alpine-latest:docker://{{ alpine_latest_image }},ubuntu-latest:docker://{{ ubuntu_latest_image }},vps-latest:docker://{{ debian_latest_image }}"
|
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/opengist"
|
- "/data/opengist"
|
||||||
|
|
||||||
- name: Create the opengist container
|
- name: Create the opengist container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: opengist
|
name: opengist
|
||||||
image: ghcr.io/thomiceli/opengist:1.11
|
image: ghcr.io/thomiceli/opengist:1.11
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
# dns_servers:
|
|
||||||
# - 10.10.10.1
|
|
||||||
# - 127.0.0.11
|
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/opengist:/opengist"
|
- "/data/opengist:/opengist"
|
||||||
env:
|
env:
|
||||||
OG_GITEA_CLIENT_KEY: "{{ OG_GITEA_KEY }}"
|
OG_GITEA_CLIENT_KEY: "{{ OG_GITEA_KEY }}"
|
||||||
OG_GITEA_SECRET: "{{ OG_GITEA_SECRET }}"
|
OG_GITEA_SECRET: "{{ OG_GITEA_SECRET }}"
|
||||||
@@ -131,4 +83,6 @@
|
|||||||
traefik.http.routers.opengist.tls: "true"
|
traefik.http.routers.opengist.tls: "true"
|
||||||
traefik.http.routers.opengist.service: "opengist"
|
traefik.http.routers.opengist.service: "opengist"
|
||||||
traefik.http.services.opengist.loadbalancer.server.port: "6157"
|
traefik.http.services.opengist.loadbalancer.server.port: "6157"
|
||||||
register: container
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/gotify"
|
- "/data/gotify"
|
||||||
- "{{ data_folder }}/gotify/data"
|
- "/data/gotify/data"
|
||||||
|
|
||||||
- name: Create the gotify container
|
- name: Create the gotify container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: gotify
|
name: gotify
|
||||||
image: gotify/server:2.7.3
|
image: gotify/server:2.7.3
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
volumes:
|
volumes:
|
||||||
@@ -24,3 +23,6 @@
|
|||||||
traefik.http.routers.gotify.tls: "true"
|
traefik.http.routers.gotify.tls: "true"
|
||||||
traefik.http.routers.gotify.service: "gotify"
|
traefik.http.routers.gotify.service: "gotify"
|
||||||
traefik.http.services.gotify.loadbalancer.server.port: "80"
|
traefik.http.services.gotify.loadbalancer.server.port: "80"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/homepage"
|
- "/data/homepage"
|
||||||
- "{{ data_folder }}/homepage/config"
|
- "/data/homepage/config"
|
||||||
|
|
||||||
- name: Get dashboard-icons
|
- name: Get dashboard-icons
|
||||||
git:
|
git:
|
||||||
@@ -18,17 +18,14 @@
|
|||||||
name: homepage
|
name: homepage
|
||||||
image: ghcr.io/gethomepage/homepage:v1.5.0
|
image: ghcr.io/gethomepage/homepage:v1.5.0
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
dns_servers:
|
|
||||||
- 10.10.10.1
|
|
||||||
env:
|
env:
|
||||||
LOG_LEVEL: debug
|
LOG_LEVEL: debug
|
||||||
HOMEPAGE_ALLOWED_HOSTS: homepage.comprofix.xyz
|
HOMEPAGE_ALLOWED_HOSTS: homepage.comprofix.xyz
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/homepage/config:/app/config"
|
- "/data/homepage/config:/app/config"
|
||||||
- "{{ data_folder }}/dashboard-icons:/app/public/icons"
|
- "/data/dashboard-icons:/app/public/icons"
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
@@ -37,4 +34,6 @@
|
|||||||
traefik.http.routers.homepage.tls: "true"
|
traefik.http.routers.homepage.tls: "true"
|
||||||
traefik.http.routers.homepage.service: "homepage"
|
traefik.http.routers.homepage.service: "homepage"
|
||||||
traefik.http.services.homepage.loadbalancer.server.port: "3000"
|
traefik.http.services.homepage.loadbalancer.server.port: "3000"
|
||||||
register: container_homepage
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
- name: Create the Dell_R730xd Fan Contoller container
|
- name: Create the Dell_R730xd Fan Contoller container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: Dell_R730xd
|
name: Dell_R730xd
|
||||||
image: ghcr.io/tigerblue77/dell_idrac_fan_controller:latest@sha256:eda09016a4acbee8883996f3b8cd4832a723200999bd037934675e75e2f00908
|
image: ghcr.io/tigerblue77/dell_idrac_fan_controller:v1.9
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
env:
|
env:
|
||||||
IDRAC_HOST: "10.10.10.105"
|
IDRAC_HOST: "10.10.10.105"
|
||||||
IDRAC_USERNAME: "root"
|
IDRAC_USERNAME: "root"
|
||||||
IDRAC_PASSWORD: "calvin"
|
IDRAC_PASSWORD: "calvin"
|
||||||
FAN_SPEED: "50"
|
FAN_SPEED: "60"
|
||||||
CPU_TEMPERATURE_THRESHOLD: "80"
|
CPU_TEMPERATURE_THRESHOLD: "80"
|
||||||
CHECK_INTERVAL: "60"
|
CHECK_INTERVAL: "60"
|
||||||
DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE: "true"
|
DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE: "true"
|
||||||
|
register: container_idrac
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/invoiceninja/"
|
- "/data/invoiceninja/"
|
||||||
- "{{ data_folder }}/invoiceninja/config"
|
- "/data/invoiceninja/config"
|
||||||
- "{{ data_folder }}/invoiceninja/db"
|
- "/data/invoiceninja/db"
|
||||||
|
|
||||||
- name: "create stack.env"
|
- name: "create stack.env"
|
||||||
copy:
|
copy:
|
||||||
dest: "{{ data_folder }}/invoiceninja/stack.env"
|
dest: "/data/invoiceninja/stack.env"
|
||||||
content: |
|
content: |
|
||||||
APP_NAME="Invoice Ninja"
|
APP_NAME="Invoice Ninja"
|
||||||
APP_ENV=production
|
APP_ENV=production
|
||||||
@@ -60,29 +60,29 @@
|
|||||||
docker_container:
|
docker_container:
|
||||||
name: invoiceninja-app
|
name: invoiceninja-app
|
||||||
image: invoiceninja/invoiceninja:5
|
image: invoiceninja/invoiceninja:5
|
||||||
env_file: "{{ data_folder }}/invoiceninja/stack.env"
|
env_file: "/data/invoiceninja/stack.env"
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/invoiceninja/config/hosts:/etc/hosts"
|
- "/data/invoiceninja/config/hosts:/etc/hosts"
|
||||||
- "{{ data_folder }}/invoiceninja/docker/app/public:/var/www/app/public"
|
- "/data/invoiceninja/docker/app/public:/var/www/app/public"
|
||||||
- "{{ data_folder }}/invoiceninja/docker/app/storage:/var/www/app/storage"
|
- "/data/invoiceninja/docker/app/storage:/var/www/app/storage"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
- name: Create the invoiceninja-nginx container
|
- name: Create the invoiceninja-nginx container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: invoiceninja-nginx
|
name: invoiceninja-nginx
|
||||||
image: nginx:1.29.2
|
image: nginx:1.29.2
|
||||||
env_file: "{{ data_folder }}/invoiceninja/stack.env"
|
env_file: "/data/invoiceninja/stack.env"
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/invoiceninja/config/nginx/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf"
|
- "/data/invoiceninja/config/nginx/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf"
|
||||||
- "{{ data_folder }}/invoiceninja/docker/app/public:/var/www/app/public"
|
- "/data/invoiceninja/docker/app/public:/var/www/app/public"
|
||||||
- "{{ data_folder }}/invoiceninja/docker/app/storage:/var/www/app/storage"
|
- "/data/invoiceninja/docker/app/storage:/var/www/app/storage"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.invoiceninja.rule: "Host(`invoice.comprofix.com`)"
|
traefik.http.routers.invoiceninja.rule: "Host(`invoice.comprofix.com`)"
|
||||||
@@ -90,6 +90,10 @@
|
|||||||
traefik.http.routers.invoiceninja.tls: "true"
|
traefik.http.routers.invoiceninja.tls: "true"
|
||||||
traefik.http.services.invoiceninja.loadbalancer.server.port: "80"
|
traefik.http.services.invoiceninja.loadbalancer.server.port: "80"
|
||||||
traefik.http.services.invoiceninja.loadbalancer.server.scheme: "http"
|
traefik.http.services.invoiceninja.loadbalancer.server.scheme: "http"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
134
tasks/iscsi.yml
134
tasks/iscsi.yml
@@ -9,80 +9,112 @@
|
|||||||
name: parted
|
name: parted
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Discover iSCSI targets
|
- name: Check existing iSCSI sessions
|
||||||
command: sudo iscsiadm -m discovery -t sendtargets -p "10.10.10.2"
|
|
||||||
register: iscsi_discovery
|
|
||||||
|
|
||||||
- name: Set target_iqn variable based on discovery
|
|
||||||
set_fact:
|
|
||||||
target_iqn: "{{ item.split(' ')[1] }}"
|
|
||||||
loop: "{{ iscsi_discovery.stdout_lines }}"
|
|
||||||
when: item.startswith("10.10.10.2")
|
|
||||||
|
|
||||||
- name: Check if iSCSI target is already connected
|
|
||||||
command: iscsiadm -m session
|
command: iscsiadm -m session
|
||||||
register: iscsi_sessions
|
register: iscsi_sessions
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: iscsi_sessions.rc not in [0, 21] # Allow success if the return code is 0 or 21
|
failed_when: iscsi_sessions.rc not in [0, 21]
|
||||||
|
|
||||||
- name: Connect to iSCSI target
|
- name: Discover iSCSI targets for each portal
|
||||||
command: sudo iscsiadm -m node -T "{{ target_iqn }}" -p "10.10.10.2" --login
|
command: iscsiadm -m discovery -t sendtargets -p "{{ item.portal }}"
|
||||||
when: target_iqn is defined and target_iqn not in iscsi_sessions.stdout
|
register: iscsi_discovery
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
- name: Set iSCSI target for automatic login
|
- name: Connect to iSCSI targets for this host
|
||||||
command: sudo iscsiadm -m node -T "{{ target_iqn }}" -p "10.10.10.2" --op update --name node.startup --value automatic
|
command: iscsiadm -m node -T "{{ item.iqn }}" -p "{{ item.portal }}" --login
|
||||||
when: target_iqn is defined
|
loop: "{{ iscsi_targets }}"
|
||||||
|
when: item.iqn not in iscsi_sessions.stdout
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
- name: Fail if no target_iqn found
|
- name: Set iSCSI targets for automatic login
|
||||||
fail:
|
command: iscsiadm -m node -T "{{ item.iqn }}" -p "{{ item.portal }}" --op update --name node.startup --value automatic
|
||||||
msg: "No target IQN found for iSCSI server IP 10.10.10.2"
|
loop: "{{ iscsi_targets }}"
|
||||||
when: target_iqn is not defined
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
- name: List all block devices
|
# --------------------------
|
||||||
command: lsblk -o NAME,SIZE,TYPE,MODEL
|
# Wait for the iSCSI device to appear
|
||||||
register: lsblk_output
|
# --------------------------
|
||||||
|
- name: Wait for iSCSI device to appear
|
||||||
|
wait_for:
|
||||||
|
path: "/dev/disk/by-path/ip-{{ item.portal }}:3260-iscsi-{{ item.iqn }}-lun-0"
|
||||||
|
state: present
|
||||||
|
timeout: 30
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
- name: Set iSCSI device variable
|
# --------------------------
|
||||||
set_fact:
|
# Check if device is raw
|
||||||
iscsi_device: "/dev/{{ item.split()[0] }}"
|
# --------------------------
|
||||||
loop: "{{ lsblk_output.stdout_lines }}"
|
- name: Get block device info for each target
|
||||||
when: item.split()[2] == 'disk' and 'iSCSI' in item # Adjust based on the MODEL you observe
|
command: "blkid /dev/disk/by-path/ip-{{ item.portal }}:3260-iscsi-{{ item.iqn }}-lun-0"
|
||||||
|
register: blkid_output
|
||||||
|
failed_when: false
|
||||||
|
changed_when: false
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
- name: Fail if no iSCSI device found
|
# --------------------------
|
||||||
fail:
|
# Create partition if device is raw
|
||||||
msg: "No iSCSI device found!"
|
# --------------------------
|
||||||
when: iscsi_device is not defined
|
- name: Create partition if device is raw
|
||||||
|
|
||||||
- name: Create a partition on iSCSI device using parted
|
|
||||||
parted:
|
parted:
|
||||||
device: "{{ iscsi_device }}"
|
device: "/dev/disk/by-path/ip-{{ item[1].portal }}:3260-iscsi-{{ item[1].iqn }}-lun-0"
|
||||||
number: 1
|
number: 1
|
||||||
state: present
|
state: present
|
||||||
part_type: primary
|
part_type: primary
|
||||||
fs_type: ext4
|
fs_type: ext4
|
||||||
part_start: 0% # Start at the beginning of the device
|
part_start: 0%
|
||||||
part_end: 100% # Use the entire available space
|
part_end: 100%
|
||||||
|
loop: "{{ blkid_output.results | zip(iscsi_targets) | map('flatten') | list }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item[1].iqn }}"
|
||||||
|
when: item[0].stdout == ""
|
||||||
|
|
||||||
- name: Create filesystem on new partition
|
- name: Create filesystem if partition is raw
|
||||||
filesystem:
|
filesystem:
|
||||||
fstype: ext4
|
fstype: ext4
|
||||||
dev: "{{ iscsi_device }}1" # Format the partition
|
dev: "/dev/disk/by-path/ip-{{ item[1].portal }}:3260-iscsi-{{ item[1].iqn }}-lun-0-part1"
|
||||||
|
loop: "{{ blkid_output.results | zip(iscsi_targets) | map('flatten') | list }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item[1].iqn }}"
|
||||||
|
when: item[0].stdout == ""
|
||||||
|
|
||||||
- name: Create mount point
|
- name: Create mount points
|
||||||
file:
|
file:
|
||||||
path: /data
|
path: "{{ item.mount_point }}"
|
||||||
state: directory
|
state: directory
|
||||||
|
mode: "0777"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
- name: Mount iSCSI target
|
- name: Mount iSCSI targets
|
||||||
mount:
|
mount:
|
||||||
path: /data
|
path: "{{ item.mount_point }}"
|
||||||
src: "{{ iscsi_device }}1" # Mount the new partition
|
src: "/dev/disk/by-path/ip-{{ item.portal }}:3260-iscsi-{{ item.iqn }}-lun-0-part1"
|
||||||
fstype: ext4
|
fstype: ext4
|
||||||
opts: defaults,_netdev
|
opts: defaults,_netdev
|
||||||
state: mounted
|
state: mounted
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|
||||||
# - name: Ensure iSCSI target is mounted at boot
|
- name: Ensure mounted directories are world-writable
|
||||||
# lineinfile:
|
file:
|
||||||
# path: /etc/fstab
|
path: "{{ item.mount_point }}"
|
||||||
# line: "{{ iscsi_device }}1 /data ext4 _netdev 0 0"
|
state: directory
|
||||||
# state: present
|
mode: "0777"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
loop: "{{ iscsi_targets }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.iqn }}"
|
||||||
|
|||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/jellyseerr"
|
- "/data/jellyseerr"
|
||||||
- "{{ data_folder }}/jellyseerr/config"
|
- "/data/jellyseerr/config"
|
||||||
|
|
||||||
- name: Create the jellyseerr container
|
- name: Create the jellyseerr container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: jellyseerr
|
name: jellyseerr
|
||||||
image: fallenbagel/jellyseerr:2.7.3
|
image: fallenbagel/jellyseerr:2.7.3
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -20,10 +19,13 @@
|
|||||||
PGID: "1000"
|
PGID: "1000"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/jellyseerr/config:/app/config"
|
- "/data/jellyseerr/config:/app/config"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.jellyseerr.rule: "Host(`jellyseerr.comprofix.xyz`)"
|
traefik.http.routers.jellyseerr.rule: "Host(`jellyseerr.comprofix.xyz`)"
|
||||||
traefik.http.routers.jellyseerr.entrypoints: "https"
|
traefik.http.routers.jellyseerr.entrypoints: "https"
|
||||||
traefik.http.routers.jellyseerr.tls: "true"
|
traefik.http.routers.jellyseerr.tls: "true"
|
||||||
traefik.http.services.jellyseerr.loadbalancer.server.port: "5055"
|
traefik.http.services.jellyseerr.loadbalancer.server.port: "5055"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -1,22 +1,17 @@
|
|||||||
---
|
---
|
||||||
- name: Set Facts
|
|
||||||
set_fact:
|
|
||||||
container_name: 'lidarr'
|
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/lidarr"
|
- "/data/lidarr"
|
||||||
- "{{ data_folder }}/lidarr/config"
|
- "/data/lidarr/config"
|
||||||
|
|
||||||
- name: Create the lidarr container
|
- name: Create the lidarr container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: lidarr
|
name: lidarr
|
||||||
image: ghcr.io/linuxserver/lidarr:latest@sha256:5661b79d7245ec0c196a5a35ac13be44c6d76563d9e5bf855b3ffa3b91160999
|
image: ghcr.io/linuxserver/lidarr:8.1.2135
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -26,7 +21,7 @@
|
|||||||
AUTO_UPDATE: "true" #optional
|
AUTO_UPDATE: "true" #optional
|
||||||
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:lidarr"
|
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:lidarr"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/lidarr/config:/config"
|
- "/data/lidarr/config:/config"
|
||||||
- /mnt/nfs/data:/data
|
- /mnt/nfs/data:/data
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
@@ -34,3 +29,6 @@
|
|||||||
traefik.http.routers.lidarr.entrypoints: "https"
|
traefik.http.routers.lidarr.entrypoints: "https"
|
||||||
traefik.http.routers.lidarr.tls: "true"
|
traefik.http.routers.lidarr.tls: "true"
|
||||||
traefik.http.services.lidarr.loadbalancer.server.port: "8686"
|
traefik.http.services.lidarr.loadbalancer.server.port: "8686"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,17 @@
|
|||||||
---
|
---
|
||||||
- name: Set Facts
|
|
||||||
set_fact:
|
|
||||||
container_name: 'mariadb'
|
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/mariadb"
|
- "/data/mariadb"
|
||||||
- "{{ data_folder }}/mariadb/config"
|
- "/data/mariadb/config"
|
||||||
|
|
||||||
- name: Create the mariadb container
|
- name: Create the mariadb container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "mariadb"
|
name: "mariadb"
|
||||||
image: ghcr.io/linuxserver/mariadb:11.4.8
|
image: ghcr.io/linuxserver/mariadb:11.4.8
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
ports:
|
ports:
|
||||||
- 3306:3306
|
- 3306:3306
|
||||||
env:
|
env:
|
||||||
@@ -25,5 +20,6 @@
|
|||||||
MYSQL_ROOT_PASSWORD: "{{MYSQL_ROOT_PASSWORD}}"
|
MYSQL_ROOT_PASSWORD: "{{MYSQL_ROOT_PASSWORD}}"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/mariadb/config:/config"
|
- "/data/mariadb/config:/config"
|
||||||
|
|
||||||
|
|
||||||
@@ -4,8 +4,8 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/mealie"
|
- "/data/mealie"
|
||||||
- "{{ data_folder }}/mealie/config"
|
- "/data/mealie/config"
|
||||||
|
|
||||||
- name: Create the mealie container
|
- name: Create the mealie container
|
||||||
docker_container:
|
docker_container:
|
||||||
@@ -27,10 +27,13 @@
|
|||||||
BASE_URL: "mealie.comprofix.xyz"
|
BASE_URL: "mealie.comprofix.xyz"
|
||||||
SMTP_HOST: "{{MAIL_HOST}}"
|
SMTP_HOST: "{{MAIL_HOST}}"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/mealie/data/:/app/data"
|
- "/data/mealie/data/:/app/data"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.mealie.rule: "Host(`mealie.comprofix.xyz`)"
|
traefik.http.routers.mealie.rule: "Host(`mealie.comprofix.xyz`)"
|
||||||
traefik.http.routers.mealie.entrypoints: "https"
|
traefik.http.routers.mealie.entrypoints: "https"
|
||||||
traefik.http.routers.mealie.tls: "true"
|
traefik.http.routers.mealie.tls: "true"
|
||||||
traefik.http.services.mealie.loadbalancer.server.port: "9000"
|
traefik.http.services.mealie.loadbalancer.server.port: "9000"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -4,14 +4,13 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/mediawiki"
|
- "/data/mediawiki"
|
||||||
|
|
||||||
- name: Create the wiki container
|
- name: Create the wiki container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: mediawiki
|
name: mediawiki
|
||||||
image: mediawiki:1.44.2
|
image: mediawiki:1.44.2
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -19,11 +18,13 @@
|
|||||||
PGID: "1000"
|
PGID: "1000"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/mediawiki/images:/var/www/html/images"
|
- "/data/mediawiki/images:/var/www/html/images"
|
||||||
- "{{ data_folder }}/mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php"
|
- "/data/mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.wiki.rule: "Host(`wiki.comprofix.xyz`)"
|
traefik.http.routers.wiki.rule: "Host(`wiki.comprofix.xyz`)"
|
||||||
traefik.http.routers.wiki.entrypoints: "https"
|
traefik.http.routers.wiki.entrypoints: "https"
|
||||||
traefik.http.routers.wiki.tls: "true"
|
traefik.http.routers.wiki.tls: "true"
|
||||||
traefik.http.services.wiki.loadbalancer.server.port: "80"
|
traefik.http.services.wiki.loadbalancer.server.port: "80"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create directories
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_folder }}/mssql"
|
|
||||||
- "{{ data_folder }}/mssql/data"
|
|
||||||
- "{{ data_folder }}/mssql/log"
|
|
||||||
- "{{ data_folder }}/mssql/secrets"
|
|
||||||
|
|
||||||
- name: Create the mssql container
|
|
||||||
docker_container:
|
|
||||||
name: mssql
|
|
||||||
image: mcr.microsoft.com/mssql/server:2025-latest@sha256:2c80e548ef65fb65a8ca23c3a74ed60e0964ea709f46d07c97ccaf7c437e2cc6
|
|
||||||
user: root
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
ports:
|
|
||||||
- 1433:1433
|
|
||||||
env:
|
|
||||||
PUID: "0"
|
|
||||||
PGID: "0"
|
|
||||||
ACCEPT_EULA: "Y"
|
|
||||||
MSSQL_PID: "Express"
|
|
||||||
SA_PASSWORD: "{{ SA_PASSWORD }}"
|
|
||||||
volumes:
|
|
||||||
- "{{ data_folder }}/mssql/data:/var/opt/mssql/data"
|
|
||||||
- "{{ data_folder }}/mssql/log:/var/opt/mssql/log"
|
|
||||||
- "{{ data_folder }}/mssql/secrets:/var/opt/mssql/secrets"
|
|
||||||
6
roles/nfs/tasks/main.yml → tasks/nfs.yml
Normal file → Executable file
6
roles/nfs/tasks/main.yml → tasks/nfs.yml
Normal file → Executable file
@@ -1,5 +1,4 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: Install NFS mount utility
|
- name: Install NFS mount utility
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
update_cache: true
|
update_cache: true
|
||||||
@@ -11,10 +10,7 @@
|
|||||||
ansible.posix.mount:
|
ansible.posix.mount:
|
||||||
src: "{{ item.src }}"
|
src: "{{ item.src }}"
|
||||||
path: "{{ item.path }}"
|
path: "{{ item.path }}"
|
||||||
opts: "{{ item.opts | default(nfs_mount_opts) }}"
|
opts: "{{ item.opts | default('rw,sync,hard') }}"
|
||||||
state: "{{ item.state | default( 'mounted' ) }}"
|
state: "{{ item.state | default( 'mounted' ) }}"
|
||||||
fstype: nfs
|
fstype: nfs
|
||||||
with_items: "{{ mounts }}"
|
with_items: "{{ mounts }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4,21 +4,23 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/omada"
|
- "/data/omada"
|
||||||
- "{{ data_folder }}/omada/data"
|
- "/data/omada/data"
|
||||||
- "{{ data_folder }}/omada/logs"
|
- "/data/omada/logs"
|
||||||
|
|
||||||
- name: Create the omada container
|
- name: Create/Update the omada-controller container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: omada
|
name: omada
|
||||||
image: mbentley/omada-controller:5.15
|
image: mbentley/omada-controller:5.15
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
network_mode: host
|
network_mode: host
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/omada/data:/opt/tplink/EAPController/data"
|
- "/data/omada/data:/opt/tplink/EAPController/data"
|
||||||
- "{{ data_folder }}/omada/logs:/opt/tplink/EAPController/logs"
|
- "/data/omada/logs:/opt/tplink/EAPController/logs"
|
||||||
env:
|
env:
|
||||||
PUID: "1000"
|
PUID: "1000"
|
||||||
PGID: "1000"
|
PGID: "1000"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
69
tasks/planka.yml
Normal file
69
tasks/planka.yml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
- name: Create directories
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
with_items:
|
||||||
|
- "/data/planka"
|
||||||
|
- "/data/planka/data"
|
||||||
|
- "/data/planka/logs"
|
||||||
|
|
||||||
|
- name: Ensure "planka" network exists
|
||||||
|
docker_network:
|
||||||
|
name: planka
|
||||||
|
|
||||||
|
- name: Create/update the postgres database
|
||||||
|
docker_container:
|
||||||
|
name: postgres-planka
|
||||||
|
image: postgres:16-alpine
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: planka
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
TZ: "Australia/Brisbane"
|
||||||
|
networks:
|
||||||
|
- name: planka
|
||||||
|
volumes:
|
||||||
|
- "/data/planka/postgres:/var/lib/postgresql/data"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
- name: Create/Update the planka container
|
||||||
|
docker_container:
|
||||||
|
name: planka
|
||||||
|
image: ghcr.io/plankanban/planka:2.0.0-rc.4
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
networks:
|
||||||
|
- name: proxy
|
||||||
|
- name: planka
|
||||||
|
volumes:
|
||||||
|
- "/data/planka/favicons:/app/public/favicons"
|
||||||
|
- "/data/planka/user-avatars:/app/public/user-avatars"
|
||||||
|
- "/data/planka/background-images:/app/public/background-images"
|
||||||
|
- "/data/planka/attachments:/app/private/attachments"
|
||||||
|
env:
|
||||||
|
BASE_URL: https://planka.comprofix.xyz
|
||||||
|
DATABASE_URL: postgresql://postgres@postgres-planka/planka
|
||||||
|
SECRET_KEY: 0bfe626742d5f70566dc95173360895825d1d07b342fcd58b64906314168f65c8f8279c09f0664afb24be2d78deb4e79c1e189f112ac7e4108e750e596900e76
|
||||||
|
TRUST_PROXY: "true"
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
TZ: "Australia/Brisbane"
|
||||||
|
DEFAULT_ADMIN_EMAIL: "{{ planka_email }}"
|
||||||
|
DEFAULT_ADMIN_PASSWORD: "{{ planka_password }}"
|
||||||
|
DEFAULT_ADMIN_NAME: "{{ planka_name }}"
|
||||||
|
DEFAULT_ADMIN_USERNAME: "{{ planka_username }}"
|
||||||
|
labels:
|
||||||
|
traefik.enable: "true"
|
||||||
|
traefik.http.routers.planka.rule: "Host(`planka.comprofix.xyz`)"
|
||||||
|
traefik.http.routers.planka.entrypoints: "https"
|
||||||
|
traefik.http.routers.planka.tls: "true"
|
||||||
|
traefik.http.services.planka.loadbalancer.server.port: "1337"
|
||||||
|
traefik.http.services.planka.loadbalancer.server.scheme: "http"
|
||||||
|
traefik.docker.network: "proxy"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
@@ -4,19 +4,20 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "/mnt/nfs/docker/postgres"
|
- "/data/postgres"
|
||||||
- "/mnt/nfs/docker/postgres/config"
|
- "/data/postgres/data"
|
||||||
|
|
||||||
- name: Create the postgres container
|
- name: Create the postgres container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: postgres
|
name: postgres
|
||||||
image: postgres:16-alpine
|
image: postgres:17.0-alpine
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
env:
|
env:
|
||||||
POSTGRES_PASSWORD: "{{POSTGRES_PASSWORD}}"
|
POSTGRES_PASSWORD: "{{POSTGRES_PASSWORD}}"
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/nfs/docker/postgres/db-data:/var/lib/postgresql/data
|
- /data/postgres/data:/var/lib/postgresql/data
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/prowlarr"
|
- "/data/prowlarr"
|
||||||
- "{{ data_folder }}/prowlarr/config"
|
- "/data/prowlarr/config"
|
||||||
|
|
||||||
- name: Create the prowlarr container
|
- name: Create the prowlarr container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: prowlarr
|
name: prowlarr
|
||||||
image: linuxserver/prowlarr:2.0.5
|
image: linuxserver/prowlarr:2.1.5
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -22,10 +21,13 @@
|
|||||||
AUTO_UPDATE: "true" #optional
|
AUTO_UPDATE: "true" #optional
|
||||||
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:prowlarr"
|
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:prowlarr"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/prowlarr/config:/config"
|
- "/data/prowlarr/config:/config"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.prowlarr.rule: "Host(`prowlarr.comprofix.xyz`)"
|
traefik.http.routers.prowlarr.rule: "Host(`prowlarr.comprofix.xyz`)"
|
||||||
traefik.http.routers.prowlarr.entrypoints: "https"
|
traefik.http.routers.prowlarr.entrypoints: "https"
|
||||||
traefik.http.routers.prowlarr.tls: "true"
|
traefik.http.routers.prowlarr.tls: "true"
|
||||||
traefik.http.services.prowlarr.loadbalancer.server.port: "9696"
|
traefik.http.services.prowlarr.loadbalancer.server.port: "9696"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/pykms"
|
- "/data/pykms"
|
||||||
- "{{ data_folder }}/pykms/db"
|
- "/data/pykms/db"
|
||||||
|
|
||||||
- name: Create the pykms container
|
- name: Create the pykms container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: pykms
|
name: pykms
|
||||||
image: ghcr.io/py-kms-organization/py-kms:latest
|
image: ghcr.io/py-kms-organization/py-kms:latest@sha256:07e5295d563df9e8f5165109d79cf06e425559c8b7f465c3c22578f62f8dce59
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
ports:
|
ports:
|
||||||
- "1688:1688"
|
- "1688:1688"
|
||||||
env:
|
env:
|
||||||
@@ -21,6 +20,9 @@
|
|||||||
HWID: "RANDOM"
|
HWID: "RANDOM"
|
||||||
LOGLEVEL: "INFO"
|
LOGLEVEL: "INFO"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/pykms/db:/home/py-kms/db"
|
- "/data/pykms/db:/home/py-kms/db"
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/radarr"
|
- "/data/radarr"
|
||||||
- "{{ data_folder }}/radarr/config"
|
- "/data/radarr/config"
|
||||||
|
|
||||||
- name: Create the radarr container
|
- name: Create the radarr container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: radarr
|
name: radarr
|
||||||
image: linuxserver/radarr:5.27.5
|
image: linuxserver/radarr:5.28.0
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -21,7 +20,7 @@
|
|||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:radarr"
|
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:radarr"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/radarr/config:/config"
|
- "/data/radarr/config:/config"
|
||||||
- /mnt/nfs/data:/data
|
- /mnt/nfs/data:/data
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
@@ -29,3 +28,6 @@
|
|||||||
traefik.http.routers.radarr.entrypoints: "https"
|
traefik.http.routers.radarr.entrypoints: "https"
|
||||||
traefik.http.routers.radarr.tls: "true"
|
traefik.http.routers.radarr.tls: "true"
|
||||||
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Readarr has been archived/retired.
|
|
||||||
# Keeping this for history
|
|
||||||
# ---
|
|
||||||
# - name: Create directories
|
|
||||||
# file:
|
|
||||||
# path: "{{ item }}"
|
|
||||||
# state: directory
|
|
||||||
# with_items:
|
|
||||||
# - "{{ data_folder }}/readarr"
|
|
||||||
# - "{{ data_folder }}/readarr/config"
|
|
||||||
|
|
||||||
# - name: Create the readarr container
|
|
||||||
# docker_container:
|
|
||||||
# name: readarr
|
|
||||||
# image: linuxserver/readarr:develop@sha256:eb37f58646a901dc7727cf448cae36daaefaba79de33b5058dab79aa4c04aefb
|
|
||||||
# restart_policy: unless-stopped
|
|
||||||
# recreate: true
|
|
||||||
# networks:
|
|
||||||
# - name: proxy
|
|
||||||
# env:
|
|
||||||
# PUID: "1000"
|
|
||||||
# PGID: "1000"
|
|
||||||
# TZ: "Australia/Brisbane"
|
|
||||||
# DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:readarr"
|
|
||||||
# volumes:
|
|
||||||
# - "{{ data_folder }}/readarr/config/:/config"
|
|
||||||
# - /mnt/nfs/data/:/data
|
|
||||||
# labels:
|
|
||||||
# traefik.enable: "true"
|
|
||||||
# traefik.http.routers.readarr.rule: "Host(`readarr.comprofix.xyz`)"
|
|
||||||
# traefik.http.routers.readarr.entrypoints: "https"
|
|
||||||
# traefik.http.routers.readarr.tls: "true"
|
|
||||||
# traefik.http.services.readarr.loadbalancer.server.port: "8787"
|
|
||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/sabnzbd"
|
- "/data/sabnzbd"
|
||||||
- "{{ data_folder }}/sabnzbd/config"
|
- "/data/sabnzbd/config"
|
||||||
|
|
||||||
- name: Create the sabnzbd container
|
- name: Create the sabnzbd container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: sabnzbd
|
name: sabnzbd
|
||||||
image: linuxserver/sabnzbd:4.5.3
|
image: linuxserver/sabnzbd:4.5.5
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -22,7 +21,7 @@
|
|||||||
HOSTNAME: "sabnzbd.comprofix.xyz"
|
HOSTNAME: "sabnzbd.comprofix.xyz"
|
||||||
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:sabnzbd"
|
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:sabnzbd"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/sabnzbd/config:/config"
|
- "/data/sabnzbd/config:/config"
|
||||||
- /mnt/nfs/data:/data
|
- /mnt/nfs/data:/data
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
@@ -30,3 +29,6 @@
|
|||||||
traefik.http.routers.sabnzbd.entrypoints: "https"
|
traefik.http.routers.sabnzbd.entrypoints: "https"
|
||||||
traefik.http.routers.sabnzbd.tls: "true"
|
traefik.http.routers.sabnzbd.tls: "true"
|
||||||
traefik.http.services.sabnzbd.loadbalancer.server.port: "8080"
|
traefik.http.services.sabnzbd.loadbalancer.server.port: "8080"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -4,15 +4,14 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/sonarr"
|
- "/data/sonarr"
|
||||||
- "{{ data_folder }}/sonarr/config"
|
- "/data/sonarr/config"
|
||||||
|
|
||||||
- name: Create the sonarr container
|
- name: Create the sonarr container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: sonarr
|
name: sonarr
|
||||||
image: linuxserver/sonarr:4.0.15
|
image: linuxserver/sonarr:4.0.15
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -21,7 +20,7 @@
|
|||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:sonarr"
|
DOCKER_MODS: "ghcr.io/themepark-dev/theme.park:sonarr"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/sonarr/config/:/config"
|
- "/data/sonarr/config/:/config"
|
||||||
- /mnt/nfs/data:/data
|
- /mnt/nfs/data:/data
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
@@ -29,3 +28,5 @@
|
|||||||
traefik.http.routers.sonarr.entrypoints: "https"
|
traefik.http.routers.sonarr.entrypoints: "https"
|
||||||
traefik.http.routers.sonarr.tls: "true"
|
traefik.http.routers.sonarr.tls: "true"
|
||||||
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|||||||
@@ -4,16 +4,15 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/speedtest"
|
- "/data/speedtest"
|
||||||
- "{{ data_folder }}/speedtest/config"
|
- "/data/speedtest/config"
|
||||||
- "{{ data_folder }}/speedtest/web"
|
- "/data/speedtest/web"
|
||||||
|
|
||||||
- name: Create the speedtest container
|
- name: Create the speedtest container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: speedtest
|
name: speedtest
|
||||||
image: lscr.io/linuxserver/speedtest-tracker:1.6.8
|
image: lscr.io/linuxserver/speedtest-tracker:1.6.9
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -30,8 +29,8 @@
|
|||||||
SPEEDTEST_SCHEDULE: "0 * * * *"
|
SPEEDTEST_SCHEDULE: "0 * * * *"
|
||||||
DISPLAY_TIMEZONE: "Australia/Brisbane"
|
DISPLAY_TIMEZONE: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/speedtest/config:/config"
|
- "/data/speedtest/config:/config"
|
||||||
- "{{ data_folder }}/speedtest/web:/etc/ssl/web"
|
- "/data/speedtest/web:/etc/ssl/web"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.speedtest.rule: "Host(`speedtest.comprofix.xyz`)"
|
traefik.http.routers.speedtest.rule: "Host(`speedtest.comprofix.xyz`)"
|
||||||
@@ -39,3 +38,6 @@
|
|||||||
traefik.http.routers.speedtest.tls: "true"
|
traefik.http.routers.speedtest.tls: "true"
|
||||||
traefik.http.services.speedtest.loadbalancer.server.port: "80"
|
traefik.http.services.speedtest.loadbalancer.server.port: "80"
|
||||||
traefik.http.services.speedtest.loadbalancer.server.scheme: "http"
|
traefik.http.services.speedtest.loadbalancer.server.scheme: "http"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|||||||
@@ -4,56 +4,33 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/traefik"
|
- "/data/traefik"
|
||||||
- "{{ data_folder }}/traefik/data"
|
- "/data/traefik/config"
|
||||||
- "{{ data_folder }}/traefik/data/log"
|
- "/data/traefik/log"
|
||||||
|
|
||||||
|
- name: Ensure 'proxy' network exists
|
||||||
- name: Create a network
|
|
||||||
docker_network:
|
docker_network:
|
||||||
name: proxy
|
name: proxy
|
||||||
register: network
|
|
||||||
|
|
||||||
- name: Copy Traefik config
|
- name: Copy Traefik main configuration
|
||||||
template:
|
template:
|
||||||
src: templates/traefik.yml.j2
|
src: ../templates/traefik.yml.j2
|
||||||
dest: "{{ data_folder }}/traefik/data/traefik.yml"
|
dest: "/data/traefik/config/traefik.yml"
|
||||||
mode: "0600"
|
mode: "0600"
|
||||||
|
|
||||||
- name: Copy Traefik config
|
- name: Copy Traefik extra config
|
||||||
template:
|
template:
|
||||||
src: templates/config.yml.j2
|
src: ../templates/config.yml.j2
|
||||||
dest: "{{ data_folder }}/traefik/data/config.yml"
|
dest: "/data/traefik/config/config.yml"
|
||||||
mode: "0600"
|
mode: "0600"
|
||||||
when: traefik_host == "traefik02.comprofix.xyz"
|
|
||||||
|
|
||||||
- name: Check if {{ data_folder }}/traefik/data/acme.json exists
|
- name: Ensure acme.json exists
|
||||||
ansible.builtin.stat:
|
file:
|
||||||
path: "{{ data_folder }}/traefik/data/acme.json"
|
path: "/data/traefik/config/acme.json"
|
||||||
register: file_status
|
|
||||||
|
|
||||||
- name: Creates {{ data_folder }}/traefik/data/acme.json if it doesn't exists
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ data_folder }}/traefik/data/acme.json"
|
|
||||||
state: touch
|
state: touch
|
||||||
owner: root
|
owner: root # UID Traefik runs as
|
||||||
group: root
|
group: root # GID Traefik runs as
|
||||||
mode: "0600"
|
mode: "0600"
|
||||||
when: not file_status.stat.exists
|
|
||||||
|
|
||||||
- name: Check if traefik.json.log exists
|
|
||||||
ansible.builtin.stat:
|
|
||||||
path: "{{ data_folder }}/traefik/data/log/traefik.json.log"
|
|
||||||
register: file_status
|
|
||||||
|
|
||||||
- name: Creates traefik.json.log if it doesn't exists
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ data_folder }}/traefik/data/log/traefik.json.log"
|
|
||||||
state: touch
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: "0600"
|
|
||||||
when: not file_status.stat.exists
|
|
||||||
|
|
||||||
- name: Create traefik Container
|
- name: Create traefik Container
|
||||||
docker_container:
|
docker_container:
|
||||||
@@ -71,17 +48,17 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- "{{ data_folder }}/traefik/data/traefik.yml:/traefik.yml:ro"
|
- "/data/traefik/config/traefik.yml:/traefik.yml:ro"
|
||||||
- "{{ data_folder }}/traefik/data/acme.json:/acme.json"
|
- "/data/traefik/config/acme.json:/acme.json"
|
||||||
- "{{ data_folder }}/traefik/data/log:/var/log/traefik"
|
- "/data/traefik/log:/var/log/traefik"
|
||||||
- "{{ data_folder }}/traefik/data/config.yml:/config.yml:ro"
|
- "/data/traefik/config/config.yml:/config.yml:ro"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.traefik.entrypoints: "http"
|
traefik.http.routers.traefik.entrypoints: "http"
|
||||||
traefik.http.routers.traefik.rule: "Host(`{{traefik_host}}`)"
|
traefik.http.routers.traefik.rule: "Host(`{{traefik_host}}`)"
|
||||||
|
traefik.http.middlewares.traefik-auth.basicauth.users: "{{ traefik_api_password }}"
|
||||||
traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme: "https"
|
traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme: "https"
|
||||||
traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: "https"
|
traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: "https"
|
||||||
traefik.http.middlewares.traefik-auth.basicauth.users: "{{ traefik_api_userpass }}"
|
|
||||||
traefik.http.routers.traefik.middlewares: "traefik-https-redirect"
|
traefik.http.routers.traefik.middlewares: "traefik-https-redirect"
|
||||||
traefik.http.routers.traefik-secure.entrypoints: "https"
|
traefik.http.routers.traefik-secure.entrypoints: "https"
|
||||||
traefik.http.routers.traefik-secure.rule: "Host(`{{traefik_host}}`)"
|
traefik.http.routers.traefik-secure.rule: "Host(`{{traefik_host}}`)"
|
||||||
@@ -93,3 +70,6 @@
|
|||||||
traefik.http.routers.traefik-secure.tls.domains[1].main: "comprofix.xyz"
|
traefik.http.routers.traefik-secure.tls.domains[1].main: "comprofix.xyz"
|
||||||
traefik.http.routers.traefik-secure.tls.domains[1].sans: "*.comprofix.xyz"
|
traefik.http.routers.traefik-secure.tls.domains[1].sans: "*.comprofix.xyz"
|
||||||
traefik.http.routers.traefik-secure.service: "api@internal"
|
traefik.http.routers.traefik-secure.service: "api@internal"
|
||||||
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create directories
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_folder }}/traggo"
|
|
||||||
- "{{ data_folder }}/traggo/data"
|
|
||||||
|
|
||||||
- name: Create the traggo container
|
|
||||||
docker_container:
|
|
||||||
name: traggo
|
|
||||||
image: traggo/server:0.7.1
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: proxy
|
|
||||||
volumes:
|
|
||||||
- /data/traggo/data:/opt/traggo/data
|
|
||||||
labels:
|
|
||||||
traefik.enable: "true"
|
|
||||||
traefik.http.routers.traggo.rule: "Host(`traggo.comprofix.xyz`)"
|
|
||||||
traefik.http.routers.traggo.entrypoints: "https"
|
|
||||||
traefik.http.routers.traggo.tls: "true"
|
|
||||||
traefik.http.services.traggo.loadbalancer.server.port: "3030"
|
|
||||||
traefik.http.services.traggo.loadbalancer.server.scheme: "http"
|
|
||||||
@@ -4,18 +4,17 @@
|
|||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ data_folder }}/vaultwarden"
|
- "/data/vaultwarden"
|
||||||
- "{{ data_folder }}/vaultwarden/config"
|
- "/data/vaultwarden/config"
|
||||||
- "{{ data_folder }}/vaultwardenbackup"
|
- "/data/vaultwardenbackup"
|
||||||
- "{{ data_folder }}/vaultwardenbackup/config"
|
- "/data/vaultwardenbackup/config"
|
||||||
- "{{ data_folder }}/vaultwardenbackup/config/rclone"
|
- "/data/vaultwardenbackup/config/rclone"
|
||||||
|
|
||||||
- name: Create the vaultwarden container
|
- name: Create the vaultwarden container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: vaultwarden
|
name: vaultwarden
|
||||||
image: vaultwarden/server:1.34.3
|
image: vaultwarden/server:1.34.3
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: proxy
|
- name: proxy
|
||||||
env:
|
env:
|
||||||
@@ -23,7 +22,7 @@
|
|||||||
PGID: "1000"
|
PGID: "1000"
|
||||||
TZ: "Australia/Brisbane"
|
TZ: "Australia/Brisbane"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/vaultwarden/data:/data"
|
- "/data/vaultwarden/data:/data"
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.vaultwarden.rule: "Host(`vault.comprofix.com`)"
|
traefik.http.routers.vaultwarden.rule: "Host(`vault.comprofix.com`)"
|
||||||
@@ -31,21 +30,22 @@
|
|||||||
traefik.http.routers.vaultwarden.tls: "true"
|
traefik.http.routers.vaultwarden.tls: "true"
|
||||||
traefik.http.routers.vaultwarden.service: "vaultwarden"
|
traefik.http.routers.vaultwarden.service: "vaultwarden"
|
||||||
traefik.http.services.vaultwarden.loadbalancer.server.port: "80"
|
traefik.http.services.vaultwarden.loadbalancer.server.port: "80"
|
||||||
register: container
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
- name: Copy rclone config
|
- name: Copy rclone config
|
||||||
copy:
|
copy:
|
||||||
src: scripts/rclone.conf
|
src: scripts/rclone.conf
|
||||||
dest: "{{ data_folder }}/vaultwardenbackup/config/rclone/rclone.conf"
|
dest: "/data/vaultwardenbackup/config/rclone/rclone.conf"
|
||||||
decrypt: yes
|
decrypt: yes
|
||||||
mode: "0600"
|
mode: "0600"
|
||||||
|
|
||||||
- name: Create the vaultwarden container
|
- name: Create the vaultwarden container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: vaultwardenbackup
|
name: vaultwardenbackup
|
||||||
image: ttionya/vaultwarden-backup:1.25.2
|
image: ttionya/vaultwarden-backup:1.25.3
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
recreate: true
|
|
||||||
env:
|
env:
|
||||||
PUID: "1000"
|
PUID: "1000"
|
||||||
PGID: "1000"
|
PGID: "1000"
|
||||||
@@ -54,9 +54,10 @@
|
|||||||
BACKUP_KEEP_DAYS: "14"
|
BACKUP_KEEP_DAYS: "14"
|
||||||
ZIP_PASSWORD: "{{ VAULTWARDEN_BACKUP_ZIP_PASSWORD }}"
|
ZIP_PASSWORD: "{{ VAULTWARDEN_BACKUP_ZIP_PASSWORD }}"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_folder }}/vaultwarden/data:/bitwarden/data"
|
- "/data/vaultwarden/data:/bitwarden/data"
|
||||||
- "{{ data_folder }}/vaultwardenbackup/config:/config"
|
- "/data/vaultwardenbackup/config:/config"
|
||||||
register: container
|
pull: true
|
||||||
|
recreate: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
alpine_latest_image: "alpine:latest"
|
|
||||||
ubuntu_latest_image: "node:22-trixie"
|
|
||||||
debian_latest_image: "git.comprofix.com/mmckinnon/debian-latest:2025.08.31-093853"
|
|
||||||
2
vault.sh
2
vault.sh
@@ -13,8 +13,6 @@ fi
|
|||||||
#files=`find . \( -type d -name 'group_vars' -o -name 'vars' \) -exec find {} -type f \;`
|
#files=`find . \( -type d -name 'group_vars' -o -name 'vars' \) -exec find {} -type f \;`
|
||||||
files=(
|
files=(
|
||||||
"./group_vars/all.yml"
|
"./group_vars/all.yml"
|
||||||
"./roles/docker/vars/main.yml"
|
|
||||||
"./roles/traefik/vars/main.yml"
|
|
||||||
"./scripts/rclone.conf"
|
"./scripts/rclone.conf"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user