Compare commits

...

5 Commits

8 changed files with 134 additions and 10 deletions

View File

@ -85,23 +85,30 @@ open_files() {
main() {
prereq "$SERVICE"
if [ "$1" == "pre" ]; then
printf "stopping %s\n" $SERVICE
if ! stop_server $SERVICE; then
error_exit "Failed to stop $SERVICE"
fi
for path in "$VAR_DIR"/*; do
instance="minecraft@$(basename "$path").service"
prereq "$instance"
printf "stopping %s\n" "$instance"
if ! stop_server "$instance"; then
error_exit "Failed to stop $instance"
fi
done
printf "checking for open files\n"
if ! open_files $VAR_DIR; then
error_exit "Open files exist in $VAR_DIR"
fi
elif [ "$1" == "post" ]; then
printf "starting %s\n" $SERVICE
if ! start_server $SERVICE; then
error_exit "Failed to start $SERVICE"
fi
for path in "$VAR_DIR"/*; do
instance="minecraft@$(basename "$path").service"
prereq "$instance"
printf "starting %s\n" "$instance"
if ! start_server "$instance"; then
error_exit "Failed to start $instance"
fi
done
fi
}

View File

@ -5,6 +5,7 @@
ignore_errors: yes
environment: "{{ item.environment | default({}) }}"
register: restic_init
changed_when: false
- name: init repos
shell:

View File

@ -68,5 +68,5 @@
minute: "0"
hour: "1"
user: root
job: find /var/log/syslog/ -type f ! -name "*$(date +\%Y\%m\%d)*.log" -name "*.log" -exec xz {} \;
job: find /var/log/syslog/ -type f -name "*.log" -mtime +5 -exec xz {} \;
state: "{{ rsyslog_archival_format_enabled | ternary('present', 'absent') }}"

View File

@ -0,0 +1,14 @@
---
spiped_package_name: spiped
spiped_package_state: present
spiped_etc_path: /etc/spiped
spiped_run_path: /run/spiped
spiped_user: spiped
spiped_group: spiped
spiped_user_state: present
spiped_user_comment: spiped
spiped_user_home: "{{ spiped_run_path }}"
spiped_user_password: "!"
spiped_user_shell: /usr/sbin/nologin

View File

@ -0,0 +1,10 @@
---
- name: spiped daemon-reload
systemd:
daemon_reload: yes
- name: restart spiped tunnels
service:
name: "spiped-{{ item.name }}"
state: restarted
loop: "{{ spiped_tunnels | default([]) }}"

View File

@ -0,0 +1,60 @@
---
- name: install package
package:
name: "{{ spiped_package_name }}"
state: "{{ spiped_package_state }}"
- name: "create {{ spiped_user }} user"
user:
name: "{{ spiped_user }}"
comment: "{{ spiped_user_comment }}"
password: "{{ spiped_user_password }}"
home: "{{ spiped_user_home }}"
shell: "{{ spiped_user_shell }}"
state: "{{ spiped_user_state }}"
system: yes
create_home: no
- name: create paths
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: 0755
loop:
- "{{ spiped_etc_path }}"
- name: configure systemd unit
template:
src: spiped.service.j2
dest: "/etc/systemd/system/spiped-{{ item.name }}.service"
owner: root
group: root
mode: 0644
loop: "{{ spiped_tunnels | default([]) }}"
notify:
- restart spiped tunnels
- spiped daemon-reload
when: ansible_service_mgr == 'systemd'
no_log: true
- name: configure keys
copy:
dest: "{{ spiped_etc_path }}/{{ item.name }}.key"
content: "{{ item.key | b64decode }}"
owner: "{{ spiped_user }}"
group: "{{ spiped_group }}"
mode: 0400
loop: "{{ spiped_tunnels | default([]) }}"
notify:
- restart spiped tunnels
no_log: true
- name: manage services
service:
name: "spiped-{{ item.name }}.service"
state: "{{ item.state | default('started') }}"
enabled: "{{ item.enabled | default(true) }}"
loop: "{{ spiped_tunnels | default([]) }}"
no_log: true

View File

@ -0,0 +1,22 @@
{% set keyfile = "{0}/{1}.key".format(spiped_etc_path, item.name) %}
# {{ ansible_managed }}
[Unit]
Description=spiped tunnel {{ item.name }}
Wants=network-online.target
After=network-online.target
[Service]
User={{ spiped_user }}
{% if item.type == 'client' %}
ExecStart=/usr/bin/spiped -F -g -k {{ keyfile }} -D -e -s '{{ item.source_socket }}' -t '{{ item.target_socket }}'
{% else %}
ExecStart=/usr/bin/spiped -F -g -k {{ keyfile }} -d -s '{{ item.source_socket }}' -t '{{ item.target_socket }}'
{% endif %}
Restart=always
RestartSec=60
RuntimeDirectory=spiped
PIDFile={{ spiped_run_path }}/{{ item.name }}.pid
[Install]
WantedBy=multi-user.target

View File

@ -28,12 +28,21 @@ util_packages:
- bc
misc:
- tmux
- screen
- moreutils
utils:
- unzip
- p7zip
- p7zip-full
- pigz
- pxz
- pbzip2
- pv
- htop
- iotop
- iftop
- lsof
- sysdig
security:
- gnupg
- pass
@ -41,6 +50,7 @@ util_packages:
text:
- jq
- crudini
- xmlstarlet
interpreters:
- lua5.3
python: