feat: add lander role for pearl
parent
6b93b3f7ed
commit
ef6d5e481e
|
@ -31,3 +31,6 @@ gitea_jwt_secret: "{{ vault_gitea_jwt_secret }}"
|
|||
vieter_api_key: "{{ vault_vieter_api_key }}"
|
||||
|
||||
site_api_key: "{{ vault_site_api_key }}"
|
||||
|
||||
lander_api_key: "{{ vault_lander_api_key }}"
|
||||
lander_version: '0.2.1'
|
||||
|
|
|
@ -1,38 +1,42 @@
|
|||
$ANSIBLE_VAULT;1.1;AES256
|
||||
63383436646334636234393830626134323666343733656139383235633233346239323335616531
|
||||
6138343436653662313466336339333133386361376232370a323038663962373733636539363166
|
||||
64376364653462316466333739633266656464376638303636316631636366643239376330353861
|
||||
6266663963626532360a666166343466326266343135326139333435396661393432316230386430
|
||||
31343339663862323230353266363239363532613564336536333262643231306435663964653535
|
||||
39653630653963363937656335633530613462656462633038363864386565383334383238613561
|
||||
64396163336234633837366565623239303835626334363334313132383530316631363039626161
|
||||
33653931656636393935643263636532313831613334613564383837636230373466383739323031
|
||||
34643633613432326437386137346263346438383836376130356262623531633535623537653661
|
||||
31666339313961306162393763646439636263303863376532366165656433383532353436616662
|
||||
34643334326461313665303130633461366665653064376566343763636362633634643661653739
|
||||
36666262383838656535356166353563393334336162616463626662383361646133373130653836
|
||||
61643233393163303232383566613566666332326432623139663135366263363536353762316666
|
||||
35393831396635616264346364633236393364376534323932346265393831323234616530373061
|
||||
36666433313162663738303462666430663261663666626339333837323838303734666436373935
|
||||
38666264626238376533303934636363333034336439343431326430646262303833393561383734
|
||||
30643734383030303261366133626531363932363162663136363866653635326363366530333033
|
||||
37396532663864333737613165383131383263373263303836363539633164656237663563323164
|
||||
38323564383163363834336633633265393562633461313665646633663231336662653834643130
|
||||
65303032333139643662323166313632333431616338313462613035626366653430623463663865
|
||||
64346634666132663935376532666362666636323134333633393030613965383761316530396132
|
||||
63343533323138323164633837363361633062323065356465623166633963313461656231396437
|
||||
64363861393466636435616439653266333963666137316332316565323431373930363130643662
|
||||
63353164633037653138393139616463643437663839653261353861626463356461313039383163
|
||||
33306637326234393237303264336537633538336634353830383839353864393366316536393734
|
||||
38633532633432323763623430393335613739636235346465363232643631303632383362643562
|
||||
33623966323065613563613865383630613634366338393464393563343361383831373736353936
|
||||
33613336343334633639626263626438623065643130356266323434613037636265633136396162
|
||||
38343631623034633336303731363334383036356133343832323433386565653233643438643437
|
||||
61393832323766633063353764363465316633343566323363393733333834623039383238373530
|
||||
37653939646562393830396364656333663463643361333461326561323638343539326266306235
|
||||
32393837353631633961373066356130383566346365653033356336333435613932653736376235
|
||||
33663237613437366364613731626162613761646364643061343531323761333132316535346530
|
||||
30646432653336313864323036313234616231333533343535663532643133666166613433656538
|
||||
38333038666634613333653831623463376261313864613736383862656362643731343637633736
|
||||
64343036376238643361613362646662623462353438333730656362373336616235626134666430
|
||||
37613134626637393762663562353432653439353333643665386265376561653036
|
||||
66313437656435656133346166653534646465333863366137326563343661613563623461356437
|
||||
6233623464323465393865306238393039396361366366330a613064313863623031613831383539
|
||||
38633466306662633134326635656532393632363138633139626338383361613335383132383932
|
||||
6534666564613034650a336663613537616132653166366130366535383634623961343438396634
|
||||
62626333313133303565646661656433303663303033383336313035333133323338643832623936
|
||||
35313030636239306461666537303933336338373130386434303938613763313437663031656362
|
||||
34356234613166383434346263373963656165653763616261616632313939653937373365633366
|
||||
64623637363066393364393063373264366432343638613639343861333263646362626265663734
|
||||
62373631633565356431653831613166653030376139383338346335613663633661393966633263
|
||||
34303734306534613333366339343131386634636135383630656136373430326236633730663235
|
||||
62653264343965393734383739346639363338623566306162376232363830633432643261313664
|
||||
36363637663266356133323534353035376266623237663535326430613061623335303534393066
|
||||
36663235656537616438343461373637623335633235393034343830333664343538653034643166
|
||||
62646564616363666531646436643338633639336262313361626534646163346131333734333964
|
||||
36373466343032303865316565393061663161633664626239373931323461316263323935653331
|
||||
39643834643338663164613061333833663665396636376135656636333561663062313731383530
|
||||
33393065326464316332666636656438353339353438626233613664643261663864373734343663
|
||||
39613833653232346462623562383062626462343564336535383362383938386664313539306634
|
||||
32633963346235393764656364313265656462336335643262303939383833336638633165393966
|
||||
36633166653563633266303764646530336638303661653136383161626637316664633835383461
|
||||
64346464636438376233313634633961323164373634313336346137393332633762613066323938
|
||||
37383938636135653135373634336566616536663161386361393466663062323064396662383865
|
||||
39363462636261653964653332396533356533633335646463616333376537396133363564343533
|
||||
66643031313165613632356235386561626230623534396465313131363766316137653530323531
|
||||
62626566613838343334356437666234343036366164353738356232363364653964663761643934
|
||||
36353835623433303132653433663938666162653664373666343235326433386364626233643737
|
||||
33623737346664656165373935643032613931366536636133303164353933333533616230396261
|
||||
31306364333066663165646364653961393836633431376261376163313735353134363062616361
|
||||
30376161323361353832383963373265383330616534623832623331663132316139336532366466
|
||||
38326531366562316536303662643834613836306331643331353437343863393134623932336165
|
||||
65386565636237646435636135336134353831303933346431636235643834616561313363376631
|
||||
30623764623332396162333464626435366134633538343337323262316337373435303161613966
|
||||
61333739396235323437643336306462343131336639333539353736313338616337323632613537
|
||||
64303031636461383462373634666562613130343864333666616564336564323936626464666336
|
||||
32306230373931373531303765346262313133336337323862393463343266626335303763653631
|
||||
63373232346466353138373136346435323639306637303034346130353664343363636164646236
|
||||
37363363343463626566643835396462653961653331626537346633333232613065323136346161
|
||||
39633232396663653966626237363761643735373739656239393566663133633633316632623265
|
||||
30633332306239326333373239373739376665313237643331633461333663393763333630363134
|
||||
36353135666332303163623963363130323937616236646263333361366364393133343935636330
|
||||
6466
|
||||
|
|
|
@ -31,3 +31,9 @@
|
|||
roles:
|
||||
- 'any.software.site-podman'
|
||||
tags: site
|
||||
|
||||
- hosts: pearl
|
||||
become: true
|
||||
roles:
|
||||
- 'any.software.lander'
|
||||
tags: lander
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
r8r.be {
|
||||
reverse_proxy 127.0.0.1:8022
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
data_dir='/mnt/data1/lander/data'
|
||||
snapshot_dir="${data_dir}.snapshot"
|
||||
|
||||
# Read-only snapshot for atomic backup
|
||||
btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $?
|
||||
|
||||
/usr/local/bin/restic backup "$snapshot_dir"
|
||||
|
||||
# Always remove snapshot subvolume, even if restic fails
|
||||
btrfs subvolume delete "$snapshot_dir"
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Lander
|
||||
After=network.target network-online.target
|
||||
Requires=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=lander
|
||||
Group=lander
|
||||
ExecStart=/usr/local/bin/lander
|
||||
Restart=always
|
||||
EnvironmentFile=/etc/lander/lander.env
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: 'restart lander'
|
||||
ansible.builtin.service:
|
||||
name: 'lander'
|
||||
state: 'restarted'
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: 'any.tools.caddy'
|
|
@ -0,0 +1,105 @@
|
|||
---
|
||||
- name: Ensure newest binary is present
|
||||
ansible.builtin.get_url:
|
||||
url: "https://git.rustybever.be/api/packages/Chewing_Bever/generic/lander/{{ lander_version }}/lander-linux-{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
|
||||
dest: '/usr/local/bin/lander'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '0755'
|
||||
notify: 'restart lander'
|
||||
|
||||
- name: Ensure system group exists
|
||||
ansible.builtin.group:
|
||||
name: 'lander'
|
||||
gid: 201
|
||||
system: true
|
||||
state: present
|
||||
|
||||
- name: Ensure system user exists
|
||||
ansible.builtin.user:
|
||||
name: 'lander'
|
||||
group: 'lander'
|
||||
uid: 201
|
||||
system: true
|
||||
create_home: false
|
||||
|
||||
- name: Ensure data directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/mnt/data1/lander'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
|
||||
# Only one BTRFS file system should be mounted, so this will match that one
|
||||
- name: Ensure data subvolume is present
|
||||
community.general.btrfs_subvolume:
|
||||
name: '/lander/{{ item }}'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure data subvolume permissions are correct
|
||||
ansible.builtin.file:
|
||||
path: '/mnt/data1/lander/{{ item }}'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: 'lander'
|
||||
group: 'lander'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure configuration directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/etc/lander'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: 'lander'
|
||||
group: 'lander'
|
||||
|
||||
- name: Ensure environment file is present
|
||||
ansible.builtin.template:
|
||||
src: 'lander.env.j2'
|
||||
dest: '/etc/lander/lander.env'
|
||||
owner: 'lander'
|
||||
group: 'lander'
|
||||
mode: '0644'
|
||||
notify: 'restart lander'
|
||||
|
||||
- name: Ensure backup script is present
|
||||
ansible.builtin.copy:
|
||||
src: 'lander.{{ item }}.backup.sh'
|
||||
dest: '/etc/backups/lander.{{ item }}.backup.sh'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '0644'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure service file is present
|
||||
ansible.builtin.copy:
|
||||
src: 'lander.service'
|
||||
dest: '/lib/systemd/system/lander.service'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '0644'
|
||||
register: res
|
||||
|
||||
- name: systemd-reload
|
||||
ansible.builtin.systemd_service:
|
||||
daemon_reload: true
|
||||
when: 'res.changed'
|
||||
|
||||
- name: Ensure Caddyfile is present
|
||||
ansible.builtin.copy:
|
||||
src: 'lander.Caddyfile'
|
||||
dest: '/etc/caddy/lander.Caddyfile'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'reload caddy'
|
||||
|
||||
- name: Ensure lander service is enabled
|
||||
ansible.builtin.service:
|
||||
name: 'lander'
|
||||
state: 'started'
|
||||
enabled: true
|
|
@ -0,0 +1,3 @@
|
|||
LANDER_DATA_DIR=/mnt/data1/lander/data
|
||||
LANDER_PORT=8022
|
||||
LANDER_API_KEY={{ lander_api_key }}
|
Loading…
Reference in New Issue