--- - 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