#!/bin/bash if [[ -n $1 && "$1" = overwrite ]] { global OVERW := '"true'" } global SSHCOMMON := '"-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no'" global SSHCMD := ""ssh $SSHCOMMON"" global SCPCMD := ""scp $SSHCOMMON"" global BOOT := $[./cluster-whatsup.sh bcpc-bootstrap | grep 10] if [[ ${BOOT} = "10.0.100.3" ]] { echo "Bootstrap node is up..." if [[ ! -d ../output ]] { mkdir ../output } else { echo "Output directory ../output exists." if [[ -f ../output/bins.tar.gz || -f ../output/cookbooks.tar.gz ]] { if [[ -z "$OVERW" ]] { echo "output files already exist, not overwiting..." exit 1 } else { echo "overwriting specified, continuing." } } } global BNDO := ""sshpass -p ubuntu $SSHCMD -t ubuntu@10.0.100.3"" # Collect all the non-BCPC cookbooks sub-dirs - this is somewhat # fragile. Ideally we'd find everything that looks like a cookbook # and then exlude BCPC ones. For now though we can collect # everything except our own cookbooks and a couple of files that # land here typically. # Even better would be to put 3rd-party cookbooks in a separate # directory entirely, but then we would have to feed that path # info back to knife echo "Collecting non-BCPC cookbooks..." $BNDO "cd chef-bcpc && tar --exclude=bcpc --exclude=bcpc-centos --exclude=chef-client.patch --exclude=$(PWD)/README.md -cf ../cookbooks.tar cookbooks" # and now our built binaries. This is easier to do, except they # are buried deep down. Perhaps it would be better for the # build_bins.sh script to copy them somewhere else for safekeeping # after a successful run since it is working in that directory # already. echo "Collecting built binaries..." $BNDO "cd chef-bcpc/cookbooks/bcpc/files/default && tar -cf ../../../../../bins.tar bins" echo "Compressing files..." $BNDO "gzip cookbooks.tar bins.tar" sshpass -p ubuntu $SCPCMD ubuntu@10.0.100.3:/home/ubuntu/bins.tar.gz ../output sshpass -p ubuntu $SCPCMD ubuntu@10.0.100.3:/home/ubuntu/cookbooks.tar.gz ../output echo "Removing files from bootstrap node..." $BNDO "rm cookbooks.tar.gz bins.tar.gz" echo "Finished :" ls -l ../output } else { echo "Fail." } (CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Number "$1")}) right: (BoolBinary op_id: BoolBinary_GlobEqual left: {(DQ ($ VSub_Number "$1"))} right: {(overwrite)} ) ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OVERW) op:Equal rhs:{(DQ (true))} spids:[27])] spids: [27] ) ] spids: [-1 24] ) ] spids: [-1 32] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSHCOMMON) op: Equal rhs: { (DQ ( "-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no" ) ) } spids: [35] ) ] spids: [35] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSHCMD) op: Equal rhs: {(DQ ("ssh ") ($ VSub_Name "$SSHCOMMON"))} spids: [40] ) ] spids: [40] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SCPCMD) op: Equal rhs: {(DQ ("scp ") ($ VSub_Name "$SSHCOMMON"))} spids: [46] ) ] spids: [46] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BOOT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(./cluster-whatsup.sh)} {(bcpc-bootstrap)}) (C {(grep)} {(10)})] negated: False ) ] ) left_token: spids: [54 64] ) } spids: [53] ) ] spids: [53] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {(${ VSub_Name BOOT)} right: {(DQ (10.0.100.3))} ) ) terminator: ) ] action: [ (C {(echo)} {(DQ ("Bootstrap node is up..."))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child:(BoolUnary op_id:BoolUnary_d child:{(../output)})) ) terminator: ) ] action: [(C {(mkdir)} {(../output)})] spids: [-1 106] ) ] else_action: [ (C {(echo)} {(DQ ("Output directory ../output exists."))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolUnary op_id:BoolUnary_f child:{(../output/bins.tar.gz)}) right: (BoolUnary op_id: BoolUnary_f child: {(../output/cookbooks.tar.gz)} ) ) ) terminator: ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_z child: {(DQ ($ VSub_Name "$OVERW"))} ) ) terminator: ) ] action: [ (C {(echo)} {(DQ ("output files already exist, not overwiting..."))}) (C {(exit)} {(1)}) ] spids: [-1 157] ) ] else_action: [(C {(echo)} {(DQ ("overwriting specified, continuing."))})] spids: [172 182] ) ] spids: [-1 141] ) ] spids: [-1 185] ) ] spids: [114 188] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BNDO) op: Equal rhs: {(DQ ("sshpass -p ubuntu ") ($ VSub_Name "$SSHCMD") (" -t ubuntu@10.0.100.3"))} spids: [191] ) ] spids: [191] ) (C {(echo)} {(DQ ("Collecting non-BCPC cookbooks..."))}) (C {($ VSub_Name "$BNDO")} { (DQ ( "cd chef-bcpc && tar --exclude=bcpc --exclude=bcpc-centos --exclude=chef-client.patch --exclude=" ) (${ VSub_Name PWD) ("/README.md -cf ../cookbooks.tar cookbooks") ) } ) (C {(echo)} {(DQ ("Collecting built binaries..."))}) (C {($ VSub_Name "$BNDO")} { (DQ ( "cd chef-bcpc/cookbooks/bcpc/files/default && tar -cf ../../../../../bins.tar bins" ) ) } ) (C {(echo)} {(DQ ("Compressing files..."))}) (C {($ VSub_Name "$BNDO")} {(DQ ("gzip cookbooks.tar bins.tar"))}) (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SCPCMD")} {(ubuntu) (Lit_Other "@") (10.0.100.3) (Lit_Other ":") (/home/ubuntu/bins.tar.gz)} {(../output)} ) (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SCPCMD")} {(ubuntu) (Lit_Other "@") (10.0.100.3) (Lit_Other ":") (/home/ubuntu/cookbooks.tar.gz)} {(../output)} ) (C {(echo)} {(DQ ("Removing files from bootstrap node..."))}) (C {($ VSub_Name "$BNDO")} {(DQ ("rm cookbooks.tar.gz bins.tar.gz"))}) (C {(echo)} {(DQ ("Finished :"))}) (C {(ls)} {(-l)} {(../output)}) ] spids: [-1 83] ) ] else_action: [(C {(echo)} {(DQ (Fail.))})] spids: [361 370] ) ] )