(command.CommandList children: [ (C {<Id.KW_Set set>} {<-e>}) (C {<.>} {($ Id.VSub_DollarName '$REPO_ROOT') </bootstrap/shared/shared_functions.sh>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REQUIRED_VARS) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {<BOOTSTRAP_CHEF_DO_CONVERGE>} {<BOOTSTRAP_CHEF_ENV>} {<BCPC_HYPERVISOR_DOMAIN>} {<FILECACHE_MOUNT_POINT>} {<REPO_MOUNT_POINT>} {<REPO_ROOT>} ] ) } spids: [17] ) ] ) (C {<check_for_envvars>} { (braced_var_sub token: <Id.VSub_Name REQUIRED_VARS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) (C {<cd>} {($ Id.VSub_DollarName '$REPO_ROOT') </bootstrap/vagrant_scripts>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KNIFE) op: assign_op.Equal rhs: {</opt/opscode/embedded/bin/knife>} spids: [76] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$CHEF_SERVER_DEB'))} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:debpath) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') </> ($ Id.VSub_DollarName '$CHEF_SERVER_DEB') ) } spids: [102] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_SERVER_INSTALL_CMD) op: assign_op.Equal rhs: {(DQ <'sudo dpkg -i '> ($ Id.VSub_DollarName '$debpath'))} spids: [110] ) ] ) ] spids: [86 99] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_SERVER_INSTALL_CMD) op: assign_op.Equal rhs: { (DQ <'sudo dpkg -i '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'(find '> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') <'/ -name chef-server'> <Id.Lit_Other '\\'> <'*deb -not -name '> <Id.Lit_Other '\\'> <'*downloaded | tail -1)'> ) } spids: [119] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$CHEF_CLIENT_DEB'))} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:debpath) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') </> ($ Id.VSub_DollarName '$CHEF_CLIENT_DEB') ) } spids: [150] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_CLIENT_INSTALL_CMD) op: assign_op.Equal rhs: {(DQ <'sudo dpkg -i '> ($ Id.VSub_DollarName '$debpath'))} spids: [158] ) ] ) ] spids: [134 147] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHEF_CLIENT_INSTALL_CMD) op: assign_op.Equal rhs: { (DQ <'sudo dpkg -i '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'(find '> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') <'/ -name chef_'> <Id.Lit_Other '\\'> <'*deb -not -name '> <Id.Lit_Other '\\'> <'*downloaded | tail -1)'> ) } spids: [167] ) ] ) ] ) (C {<unset>} {<debpath>}) (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$CHEF_SERVER_INSTALL_CMD') <' '> <' && sudo sh -c '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'echo nginx['> <Id.Lit_Other '\\'> <"'non_ssl_port"> <Id.Lit_Other '\\'> <"'] = 4000 > /etc/opscode/chef-server.rb"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> <' && sudo chef-server-ctl reconfigure '> < ' && sudo chef-server-ctl user-create admin admin admin admin@localhost.com welcome --filename /etc/opscode/admin.pem ' > < ' && sudo chef-server-ctl org-create bcpc BCPC --association admin --filename /etc/opscode/bcpc-validator.pem ' > <' && sudo chmod 0644 /etc/opscode/admin.pem /etc/opscode/bcpc-validator.pem '> <' && '> ($ Id.VSub_DollarName '$CHEF_CLIENT_INSTALL_CMD') ) } ) (C {<do_on_node>} {<vm-bootstrap>} { (DQ <'mkdir -p '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/.chef && echo -e '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <"chef_server_url 'https://bcpc-vm-bootstrap."> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <"/organizations/bcpc'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <"nvalidation_client_name 'bcpc-validator'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <"nvalidation_key '/etc/opscode/bcpc-validator.pem'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <"nnode_name 'admin'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <"nclient_key '/etc/opscode/admin.pem'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <"nknife['editor'] = 'vim'"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Other '\\'> <'ncookbook_path [ '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <"#{ENV['HOME']}/chef-bcpc/cookbooks"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' ]'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' > '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/.chef/knife.rb '> <' && '> ($ Id.VSub_DollarName '$KNIFE') <' ssl fetch '> <' && '> ($ Id.VSub_DollarName '$KNIFE') <' bootstrap -x vagrant -P vagrant --sudo 10.0.100.3'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vms) op: assign_op.Equal rhs: {(DQ <'vm1 vm2 vm3'>)} spids: [274] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$MONITORING_NODES')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {<1>} spids: [295] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$i')} {<-le>} {($ Id.VSub_DollarName '$MONITORING_NODES')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mon_vm) op: assign_op.Equal rhs: { (DQ <vm> (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (C {<expr>} {<3>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$i')} ) ] ) ) ) } spids: [315] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mon_vms) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$mon_vms') <' '> ($ Id.VSub_DollarName '$mon_vm') ) } spids: [332] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (C {<expr>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_Other '+'>} {<1>} ) ] ) ) } spids: [340] ) ] ) ] ) ) ] spids: [279 292] ) ] ) (C {<do_on_node>} {<vm-bootstrap>} { (DQ <'sudo /opt/opscode/embedded/bin/gem install '> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') <'/knife-acl-1.0.2.gem '> <' && rsync -a '> ($ Id.VSub_DollarName '$REPO_MOUNT_POINT') <'/* '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc '> <' && cp '> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') <'/cookbooks/*.tar.gz '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc/cookbooks '> <' && cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc/cookbooks && ls -1 *.tar.gz | xargs -I% tar xvzf %'> ) } ) (C {<do_on_node>} {<vm-bootstrap>} { (DQ <'sudo apt-get update '> <' && cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc '> <" && sudo bash -c 'export FILECACHE_MOUNT_POINT="> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') <' '> <' && source '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <"HOME/proxy_config.sh && bootstrap/shared/shared_build_bins.sh'"> ) } ) (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$KNIFE') <' cookbook upload -a '> <' && cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc/roles && '> ($ Id.VSub_DollarName '$KNIFE') <' role from file *.json '> <' && cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'HOME/chef-bcpc/environments && '> ($ Id.VSub_DollarName '$KNIFE') <' environment from file '> ($ Id.VSub_DollarName '$BOOTSTRAP_CHEF_ENV') <.json> ) } ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:assign_op.Equal rhs:{<1>} spids:[452])] ) (command.ForEach iter_name: vm iter_words: [{($ Id.VSub_DollarName '$vms')} {($ Id.VSub_DollarName '$mon_vms')}] do_arg_iter: F body: (command.DoGroup children: [ (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 '$CHEF_CLIENT_DEB'))} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ <'Installing latest chef-client found in '> ($ Id.VSub_DollarName '$vm') <':'> ($ Id.VSub_DollarName '$FILECACHE_MOUNT_POINT') ) } ) ] spids: [473 486] ) ] ) (C {<do_on_node>} {($ Id.VSub_DollarName '$vm')} {(DQ ($ Id.VSub_DollarName '$CHEF_CLIENT_INSTALL_CMD'))} ) (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$KNIFE') <' bootstrap -x vagrant -P vagrant --sudo 10.0.100.1'> (${ Id.VSub_Name i) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (C {<expr>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_Other '+'>} {<1>}) ] ) ) } spids: [524] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENVIRONMENT_SET) op: assign_op.Equal rhs: {(DQ )} spids: [543] ) ] ) (command.ForEach iter_name: vm iter_words: [{<vm-bootstrap>} {($ Id.VSub_DollarName '$vms')} {($ Id.VSub_DollarName '$mon_vms')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENVIRONMENT_SET) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$ENVIRONMENT_SET') <' '> ($ Id.VSub_DollarName '$KNIFE') <' node environment set bcpc-'> ($ Id.VSub_DollarName '$vm') <.> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <' '> ($ Id.VSub_DollarName '$BOOTSTRAP_CHEF_ENV') <' && '> ) } spids: [563] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENVIRONMENT_SET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$ENVIRONMENT_SET') <' :'>)} spids: [579] ) ] ) (C {<do_on_node>} {<vm-bootstrap>} {($ Id.VSub_DollarName '$ENVIRONMENT_SET')}) (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-vm-bootstrap.'> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Hardware-Virtual],role[BCPC-Bootstrap]' "> <' && '> ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-vm1.'> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Hardware-Virtual],role[BCPC-Headnode]' "> <' && '> ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-vm2.'> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Hardware-Virtual],role[BCPC-Worknode]' "> <' && '> ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-vm3.'> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Hardware-Virtual],role[BCPC-EphemeralWorknode]'"> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADMIN_SET) op: assign_op.Equal rhs: {(DQ <'true && '>)} spids: [625] ) ] ) (command.ForEach iter_name: vm iter_words: [{<vm-bootstrap>} {<vm1>} {($ Id.VSub_DollarName '$mon_vms')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADMIN_SET) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$ADMIN_SET') <' '> ($ Id.VSub_DollarName '$KNIFE') <' group add client bcpc-'> ($ Id.VSub_DollarName '$vm') <.> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <' admins && '> ) } spids: [646] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ADMIN_SET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$ADMIN_SET') <' :'>)} spids: [660] ) ] ) (C {<do_on_node>} {<vm-bootstrap>} {($ Id.VSub_DollarName '$ADMIN_SET')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$BOOTSTRAP_CHEF_DO_CONVERGE')} right: {<0>} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ForEach iter_name: vm iter_words: [{($ Id.VSub_DollarName '$mon_vms')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-'> ($ Id.VSub_DollarName '$vm') <.> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Monitoring]'"> ) } ) ] ) ) (C {<echo>} {(DQ <'BOOTSTRAP_CHEF_DO_CONVERGE is set to 0, skipping automatic convergence.'>)} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [682 695] ) ] else_action: [ (C {<do_on_node>} {<vm-bootstrap>} {(DQ <'sudo chef-client'>)}) (command.ForEach iter_name: vm iter_words: [{($ Id.VSub_DollarName '$vms')}] do_arg_iter: F body: (command.DoGroup children: [(C {<do_on_node>} {($ Id.VSub_DollarName '$vm')} {(DQ <'sudo chef-client'>)})] ) ) (C {<do_on_node>} {<vm1>} {(DQ <'sudo chef-client'>)}) (command.ForEach iter_name: vm iter_words: [{($ Id.VSub_DollarName '$vms')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<do_on_node>} {($ Id.VSub_DollarName '$vm')} {(DQ <'sudo hup_openstack || true'>)}) ] ) ) (command.ForEach iter_name: vm iter_words: [{($ Id.VSub_DollarName '$mon_vms')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<do_on_node>} {<vm-bootstrap>} { (DQ ($ Id.VSub_DollarName '$KNIFE') <' node run_list set bcpc-'> ($ Id.VSub_DollarName '$vm') <.> ($ Id.VSub_DollarName '$BCPC_HYPERVISOR_DOMAIN') <" 'role[BCPC-Monitoring]'"> ) } ) (C {<do_on_node>} {($ Id.VSub_DollarName '$vm')} {(DQ <'sudo chef-client'>)}) ] ) ) (command.ForEach iter_name: vm iter_words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$mon_vms')}) (C {<awk>} {(SQ <'{$NF=""}1'>)}) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [(C {<do_on_node>} {($ Id.VSub_DollarName '$vm')} {(DQ <'sudo chef-client'>)})] ) ) ] ) ] )