So I recently upgrade from chef 0.9 to 0.10 and remembered that you can now send the client daemon on USR1 to wake it up and make it do a run.
Yippie.
Except that you get no output that it’s doing anything: less wonderful.
So I made a short script that will send a signal then write the output from the log and stop when the run completes:
https://gist.github.com/1325982
(Included in-band at end of email for everyone to lazy to click.)
Basically its like doing tail -f $log_file
, but it automatically stops when the chef run does.
-ash
END
#!/bin/bash
set -e
declare tail_pid
on_exit() {
rm -f $pipe
[ -n “$tail_pid” ] && kill $tail_pid
}
trap “on_exit” EXIT ERR
pipe=/tmp/pipe-$$
mkfifo $pipe
tail -fn0 /var/log/chef/client.log > $pipe &
tail_pid=$!
sudo kill -USR1 (cat /var/run/chef/client.pid)
sed -r '/(ERROR: Sleeping for [[:digit:]+] seconds before trying again|INFO: Report handlers complete)/{q}’ $pipe
Clever! Thanks for sharing.
Adam
Opscode, Inc.
Adam Jacob, Chief Product Officer
T: (206) 619-7151 E: adam@opscode.com
On Oct 30, 2011, at 10:46 AM, Ash Berlin wrote:
So I recently upgrade from chef 0.9 to 0.10 and remembered that you can now send the client daemon on USR1 to wake it up and make it do a run.
Yippie.
Except that you get no output that it's doing anything: less wonderful.
So I made a short script that will send a signal then write the output from the log and stop when the run completes:
Make the chef-client (v0.10+) daemon process wake and run, and print what its doing to stdout · GitHub
(Included in-band at end of email for everyone to lazy to click.)
Basically its like doing tail -f $log_file
, but it automatically stops when the chef run does.
-ash
END
#!/bin/bash
set -e
declare tail_pid
on_exit() {
rm -f $pipe
[ -n "$tail_pid" ] && kill $tail_pid
}
trap "on_exit" EXIT ERR
pipe=/tmp/pipe-$$
mkfifo $pipe
tail -fn0 /var/log/chef/client.log > $pipe &
tail_pid=$!
sudo kill -USR1 $(cat /var/run/chef/client.pid)
sed -r '/(ERROR: Sleeping for [[:digit:]+] seconds before trying again|INFO: Report handlers complete)$/{q}' $pipe