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