pssid-daemon.py reads the pssid-config.json file, generates schedules based on cron expressions in the batch, and runs batches with pscheduler from perfSONAR. The daemon can be run manually or daemonized
File Structure
Materials Needed
Initial Setup
Ansible Bootstrapping
- Example EduRoam WPA_Supplicant configuration file
See Also: Troubleshooting and Manual Bootstrapping
This shows the comprehensive file structure on a RPi after configuration.
/usr/bin/pssid/
├── pssid-daemon.py
├── batch_processor_format_template.j2
└── README.md
/etc/pssid/
├── pssid_config.json
/etc/wpa_supplicant/
├── wpa_supplicant_{ssid_profile}.conf
/usr/lib/exec/pssid/
├── pssid-80211
├── pssid-dhcp
├── libpssid.sh
├── LICENSE
└── README.md
- Raspberry Pi 4
- 64gb SD Card
- Additional SD Card (optional, for updating eeprom)
- Power Over Ethernet Cable (optional, varies by setup)
Preparing the pi for ansible bootstrapping, configuring ssh
- Download Ubuntu 22.04 or 24 LTS (server edition) for the Raspberry Pi 4. This can be acquired through the official Raspberry Pi Imaging Software
- Allow the pi to boot and log in with the default credentials
ubuntu ubuntu
- To access the pi over ssh, go to
/etc/ssh/sshd_config.d/
and make sure the files in this directory has password authentication enabled
PasswordAuth yes
- Create a root password (by typing
passwd
as the root user) and reboot the pi, this time logging in as root (ensures there are no problems with the next steps) - Create a new user account, which will be used with ansible bootstrapping, and set a password
useradd -m usernamehere
passwd usernamehere
- Disable the ubuntu user by modifying
/etc/passwd
and changing the shell to/usr/bin/false
- Change the hostname to be the IP of the pi (helps with avoiding errors with the daemon later)
hostnamectl set-hostname <IP>
Refer to Refer to Manual Bootstrapping if you would like to provision the probes by hand
Setting up the daemon on the probes
- Create a working directory that will hold the ansible repos and cd into that working directory
- Clone the daemon repo
git clone https://github.com/UMNET-perfSONAR/ansible-playbook-pssid-daemon.git
- Edit the
hosts
files located atansible-playbook-pssid-daemon/inventory/hosts
to contain the IPs of your probes - Install roles:
ansible-galaxy install -f -r requirements.yml --ignore-errors
- cd into the root of the
ansible-playbook-pssid-daemon
directory and run the following command to ensure the host is reachable by ansible
ansible <host-pattern> -m ping
- set up the daemon on each of the probes (NOTE: pscheduler will take a VERY long time to install, also sometimes cloning fails for no reason, just run it again)
ansible-playbook --ask-vault-pass --ask-pass --ask-become-pass --user usernamehere --become --become-user root --become-method su --inventory inventory/ playbook.yml
- The configuration file is located on the pi at
/etc/pssid/pssid_config.json
needs to be sourced from the web server after being generated in the web interface. This file is located at/var/lib/pssid/output/pssid_config.json
- The
wpa_supplicant
configuration file will likely have to be modified or created to customize. An example of an eduroam configuration is below:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="eduroam"
key_mgmt=WPA-EAP
eap=PEAP
proto=RSN
pairwise=CCMP
group=CCMP
phase2="autheap=MSCHAPV2"
identity="you_user"
password="your_pass"
}