Files
soupclown/ansible/roles/dietpi/tasks/rns.yaml
T

94 lines
2.3 KiB
YAML

---
- name: Install the rns package
ansible.builtin.pip:
name: rns
state: present
break_system_packages: yes
- name: Install the lxmf package
ansible.builtin.pip:
name: lxmf
state: present
break_system_packages: yes
- name: Install the nomadnet package
ansible.builtin.pip:
name: nomadnet
state: present
break_system_packages: yes
- name: Create systemd service for rns
copy:
dest: /etc/systemd/system/rns.service
content: |
[Unit]
Description=Reticulum Network Stack Daemon
After=multi-user.target
[Service]
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=rnsd --service
[Install]
WantedBy=multi-user.target
- name: Reload systemd
systemd:
daemon_reload: yes
- name: Ensure rns service is configured
systemd:
name: rns.service
enabled: yes
state: stopped
- name: Ensure Reticulum config directory exists
file:
path: /root/.reticulum
state: directory
mode: "0755"
- name: Deploy rns configuration file (using block for friendly file updates)
copy:
dest: /root/.reticulum/config
content: |
[reticulum]
enable_transport = Yes
share_instance = Yes
instance_name = {{ansible_hostname}}
discover_interfaces = Yes
panic_on_interface_error = No
respond_to_probes = Yes
[logging]
loglevel = 6
[interfaces]
[[Default Interface]]
type = AutoInterface
enabled = Yes
{% for key, radio in radios.items() %}
[[RNode LoRa {{radio.name}}]]
type = RNodeInterface
enabled = {{ radio.enabled | default('yes') }}
port = {{ radio.serialpath | default('/dev/ttyACM0') }}
frequency = {{ radio.frequency | default(915000000) }}
bandwidth = {{ radio.bandwidth | default(125000) }}
txpower = {{ radio.txpower | default(7) }}
spreadingfactor = {{ radio.spreadingfactor | default(8) }}
codingrate = {{ radio.codingrate | default(5) }}
id_callsign = {{ radio.name | default(key) }}
id_interval = {{ radio.id_interval | default(600) }}
{% endfor %}
- name: Start rns service after config update
systemd:
name: rns.service
enabled: yes
state: started