Compare commits

...

3 commits

Author SHA1 Message Date
2e47c6744f music: Add soundboard 2022-10-19 22:55:43 +02:00
97a4e95ca8 common: Sync from polyfloyd 2022-10-19 22:55:43 +02:00
b1add6ce2c Re-organize host inventory 2022-10-19 22:55:43 +02:00
19 changed files with 195 additions and 38 deletions

View file

@ -1,6 +1,5 @@
---
- hosts: bank
vars:
roles:
- common
- bank

4
common.yaml Normal file
View file

@ -0,0 +1,4 @@
---
- hosts: debian
roles:
- common

View file

@ -0,0 +1 @@
mqtt_internal_public_host: bitlair.nl

3
group_vars/music.yaml Normal file
View file

@ -0,0 +1,3 @@
music_domain: music.bitlair.nl
acme_san_domains:
- [ music.bitlair.nl ]

11
hosts
View file

@ -1,11 +0,0 @@
[bank]
bank.bitlair.nl
[bar]
bank-pi.bitlair.nl
[mqtt_internal]
mqtt.bitlair.nl
[music]
music.bitlair.nl

25
hosts.yaml Normal file
View file

@ -0,0 +1,25 @@
all:
children:
raspi:
hosts:
bank-pi.bitlair.nl:
debian:
children:
bank:
hosts:
bank.bitlair.nl:
git:
hosts:
git.bitlair.nl:
lights:
hosts:
lights.bitlair.nl:
mqtt_internal:
hosts:
mqtt.bitlair.nl:
music:
hosts:
music.bitlair.nl:
www:
hosts:
cyber.bitlair.nl:

View file

@ -1,7 +1,5 @@
---
- hosts: mqtt_internal
vars:
mqtt_internal_public_host: bitlair.nl
roles:
- common
- mqtt-internal

View file

@ -1,9 +1,5 @@
---
- hosts: music
vars:
music_domain: music.bitlair.nl
acme_san_domains:
- [ music.bitlair.nl ]
roles:
- common
- acme

View file

@ -2,5 +2,6 @@
location /.well-known/acme-challenge {
allow all;
auth_basic off;
alias /var/lib/dehydrated/acme-challenges;
}

View file

@ -31,7 +31,7 @@
lineinfile:
path: /etc/bash.bashrc
insertafter: EOF
regexp: "^source /usr/share/doc/fzf/{{ item }}"
regexp: "^source /usr/share/doc/fzf/examples/{{ item }}"
line: "source /usr/share/doc/fzf/examples/{{ item }} # Managed by Ansible"
with_items:
- key-bindings.bash
@ -77,12 +77,15 @@
- ipv6
notify: persist iptables
- name: Allow IPv6 ICMP
- name: Allow ICMP
iptables:
chain: INPUT
protocol: ipv6-icmp
protocol: "{{ item.proto }}"
jump: ACCEPT
ip_version: ipv6
ip_version: "{{ item.ip }}"
with_items:
- { ip: ipv4, proto: icmp }
- { ip: ipv6, proto: ipv6-icmp }
notify: persist iptables
- name: Allow related and established connections

View file

@ -5,17 +5,14 @@
state: present
when: network_br
- lineinfile:
- name: Configure sysctl.conf
lineinfile:
path: /etc/sysctl.conf
regexp: ^#?net.ipv4.ip_forward
line: "net.ipv4.ip_forward=1 # Managed by Ansible"
notify: reboot
when: network_br
- lineinfile:
path: /etc/sysctl.conf
regexp: ^#?net.ipv6.conf.all.forwarding
line: "net.ipv6.conf.all.forwarding=1 # Managed by Ansible"
regexp: "^#?{{ item.k }}"
line: "{{ item.k }}={{ item.v }} # Managed by Ansible"
with_items:
- { k: net.ipv4.ip_forward, v: "1" }
- { k: net.ipv6.conf.all.forwarding, v: "1" }
notify: reboot
when: network_br

View file

