(command.CommandList children: [ (C {<set>} {<-e>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_Number '$1'))}) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Usage : '> ($ Id.VSub_Number '$0') <' environment (hostname)'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [55 68] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENVIRONMENT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [87] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXACTHOST) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [90] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ <'environments/'> ($ Id.VSub_DollarName '$ENVIRONMENT') <.json>)} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ <'Error: Couldn\'t find \''> ($ Id.VSub_DollarName '$ENVIRONMENT') <'.json\'. Did you forget to pass the environment as first param?'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [94 111] ) ] ) (C {<declare>} {<-A>} {<FQDNS>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<HOST>} {<MACADDR>} {<IPADDR>} {<ILOIPADDR>} {<DOMAIN>} {<ROLE>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {<all>} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$HOST'))} ) right: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ ($ Id.VSub_DollarName '$IPADDR'))} ) right: (bool_expr.LogicalOr left: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ <heads>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ <head>)} ) ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$EXACTHOST'))} right: {(DQ <workers>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ <work>)} ) ) ) ) ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$IPADDR')}) (C {<tr>} {(SQ <.>)} {(SQ <->)}) ] negated: F ) ) } spids: [255] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {(DQ <bootstrap>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [277 294] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {<head>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HEADS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$HEADS') <' '> ($ Id.VSub_DollarName '$IPADDR') ) } spids: [321] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: FQDNS index: {(DQ ($ Id.VSub_DollarName '$IDX'))} ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOST) <.> (${ Id.VSub_Name DOMAIN))} spids: [329] ) ] ) ] spids: [303 318] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {(DQ ($ Id.VSub_DollarName '$ROLE'))} right: {<work>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WORKERS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$WORKERS') <' '> ($ Id.VSub_DollarName '$IPADDR') ) } spids: [367] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: FQDNS index: {(DQ ($ Id.VSub_DollarName '$IDX'))} ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOST) <.> (${ Id.VSub_Name DOMAIN))} spids: [375] ) ] ) ] spids: [349 364] ) ] ) ] spids: [157 252] ) ] ) ] ) redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<cluster.txt>})] ) (C {<echo>} {(DQ <'heads : '> ($ Id.VSub_DollarName '$HEADS'))}) (C {<echo>} {(DQ <'workers : '> ($ Id.VSub_DollarName '$WORKERS'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PASSWD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<knife>} {<Id.KW_Data data>} {<bag>} {<show>} {<configs>} {($ Id.VSub_DollarName '$ENVIRONMENT')} ) (C {<grep>} {(DQ <'cobbler-root-password:'>)}) (C {<awk>} {(SQ <' {print $2}'>)}) ] negated: F ) ) } spids: [422] ) ] ) (command.ForEach iter_name: HEAD iter_words: [{($ Id.VSub_DollarName '$HEADS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HEAD')} spids: [479] ) ] ) (C {<echo>} {(DQ <'About to bootstrap head node '> ($ Id.VSub_DollarName '$HEAD') <...>)}) (C {<'./chefit.sh'>} {($ Id.VSub_DollarName '$HEAD')} {($ Id.VSub_DollarName '$ENVIRONMENT')} ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$PASSWD')}) (C {<sudo>} {<knife>} {<bootstrap>} {<-E>} {($ Id.VSub_DollarName '$ENVIRONMENT')} {($ Id.VSub_DollarName '$HEAD')} {<-x>} {<ubuntu>} {<-P>} {($ Id.VSub_DollarName '$PASSWD')} {<--sudo>} ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$HEAD')}) (C {<tr>} {(SQ <.>)} {(SQ <->)}) ] negated: F ) ) } spids: [528] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FQDN) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FQDNS> bracket_op: (bracket_op.ArrayIndex expr:{(DQ ($ Id.VSub_DollarName '$IDX'))}) ) } spids: [550] ) ] ) (C {<knife>} {<actor>} {<map>}) (C {<knife>} {<group>} {<add>} {<actor>} {<admins>} {($ Id.VSub_DollarName '$FQDN')}) (C {<knife>} {<node>} {<run_list>} {<add>} {($ Id.VSub_DollarName '$FQDN')} {(SQ <'role[BCPC-Headnode]'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHCMD) op: assign_op.Equal rhs: { (DQ <'./nodessh.sh '> ($ Id.VSub_DollarName '$ENVIRONMENT') <' '> ($ Id.VSub_DollarName '$HEAD') ) } spids: [596] ) ] ) (C {($ Id.VSub_DollarName '$SSHCMD')} {(DQ <'/home/ubuntu/finish-head.sh'>)} {<sudo>}) ] ) ) (command.ForEach iter_name: WORKER iter_words: [{($ Id.VSub_DollarName '$WORKERS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MATCH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$WORKER')} spids: [631] ) ] ) (C {<echo>} {(DQ <'About to bootstrap worker worker '> ($ Id.VSub_DollarName '$WORKER') <...>)} ) (C {<'./chefit.sh'>} {($ Id.VSub_DollarName '$WORKER')} {($ Id.VSub_DollarName '$ENVIRONMENT')} ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$PASSWD')}) (C {<sudo>} {<knife>} {<bootstrap>} {<-E>} {($ Id.VSub_DollarName '$ENVIRONMENT')} {($ Id.VSub_DollarName '$WORKER')} {<-x>} {<ubuntu>} {<-P>} {($ Id.VSub_DollarName '$PASSWD')} {<--sudo>} ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IDX) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$WORKER')}) (C {<tr>} {(SQ <.>)} {(SQ <->)}) ] negated: F ) ) } spids: [680] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FQDN) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FQDNS> bracket_op: (bracket_op.ArrayIndex expr:{(DQ ($ Id.VSub_DollarName '$IDX'))}) ) } spids: [702] ) ] ) (C {<knife>} {<actor>} {<map>}) (C {<knife>} {<group>} {<add>} {<actor>} {<admins>} {($ Id.VSub_DollarName '$FQDN')}) (C {<knife>} {<node>} {<run_list>} {<add>} {($ Id.VSub_DollarName '$FQDN')} {(SQ <'role[BCPC-Worknode]'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHCMD) op: assign_op.Equal rhs: { (DQ <'./nodessh.sh '> ($ Id.VSub_DollarName '$ENVIRONMENT') <' '> ($ Id.VSub_DollarName '$WORKER') ) } spids: [748] ) ] ) (C {($ Id.VSub_DollarName '$SSHCMD')} {(DQ <'/home/ubuntu/finish-worker.sh'>)} {<sudo>}) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$MATCH'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ <'Warning: No nodes found'>)})] spids: [768 781] ) ] ) ] )