(CommandList children: [ (C {(hash)} {(-r)}) (FuncDef name: wait_for_ssh body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:hostname) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [17] ) ] spids: [15] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:min) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [26 30] ) } spids: [25] ) (assign_pair lhs: (LhsName name:max) op: Equal rhs: { (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(10)}) spids: [33 37] ) } spids: [32] ) ] spids: [23] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name hostname))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 57] ) ] spids: [16777215 65] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op_id:Redir_GreatAnd fd:3 arg_word:{(2)} spids:[70])] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[76])] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(echo)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/tcp/) (${ VSub_Name hostname) (/22)} spids: [93] ) ] ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 103] ) ] spids: [16777215 111] ) (C {(sleep)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Percent left: (ArithWord w:{($ VSub_Name '$RANDOM')}) right: (ArithWord w:{($ VSub_Name '$max')}) ) right: (ArithWord w:{($ VSub_Name '$min')}) ) spids: [116 129] ) } ) ] spids: [86 132] ) ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(3)} spids:[137])] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op_id:Redir_GreatAnd fd:3 arg_word:{(-)} spids:[143])] ) ] spids: [12] ) spids: [9 12] ) (FuncDef name: setup_headnodes body: (BraceGroup children: [ (AndOr children: [ (C {(bootstrap_head)} {(bcpc-vm1.bcpc.example.com)} {(10.0.100.11)}) (C {(true)}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:keyfile) op: Equal rhs: {(TildeSubPart prefix:'') (/.ssh/id_rsa.root)} spids: [172] ) ] spids: [170] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ (${ VSub_Name keyfile))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr children: [ (C {(./install_root_key)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keyfile) op: Equal rhs: {(TildeSubPart prefix:'') (/.ssh/id_rsa.bcpc)} spids: [202] ) ] spids: [202] ) ] op_id: Op_DPipe ) ] spids: [16777215 195] ) ] spids: [16777215 207] ) (C {(echo)} {(DQ ('Proceeding with second chef-client run'))}) (C {(ssh)} {(-i)} {(DQ (${ VSub_Name keyfile))} {(-lroot)} {(10.0.100.11)} {(chef-client)}) ] spids: [152] ) spids: [149 152] ) (FuncDef name: bootstrap_head body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:nodename) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [244] ) ] spids: [242] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ip) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [252] ) ] spids: [250] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name ip))} {(-o)} {(-z)} {(DQ (${ VSub_Name nodename))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 284] ) ] spids: [16777215 292] ) (TimeBlock pipeline:(C {(-p)} {(wait_for_ssh)} {(DQ (${ VSub_Name ip))})) (C {(echo)} {(DQ ('Configuring temporary hosts entry for chef server on ') (${ VSub_Name ip))} ) (C {(add_hosts_entries)} {(DQ (${ VSub_Name ip))} {(DQ (${ VSub_Name hosts_entries))}) (C {(knife)} {(bootstrap)} {(--bootstrap-no-proxy)} {(DQ (${ VSub_Name chef_server_host))} {(${ VSub_Name bootstrap_proxy_args)} {(-i)} {(DQ (${ VSub_Name keyfile))} {(-x)} {(root)} {(--node-ssl-verify-mode) (Lit_Other '=') (none)} {(--bootstrap-wget-options)} {(DQ (--no-check-certificate))} {(-r)} {(SQ <'role[BCPC-Headnode]'>)} {(-E)} {(Test-Laptop)} {(DQ (${ VSub_Name ip))} {(-N)} {(DQ (${ VSub_Name nodename))} ) (SimpleCommand words: [{(knife)} {(actor)} {(map)}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[408])] ) (SimpleCommand words: [{(knife)} {(group)} {(add)} {(actor)} {(admins)} {(DQ (${ VSub_Name nodename))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[428])] ) ] spids: [239] ) spids: [236 239] ) (FuncDef name: bootstrap_worker body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:nodename) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [442] ) ] spids: [440] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ip) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [450] ) ] spids: [448] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name ip))} {(-o)} {(-z)} {(DQ (${ VSub_Name nodename))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 482] ) ] spids: [16777215 490] ) (TimeBlock pipeline:(C {(-p)} {(wait_for_ssh)} {(DQ (${ VSub_Name ip))})) (C {(echo)} {(DQ ('Configuring temporary hosts entry for chef server on ') (${ VSub_Name ip))} ) (C {(add_hosts_entries)} {(DQ (${ VSub_Name ip))} {(DQ (${ VSub_Name hosts_entries))}) (C {(knife)} {(bootstrap)} {(--bootstrap-no-proxy)} {(DQ (${ VSub_Name chef_server_host))} {(${ VSub_Name bootstrap_proxy_args)} {(-i)} {(DQ (${ VSub_Name keyfile))} {(-x)} {(root)} {(--bootstrap-wget-options)} {(DQ (--no-check-certificate))} {(-r)} {(SQ <'role[BCPC-Worknode]'>)} {(-E)} {(Test-Laptop)} {(DQ ($ VSub_Name '$ip'))} {(-N)} {(DQ (${ VSub_Name nodename))} ) ] spids: [437] ) spids: [434 437] ) (FuncDef name: add_hosts_entries body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ip) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [610] ) (assign_pair lhs: (LhsName name:entries) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [615] ) ] spids: [608] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name ip))} {(-o)} {(-z)} {(DQ (${ VSub_Name entries))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 647] ) ] spids: [16777215 655] ) (C {(echo)} {($ VSub_Name '$entries')}) (SimpleCommand words: [ {(ssh)} {(-ostricthostkeychecking) (Lit_Other '=') (no)} {(-i)} {(DQ (${ VSub_Name keyfile))} {(-lroot)} {(DQ (${ VSub_Name ip))} ] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ (' if ! getent ahosts bcpc-bootstrap &> /dev/null ; then\n') (' cat <<EoS >> /etc/hosts\n') ('# Added by ') (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)}) spids: [691 696] ) ('\n') ($ VSub_Name '$entries') ('\n') ('EoS\n') (' fi\n') (' getent hosts bcpc-bootstrap\n') ) } do_expansion: True here_end: EoF was_filled: True spids: [685] ) ] ) ] spids: [605] ) spids: [602 605] ) (FuncDef name: configure_proxy body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_f child:{(./proxy_setup.sh)})) terminator: <Op_Semi ';'> ) ] action: [ (C {(.)} {(./proxy_setup.sh)}) (C {(export)} {(-n)} (BracedWordTree parts: [(http) (BracedAltPart words:[{} {(s)}]) (_proxy)] ) ) ] spids: [16777215 724] ) ] spids: [16777215 747] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name https_proxy))}) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bootstrap_proxy_args) op: Equal rhs: {(DQ ('--bootstrap-proxy ') (${ VSub_Name https_proxy))} spids: [769] ) ] spids: [769] ) ] spids: [16777215 766] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bootstrap_proxy_args) op: Equal rhs: {(DQ )} spids: [781] ) ] spids: [781] ) ] spids: [778 786] ) ] spids: [710] ) spids: [707 710] ) (FuncDef name: ip_to_name body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ip) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [802] ) ] spids: [800] ) (SimpleCommand words: [{(read)} {(_)} {(_)} {(_)} {(nodenum)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ($ VSub_Name '$ip') ('\n'))} do_expansion: True here_end: EoF was_filled: True spids: [827] ) ] more_env: [(env_pair name:IFS val:{(SQ <.>)} spids:[812])] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name ip))} {(-o)} {(-z)} {(DQ (${ VSub_Name nodenum))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 860] ) ] spids: [16777215 868] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:suffix) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:nodenum) right: (ArithWord w:{(Lit_Digits 10)}) ) spids: [874 881] ) } spids: [873] ) ] spids: [871] ) (C {(echo)} {(bcpc-vm) (${ VSub_Name suffix) (.) (${ VSub_Name domainname)}) ] spids: [797] ) spids: [794 797] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:domainname) op: Equal rhs: {(bcpc.example.com)} spids: [898] ) ] spids: [898] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:chef_server_host) op: Equal rhs: {(bcpc-bootstrap)} spids: [901] ) ] spids: [901] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keyfile) op: Equal rhs: {(TildeSubPart prefix:'') (/.ssh/id_rsa.bcpc)} spids: [904] ) ] spids: [904] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:hosts_entries) op: Equal rhs: {(DQ ('10.0.100.3 ') (${ VSub_Name chef_server_host) ('\n'))} spids: [908] ) ] spids: [908] ) (C {(set)} {(-e)}) (C {(configure_proxy)}) (C {(setup_headnodes)}) (C {(echo)} {(DQ ('Waiting to bootstrap workers'))}) (C {(set)} {(-x)}) (ForEach iter_name: ip iter_words: [{(10.0.100.) (Lit_LBrace '{') (12..13) (Lit_RBrace '}')}] do_arg_iter: False body: (DoGroup children: [ (Sentence child: (C {(eval)} {(DQ ('bootstrap_worker ')) (CommandSubPart command_list: (CommandList children:[(C {(ip_to_name)} {(${ VSub_Name ip)})]) left_token: <Left_CommandSub '$('> spids: [958 964] ) (DQ (' ') (${ VSub_Name ip) (' &')) } ) terminator: <Op_Semi ';'> ) ] spids: [951 975] ) spids: [943 949] ) (C {(wait)}) ] )