diff options
| author | Luke Hoersten <[email protected]> | 2026-07-26 10:36:29 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-07-26 10:36:29 -0500 |
| commit | 38323823b85b2ae8deef788a0f49e36c789c12f4 (patch) | |
| tree | 94a3227a737ba0198dd06d3b7e001f219fe32bdc /openhop/repeater/tasks | |
| parent | 1aaf4479d72edbd0c716d2e9122a7b613626bf12 (diff) | |
openhop/repeater: add MeshCore repeater role
Deploys the openHop MeshCore repeater on a Raspberry Pi with a RAK6421
WisMesh Pi HAT: installs the daemon into a venv from a versioned git tag,
templates config.yaml and a systemd unit, and loads board pin maps and RF
region presets by name from vars/. identity_file is configurable and
defaults to null (daemon generates its own keypair).
Diffstat (limited to 'openhop/repeater/tasks')
| -rw-r--r-- | openhop/repeater/tasks/main.yaml | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/openhop/repeater/tasks/main.yaml b/openhop/repeater/tasks/main.yaml new file mode 100644 index 0000000..b24044c --- /dev/null +++ b/openhop/repeater/tasks/main.yaml @@ -0,0 +1,102 @@ +--- + +- name: load board pin preset + include_vars: "boards/{{repeater_board}}.yaml" + +- name: load RF region preset + include_vars: "rf/{{repeater_rf_preset}}.yaml" + +- name: enable SPI for the LoRa HAT + become: yes + lineinfile: + path: "/boot/firmware/config.txt" + line: "dtparam=spi=on" + regexp: "^#?dtparam=spi=" + register: spi_result + +- name: remind to reboot for SPI to take effect + debug: + msg: "config.txt updated — reboot {{inventory_hostname}} for dtparam=spi=on to take effect" + when: spi_result.changed + +- name: apt install openhop repeater dependencies + become: yes + apt: + name: + - "git" + - "python3-venv" + - "python3-dev" + - "build-essential" + +- name: add openhop repeater user + become: yes + user: + name: "{{repeater_user}}" + system: "yes" + shell: "/bin/false" + home: "{{repeater_data_dir}}" + create_home: "no" + groups: "spi,gpio" + append: "yes" + +- name: create openhop repeater directories + become: yes + file: + path: "{{item.path}}" + state: "directory" + owner: "{{item.owner}}" + group: "{{item.owner}}" + mode: "{{item.mode}}" + loop: + - { path: "/opt/openhop_repeater", owner: "root", mode: "0755" } + - { path: "{{repeater_config_dir}}", owner: "root", mode: "0755" } + - { path: "{{repeater_data_dir}}", owner: "{{repeater_user}}", mode: "0750" } + +- name: check installed openhop_repeater version + become: yes + stat: + path: "{{repeater_venv_dir}}/.installed-{{repeater_version}}" + register: repeater_installed + +- name: install openhop_repeater into venv + become: yes + pip: + name: "git+{{repeater_repo}}@{{repeater_version}}" + virtualenv: "{{repeater_venv_dir}}" + virtualenv_command: "python3 -m venv" + when: not repeater_installed.stat.exists + notify: restart openhop-repeater + +- name: stamp installed openhop_repeater version + become: yes + copy: + dest: "{{repeater_venv_dir}}/.installed-{{repeater_version}}" + content: "{{repeater_version}}\n" + mode: "0644" + when: not repeater_installed.stat.exists + +- name: configure openhop repeater + become: yes + template: + src: "config.yaml.j2" + dest: "{{repeater_config_dir}}/config.yaml" + owner: "root" + group: "{{repeater_user}}" + mode: "0640" + notify: restart openhop-repeater + +- name: install openhop-repeater systemd service + become: yes + template: + src: "openhop-repeater.service.j2" + dest: "/lib/systemd/system/openhop-repeater.service" + mode: "0644" + notify: restart openhop-repeater + +- name: ensure openhop-repeater service is started + become: yes + systemd: + name: "openhop-repeater.service" + enabled: "yes" + state: "started" + daemon_reload: "yes" |
