4 BETCDIR='/etc/mcollective'
\r
5 BRUBYDIR='/Library/Ruby/Site/1.8'
\r
8 BLIBEXECDIR='/usr/libexec/mcollective'
\r
9 BDOCDIR='/usr/share/doc/mcollective'
\r
10 BLAUNCHDIR='/Library/LaunchDaemons'
\r
13 echo 'Please give the path to the MCollective source directory'
\r
19 function msg_stomp {
\r
20 echo 'It is recommended to install stomp on this system using ruby gems'
\r
24 function msg_xcode {
\r
25 echo 'It is required to have the latest XCode installed'
\r
29 #Make sure we have stomp so we can load mcollective
\r
30 /usr/bin/ruby <<EOF || msg_stomp
\r
35 #Make sure we have PackageMaker installed
\r
36 [ -x /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker ] || msg_xcode
\r
38 #Get the MCollective version
\r
39 export RUBYLIB=$RUBYLIB:$MPATH/lib
\r
40 mcversion=$(/usr/bin/ruby <<EOF
\r
41 require 'mcollective'
\r
42 puts MCollective.version
\r
46 #Make our tmp directory
\r
47 tmpbase=`basename $0`
\r
48 common_tmpdir=`mktemp -d /tmp/${tmpbase}-common_$mcversion.XXXX` || exit 1
\r
49 client_tmpdir=`mktemp -d /tmp/${tmpbase}-client_$mcversion.XXXX` || exit 1
\r
50 tmpdir=`mktemp -d /tmp/${tmpbase}_$mcversion.XXXX` || exit 1
\r
52 #Build the common environment
\r
53 mkdir -p "$common_tmpdir/$BRUBYDIR"
\r
54 mkdir -p "$common_tmpdir/$BLIBEXECDIR"
\r
55 mkdir -p "$common_tmpdir/$BDOCDIR"
\r
57 cp -r $MPATH/lib/mcollective $common_tmpdir/$BRUBYDIR/
\r
58 cp $MPATH/lib/mcollective.rb $common_tmpdir/$BRUBYDIR/
\r
59 cp -r $MPATH/plugins/mcollective $common_tmpdir/$BLIBEXECDIR/
\r
60 cp $MPATH/COPYING $common_tmpdir/$BDOCDIR/
\r
62 #Build the server environment
\r
63 mkdir -p "$tmpdir/$BSBINDIR"
\r
64 mkdir -p "$tmpdir/$BETCDIR"
\r
65 mkdir -p "$tmpdir/$BETCDIR/ssl/clients"
\r
66 mkdir -p "$tmpdir/$BLAUNCHDIR"
\r
68 cp $MPATH/mcollectived.rb $tmpdir/$BSBINDIR/mcollectived
\r
69 cp $MPATH/etc/facts.yaml.dist $tmpdir/$BETCDIR/facts.yaml
\r
70 cp $MPATH/etc/server.cfg.dist $tmpdir/$BETCDIR/server.cfg
\r
71 #This is needed for macs since launchd will handle the daemonizing
\r
72 perl -i -pe 's/daemonize = 1/daemonize = 0/' $tmpdir/$BETCDIR/server.cfg
\r
74 #Build the client environment
\r
75 mkdir -p "$client_tmpdir/$BETCDIR"
\r
76 mkdir -p "$client_tmpdir/$BSBINDIR"
\r
78 cp $MPATH/etc/client.cfg.dist $client_tmpdir/$BETCDIR/client.cfg
\r
79 cp $MPATH/etc/rpc-help.erb $client_tmpdir/$BETCDIR/
\r
80 cp $MPATH/mc-call-agent $client_tmpdir/$BSBINDIR/
\r
81 cp $MPATH/mc-controller $client_tmpdir/$BSBINDIR/
\r
82 cp $MPATH/mc-facts $client_tmpdir/$BSBINDIR/
\r
83 cp $MPATH/mc-find-hosts $client_tmpdir/$BSBINDIR/
\r
84 cp $MPATH/mc-inventory $client_tmpdir/$BSBINDIR/
\r
85 cp $MPATH/mc-ping $client_tmpdir/$BSBINDIR/
\r
86 cp $MPATH/mc-rpc $client_tmpdir/$BSBINDIR/
\r
88 #Build our launchd property list file
\r
89 cat - > $tmpdir/$BLAUNCHDIR/org.marionette-collective.mcollective.plist <<EOF
\r
90 <?xml version="1.0" encoding="UTF-8"?>
\r
91 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
\r
92 <plist version="1.0">
\r
94 <key>EnvironmentVariables</key>
\r
97 <string>/sbin:/usr/sbin:/bin:/usr/bin</string>
\r
99 <string>/Library/Ruby/Site/1.8</string>
\r
102 <string>org.marionette-collective.mcollective</string>
\r
103 <key>OnDemand</key>
\r
105 <key>KeepAlive</key>
\r
107 <key>ProgramArguments</key>
\r
109 <string>/usr/sbin/mcollectived</string>
\r
110 <string>--config=/etc/mcollective/server.cfg</string>
\r
112 <key>RunAtLoad</key>
\r
114 <key>ServiceDescription</key>
\r
115 <string>MCollective Server</string>
\r
116 <key>ServiceIPC</key>
\r
122 #launchd complains if the permissions aren't right
\r
123 chmod 644 $tmpdir/$BLAUNCHDIR/org.marionette-collective.mcollective.plist
\r
125 #Make our Packages. This requires XCode be installed
\r
126 /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $tmpdir --version $mcversion --title "MCollective" -l / -o MCollective_$mcversion.pkg -i org.marionette-collective.mcollective
\r
127 /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $common_tmpdir --version $mcversion --title "MCollective Common" -l / -o MCollective-Common_$mcversion.pkg -i org.marionette-collective.mcollective-common
\r
128 /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $client_tmpdir --version $mcversion --title "MCollective Client" -l / -o MCollective-Client_$mcversion.pkg -i org.marionette-collective.mcollective-client
\r
132 rm -rf $common_tmpdir
\r
133 rm -rf $client_tmpdir
\r