(command.CommandList children: [ (C {(source)} {(./virtualbox_env.sh)}) (C {(source)} {(./vmware/vmware_env.sh)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$OSTYPE')} right: {(msys)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$OSTYPE')} right: {(cygwin)} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:45) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RSYNCEXTRA) op: assign_op.Equal rhs: {(DQ ('--perms --chmod=a=rwx,Da+x'))} spids: [54] ) ] ) ] spids: [26 47] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_f child:{(./proxy_setup.sh)}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:71) ) ] action: [(C {(.)} {(./proxy_setup.sh)})] spids: [62 73] ) ] ) (C {(Id.KW_Set set)} {(-e)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:89) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_Number '$0')})] ) ) } spids: [88] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {($ Id.VSub_Pound '$#')} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:109) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KEYFILE) op: assign_op.Equal rhs: {(DQ (bootstrap_chef.id_rsa))} spids: [114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [120] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BCPC_DIR) op: assign_op.Equal rhs: {(DQ (chef-bcpc))} spids: [126] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VAGRANT) op: assign_op.Equal rhs: {(DQ )} spids: [132] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMWARE) op: assign_op.Equal rhs: {(DQ )} spids: [137] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VBOX) op: assign_op.Equal rhs: {(DQ )} spids: [142] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(DQ (--vagrant-local))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:164) ) ] action: [ (C {(echo)} {(DQ ('Running on the local Vagrant VM'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VAGRANT) op: assign_op.Equal rhs: {(DQ (true))} spids: [176] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VBOX) op: assign_op.Equal rhs: {(DQ (true))} spids: [182] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BCPC_DIR) op: assign_op.Equal rhs: {(DQ ('~vagrant/chef-bcpc'))} spids: [188] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_USER) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$USER'))} spids: [194] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_CMD) op: assign_op.Equal rhs: {(DQ ('bash -c'))} spids: [200] ) ] ) ] spids: [151 166] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(DQ (--vagrant-remote))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:219) ) ] action: [ (C {(echo)} {(DQ ('SSHing to the Vagrant VM'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VAGRANT) op: assign_op.Equal rhs: {(DQ (true))} spids: [231] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VBOX) op: assign_op.Equal rhs: {(DQ (true))} spids: [237] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BCPC_DIR) op: assign_op.Equal rhs: {(DQ ('~vagrant/chef-bcpc'))} spids: [243] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_USER) op: assign_op.Equal rhs: {(DQ (vagrant))} spids: [249] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_CMD) op: assign_op.Equal rhs: {(DQ ('vagrant ssh -c'))} spids: [255] ) ] ) ] spids: [206 221] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(DQ (--vagrant-vmware))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:274) ) ] action: [ (C {(echo)} {(DQ ('SSHing to the Vagrant VM (on VMware)'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VAGRANT) op: assign_op.Equal rhs: {(DQ (true))} spids: [286] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMWARE) op: assign_op.Equal rhs: {(DQ (true))} spids: [292] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BCPC_DIR) op: assign_op.Equal rhs: {(DQ ('~vagrant/chef-bcpc'))} spids: [298] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_USER) op: assign_op.Equal rhs: {(DQ (vagrant))} spids: [304] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_CMD) op: assign_op.Equal rhs: {(DQ ('vagrant ssh -c'))} spids: [310] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$DIR') (/vmware)} spids: [316] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$VMRUN'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:332) ) ] action: [ (command.Simple words: [{(echo)} {(DQ ('vmrun not found!'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:343) fd: -1 arg_word: {(2)} ) ] ) (command.Simple words: [ {(echo)} { (DQ (' Please ensure VMWare is installed and vmrun is accessible.') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:353) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:357) arg_word: {(1)} ) ] spids: [321 334] ) ] ) ] spids: [261 276] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_USER) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [368] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSH_CMD) op: assign_op.Equal rhs: { (DQ ('ssh -t -i ') ($ Id.VSub_DollarName '$KEYFILE') (' ') (${ Id.VSub_Name SSH_USER) ('@') (${ Id.VSub_Name IP) ) } spids: [374] ) ] ) (C {(echo)} { (DQ ('SSHing to the non-Vagrant machine ') (${ Id.VSub_Name IP) (' as ') (${ Id.VSub_Name SSH_USER) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {($ Id.VSub_Pound '$#')} right: {(3)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:418) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_ENVIRONMENT) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [423] ) ] ) ] spids: [407 420] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_ENVIRONMENT) op: assign_op.Equal rhs: {(DQ (Test-Laptop))} spids: [432] ) ] ) ] ) (C {(echo)} {(DQ ('Chef environment: ') (${ Id.VSub_Name CHEF_ENVIRONMENT))}) ] spids: [98 111] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ('Usage: ') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:457) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_Number '$0')})] ) ) (' --vagrant-local|--vagrant-remote|--vagrant-vmware|<user name> IP-Address [chef environment]') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:467) fd: -1 arg_word: {(/dev/stderr)} ) ] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:472)) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ (environments/) (${ Id.VSub_Name CHEF_ENVIRONMENT) (.json))} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:497) ) ] action: [ (C {(echo)} { (DQ ('Error: environment file ') (${ Id.VSub_Name CHEF_ENVIRONMENT) ('.json not found')) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:513) ) ] spids: [480 499] ) ] ) (C {(pushd)} {($ Id.VSub_DollarName '$DIR')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$VAGRANT')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:532) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ISO) op: assign_op.Equal rhs: {(ubuntu-14.04-mini.iso)} spids: [537] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$KEYFILE')} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:552) ) ] action: [(C {(ssh-keygen)} {(-N)} {(DQ )} {(-f)} {($ Id.VSub_DollarName '$KEYFILE')})] spids: [541 554] ) ] ) (C {(echo)} {(DQ ('Running rsync of non-Vagrant install'))}) (C {(rsync)} {($ Id.VSub_DollarName '$RSYNCEXTRA')} {(-avP)} {(-e)} {(DQ ('ssh -i ') ($ Id.VSub_DollarName '$KEYFILE'))} {(--exclude)} {(vbox)} {(--exclude)} {(vmware)} {(--exclude)} {($ Id.VSub_DollarName '$KEYFILE')} {(--exclude)} {(.chef)} {(.)} {(${ Id.VSub_Name SSH_USER) (Id.Lit_Other '@') ($ Id.VSub_DollarName '$IP') (Id.Lit_Other ':') (chef-bcpc) } ) (C {(rsync)} {($ Id.VSub_DollarName '$RSYNCEXTRA')} {(-avP)} {(-e)} {(DQ ('ssh -i ') ($ Id.VSub_DollarName '$KEYFILE'))} {(vbox/) ($ Id.VSub_DollarName '$ISO')} {(${ Id.VSub_Name SSH_USER) (Id.Lit_Other '@') ($ Id.VSub_DollarName '$IP') (Id.Lit_Other ':') (chef-bcpc/cookbooks/bcpc/files/default/bins) } ) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && ./setup_ssh_keys.sh ') (${ Id.VSub_Name KEYFILE) (.pub) ) } ) ] spids: [523 534] ) ] else_action: [ (C {(echo)} {(DQ ('Running rsync of Vagrant install'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('rsync ') ($ Id.VSub_DollarName '$RSYNCEXTRA') ( ' -avP --exclude vbox --exclude vmware --exclude .chef /chef-bcpc-host/ /home/vagrant/chef-bcpc/' ) ) } ) (C {(echo)} {(DQ ('Rsync over the hypervisor mini ISO to avoid redownloading'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('rsync ') ($ Id.VSub_DollarName '$RSYNCEXTRA') (' -avP /chef-bcpc-host/vbox/') ($ Id.VSub_DollarName '$ISO') (' /home/vagrant/chef-bcpc/cookbooks/bcpc/files/default/bins') ) } ) ] ) (C {(echo)} {(DQ ('Updating server'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && sudo apt-get -y update && sudo apt-get -y dist-upgrade') ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$VBOX'))} ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:724) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$VBM')} {(snapshot)} {(bcpc-bootstrap)} {(list)} ) (C {(grep)} {(dist-upgrade)}) ] negated: F ) ] ) ) } ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:743) ) ] action: [ (C {(echo)} {(DQ ('Taking snapshot (VirtualBox)'))}) (C {($ Id.VSub_DollarName '$VBM')} {(snapshot)} {(bcpc-bootstrap)} {(take)} {(dist-upgrade-complete)} ) ] spids: [710 745] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$VMWARE'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:778) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VM_PATH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:784) command_list: (command.CommandList children: [ (C {(ls)} {(-d)} {(.vagrant/machines/bootstrap/vmware_fusion/) (Id.Lit_Star '*') (/)} ) ] ) ) } spids: [783] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMX_FILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$VM_PATH') (/precise64.vmx)} spids: [797] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:808) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(DQ ($ Id.VSub_DollarName '$VMRUN'))} {(listSnapshots)} {($ Id.VSub_DollarName '$VMX_FILE')} ) (C {(grep)} {(dist-upgrade)}) ] negated: F ) ] ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:827) ) ] action: [ (C {(echo)} {(DQ ('Taking snapshot (VMware)'))}) (C {(DQ ($ Id.VSub_DollarName '$VMRUN'))} {(snapshot)} {($ Id.VSub_DollarName '$VMX_FILE')} {(dist-upgrade-complete)} ) ] spids: [802 829] ) ] ) ] spids: [767 780] ) ] ) (C {(echo)} {(DQ ('Building binaries'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && sudo ./cookbooks/bcpc/files/default/build_bins.sh') ) } ) (C {(echo)} {(DQ ('Setting up chef server'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && sudo ./setup_chef_server.sh ') (${ Id.VSub_Name IP) ) } ) (C {(echo)} {(DQ ('Setting up chef cookbooks'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && ./setup_chef_cookbooks.sh ') (${ Id.VSub_Name IP) (' ') (${ Id.VSub_Name SSH_USER) ) } ) (C {(echo)} {(DQ ('Setting up chef environment, roles, and uploading cookbooks'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && knife environment from file environments/') (${ Id.VSub_Name CHEF_ENVIRONMENT) ('.json && knife role from file roles/*.json && knife cookbook upload -a -o cookbooks') ) } ) (C {(echo)} {(DQ ('Enrolling local bootstrap node into chef'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} { (DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && ./setup_chef_bootstrap_node.sh ') (${ Id.VSub_Name IP) (' ') (${ Id.VSub_Name CHEF_ENVIRONMENT) ) } ) (C {(echo)} {(DQ ('Configuring SSH access keys for bootstrap procedure'))}) (C {($ Id.VSub_DollarName '$SSH_CMD')} {(DQ ('cd ') ($ Id.VSub_DollarName '$BCPC_DIR') (' && sudo ./install_bootstrap_ssh_key.sh'))} ) (C {(popd)}) (C {(echo)} {(DQ ('Finished bootstrap of Chef server!'))}) ] )