@ -18,20 +18,20 @@ iface eth0 inet manual
auto br0
iface br0 inet static
address {{ network_static.address_v4 }}
gateway {{ network_static.gateway_v4 }}
address {{ network_address_v4 }}
gateway {{ network_gateway_v4 }}
bridge_ports eth0
iface br0 inet6 auto
up echo -n 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
up ip -6 addr add {{ network_static.address_v6 }} dev br0
up ip -6 route add default via {{ network_static.gateway_v6 }} dev br0
up ip -6 addr add {{ network_address_v6 }} dev br0
up ip -6 route add default via {{ network_gateway_v6 }} dev br0
bridge_stp on
{% elif network_static %}
iface eth0 inet static
address {{ network_static.address_v4 }}
gateway {{ network_static.gateway_v4 }}
address {{ network_address_v4 }}
gateway {{ network_gateway_v4 }}
{% else %}
iface eth0 inet dhcp

View file

@ -17,3 +17,9 @@
name: librespot
state: restarted
daemon_reload: true
- name: restart soundboard
systemd:
name: soundboard
state: restarted
daemon_reload: true

View file

@ -8,6 +8,9 @@
- tags: music_librespot
import_tasks: librespot.yaml
- tags: music_soundboard
import_tasks: soundboard.yaml
- tags: music
block:
- name: Install nginx

View file

@ -0,0 +1,72 @@
---
- name: Install dependencies
apt:
name: virtualenv
state: present
- name: Clone soundboard source
git:
repo: https://github.com/polyfloyd/mqtt-soundboard.git
version: main
dest: /opt/soundboard
accept_hostkey: yes
notify: restart soundboard
- name: Create virtualenv
command: virtualenv /opt/soundboard/.venv
args:
creates: /opt/soundboard/.venv
- name: Install Python dependencies
shell: . .venv/bin/activate && pip install -r requirements.txt
args:
chdir: /opt/soundboard
- name: Install soundboard config file
template:
src: soundboard.yaml
dest: /etc/soundboard.yaml
owner: root
group: root
mode: 0644
notify: restart soundboard
- name: Install soundboard service file
template:
src: soundboard.service
dest: /etc/systemd/system/soundboard.service
owner: root
group: root
mode: 0644
notify: restart soundboard
- name: Enable soundboard
systemd:
name: soundboard
state: started
enabled: true
daemon_reload: true
- name: Install shutdown sound script
template:
src: shutdown-sound.sh
dest: /opt/shutdown-sound.sh
owner: root
group: root
mode: 0644
- name: Install shutdown sound service
template:
src: shutdown-sound.service
dest: /etc/systemd/system/shutdown-sound.service
owner: root
group: root
mode: 0644
notify: daemon reload
- name: Enable shutdown-sound
systemd:
name: shutdown-sound
state: started
enabled: true
daemon_reload: true

View file

@ -0,0 +1,16 @@
# Managed by Ansible
[Unit]
Description=Goodbye
Requires=mpd.service
[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/opt/shutdown.sh
RemainAfterExit=true
User=audio
Group=audio
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,8 @@
#!/bin/bash
# Managed by Ansible
systemctl stop trollibox.service
mpc clear
su audio -c 'mplayer -volume 10 -ao jack:name=MPlayer /opt/sounds/shutdown.mp3'

View file

@ -0,0 +1,15 @@
# Managed by Ansible
[Unit]
Description=MQTT Soundboard
After=network.target
[Service]
Type=simple
ExecStart=/opt/soundboard/.venv/bin/python /opt/soundboard/soundboard.py /etc/soundboard.yaml
Restart=always
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,21 @@
loglevel: INFO
mqtt:
host: mqtt.bitlair.nl
sounds:
directory: /opt/sounds
play_cmd: "mplayer -volume 10 -ao jack:name=MPlayer %s"
topic: bitlair/soundboard
aliases:
- sound: space_open
topic: bitlair/state
value: open
- sound: space_close
topic: bitlair/state
value: close
- sound: doorbell
topic: bitlair/doorduino/doorbell
- sound: nomunnie
topic: bitlair/bank/shame