This repo contains the files used to run shepherd services.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Efraim Flashner d7ba115677 singlecell: configure guix channels 8 months ago
cron cron: Add pubmed cronjob 2 years ago
shepherd genecup: update service. 11 months ago
20200503-channels.scm bnw: Use an older commit. 2 years ago
README Use per-service guix profiles 2 years ago
bnw-channels.scm bnw: configure guix channels 8 months ago
channels.scm Use per-service guix profiles 2 years ago
genecup-channels.scm genecup: update service. 8 months ago
genome-channels.scm genome-browser: configure guix channels 8 months ago
gitea-channels.scm gitea: configure guix channels 8 months ago
power-channels.scm bxd-power: configure guix channels 8 months ago
rn6app-channels.scm rn6app: configure guix channels 8 months ago
run_bnw.sh bnw: configure guix channels 8 months ago
run_covid19-pubseq.sh covid19-pubseq: New service. 2 years ago
run_genecup.sh genecup: update service. 8 months ago
run_genenetwork1.sh genenetwork1: update service. 1 year ago
run_genome_browser.sh genome-browser: configure guix channels 8 months ago
run_gitea-dump.sh gitea: configure guix channels 8 months ago
run_gitea.sh gitea: configure guix channels 8 months ago
run_ipfs.sh ipfs: update service. 8 months ago
run_power.sh bxd-power: configure guix channels 8 months ago
run_ratspub.sh ratspub: update service. 1 year ago
run_rn6app.sh rn6app: configure guix channels 8 months ago
run_singlecell.sh singlecell: configure guix channels 8 months ago
running_ratspub docs: document running ratspub 2 years ago
singlecell-channels.scm singlecell: configure guix channels 8 months ago
update_archive-pubmed.sh genecup: pubmed updater uses genecup guix profile 8 months ago
user-shepherd.service systemd: Add service to start shepherd at start-up. 2 years ago

README

This repo contains the files used to run shepherd services.

The `shepherd` and `cron` directories go in `.config`

The shell scripts sit in the home directory.

The systemd service is to start shepherd automatically on system boot.

Working with Shepherd Services

Each service is stored in a separate file. This allows us to reload individual services without needing to restart all of the services in one go. In order to see which services are available run the command `herd status`. 'Started' services are currently running, 'Stopped' services are not running but are still loaded, and 'One-shot' are services which are not running but run a one-off script or service.

The services are setup so that they have code that is run when it is started and continues to run until it is stopped. Sometimes that code can call other shell scripts in the home directory. If the primary code in the service needs to be changed then the service needs to be reloaded in accordance to a process that will allow it to be reloaded without stopping all the other services. In our example the service is `foo` and it is located in a file `bar.scm`.

$ herd stop foo
$ herd load root .config/shepherd/init.d/bar.scm

The second command will load the code in `bar.scm` into `shepherd`, and if the service is configured to start automatically at startup it will start immediately. This process should not affect the other running services.

To use shepherd's herd command, assuming you have permissions granted in /etc/sudoers, the command is 'sudo -u shepherd /home/shepherd/.guix-profile/bin/herd status'. Adding a bash alias, such as "alias herd-herd='sudo -u shepherd /home/shepherd/.guix-profile/bin/herd'", will make it easier to interact with shepherd without needing to switch to the shepherd user. The logs for the various shepherd services are located in /home/shepherd/logs/ but are not yet timestamped. The log for shepherd itself is in /home/shepherd/.config/shepherd/shepherd.log. There is not yet a way to change this from a config file.

*Per service Guix profiles*
Each service gets its own guix profile. This us to upgrade each service individually. If a specialized channel is needed then the command would be `guix pull --channels=/path/to/channels/file --profile=/path/to/profile`