The FreeBSD Diary

The FreeBSD Diary (TM) Remember
I remember
[ HOME | TOPICS | INDEX | WEB RESOURCES | BOOKS | CONTRIBUTE | SEARCH | FEEDBACK | FAQ | FORUMS ]

Things look quiet here. But I've been doing a lot of blogging at dan.langille.org because I prefer WordPress now. Not all my posts there are FreeBSD related. I am in the midst of migrating The FreeBSD Diary over to WordPress (and you can read about that here). Once the migration is completed, I'll move the FreeBSD posts into the new FreeBSD Diary website.

Bacula: RunBeforeJob on Storage Daemon 24 November 2010
Need more help on this topic? Click here
This article has no comments
Show me similar articles

This article deals with a particular Bacula directive: RunAfterJob This directive, part of a Job resource, is used to run a command after the job completed. In my case, I am collecting statistics regarding tape errors.

The directive has many options, including:

  • run before or after the Job
  • run on the client or on the Director
  • run on success
  • run on failure
  • execute a console command

For more information on this directive, refer to Job Resource in the Bacula documentation.

One interesting note, I found this in the documentation:

%v = Volume name (Only on director side)
The solution

Today I realised that my statistics gathering program must run in the Storage Daemon (SD). Previously, my Director (DIR) and SD were both on the same server. In my new setup, I've created a new SD which has 12TB of HDD storage and 10TB of tape storage (but just a 10 slot tape library). My JobDefs resource contained this line

RunAfterJob  = "/home/dan/bin/dlt-stats %l %v"
This directive can be run on either the Client or on the DIR, but not on the SD. This is an issue. I solved it by using ssh. The above line is now:
RunAfterJob  = "/home/dan/bin/dlt-stats-kraken %l %v"
Where /home/dan/bin/dlt-stats-kraken contains:
#!/bin/sh
ssh -i /home/dan/bin/ssh-kraken-dlt-stats dan@kraken
/home/dan/bin/dlt-stats $1 $2
The existing dlt-stats script has been copied to the new host (kraken). Thus, the above command executes the script on kraken. How does it do that? With a passphrase-less ssh-key. A detailed explanation of that is beyond the scope of this article, but I have used and written about this great tool before.

After creating the ssh public key, I got this error:

24-Nov 18:03 bacula-dir JobId 40176: AfterJob: Warning: Identity file
/home/dan/.ssh/ssh-kraken-dlt-stats not accessible: Permission denied.
This was an issue with having the key within ~/.ssh, which is usually chmod 700. These permission levels prevented meaning Bacula from reading it. I moved the private and public key to ~/bin, did a chown and chmod so Bacula could read it, and things started working/


Share
Need more help on this topic? Click here
This article has no comments
Show me similar articles