(command.CommandList children: [ (C {<set>} {<-eu>}) (command.ForEach iter_name: CMD iter_words: [{<VBoxManage>} {<git>} {<pcregrep>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<which>} {($ Id.VSub_DollarName '$CMD')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ <'Could not find '> ($ Id.VSub_DollarName '$CMD') <' on PATH, exiting.'>) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [56 68] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REPO_ROOT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--show-toplevel>}) ) } spids: [96] ) ] ) (C {<source>} {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/config/bootstrap_config.sh.defaults'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIG_OVERRIDES) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/config/bootstrap_config.sh.overrides'>} spids: [114] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_DollarName '$CONFIG_OVERRIDES')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<source>} {($ Id.VSub_DollarName '$CONFIG_OVERRIDES')})] spids: [119 130] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>}))} right: {(DQ <Darwin>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SED) op: assign_op.Equal rhs: {(DQ <'sed -E'>)} spids: [163] ) ] ) ] spids: [143 160] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SED) op: assign_op.Equal rhs: {(DQ <'sed -r'>)} spids: [171] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DMF_SET) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<VBoxManage>} {<list>} {<systemproperties>}) (C {<grep>} {(SQ <'^Default machine folder:'>)}) ] negated: F ) ) } spids: [178] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OLD_DMF_PATH) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$DMF_SET'))}) (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s/^Default machine folder:[[:space:]]+(.+)$/\\1/'>)} ) ] negated: F ) ) } spids: [195] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DMF_PATH) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name ANSIBLE_VM_DIR> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$OLD_DMF_PATH')} ) ) ) } spids: [212] ) ] ) (C {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/ansible_scripts/scripts/vbox_clean.sh'>}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet0>}) (C {<true>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet1>}) (C {<true>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet2>}) (C {<true>})] ) (C {<VBoxManage>} {<hostonlyif>} {<create>}) (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet0>} {<--ip>} {<10.0.100.2>} {<--netmask>} {<255.255.255.0>} ) (C {<VBoxManage>} {<hostonlyif>} {<create>}) (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet1>} {<--ip>} {<172.16.100.2>} {<--netmask>} {<255.255.255.0>} ) (C {<VBoxManage>} {<hostonlyif>} {<create>}) (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet2>} {<--ip>} {<192.168.100.2>} {<--netmask>} {<255.255.255.0>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet0>}) (C {<true>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet1>}) (C {<true>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet2>}) (C {<true>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: {(DQ <'ansible-bcpc-vm1 ansible-bcpc-vm2 ansible-bcpc-vm3'>)} spids: [384] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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: [405] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (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 <ansible-bcpc-vm> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} {<3>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$i')}) ) ) } spids: [425] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VMS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$VMS') <' '> ($ Id.VSub_DollarName '$MON_VM')) } spids: [442] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_Other '+'>} {<1>}) ) } spids: [450] ) ] ) ] ) ) ] spids: [389 402] ) ] ) (C {<echo>} {(DQ <'Creating bootstrap VM'>)}) (C {<VBoxManage>} {<createvm>} {<--basefolder>} {(DQ ($ Id.VSub_DollarName '$DMF_PATH'))} {<--name>} {<ansible-bcpc-bootstrap>} {<--register>} ) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--ostype>} {<Ubuntu_64>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--memory>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_MEM')} ) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--cpus>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_CPUS')} ) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic1>} {<nat>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype1>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic2>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype2>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter2>} {<vboxnet0>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic3>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype3>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter3>} {<vboxnet1>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic4>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype4>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter4>} {<vboxnet2>}) (C {<VBoxManage>} {<storagectl>} {<ansible-bcpc-bootstrap>} {<--name>} {(DQ <SATA>)} {<--add>} {<sata>} {<--portcount>} {<3>} {<--hostiocache>} {<on>} ) (C {<VBoxManage>} {<createhd>} {<--filename>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sda.vdi'> ) } {<--size>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_DRIVE_SIZE')} ) (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} {<--device>} {<0>} {<--port>} {<0>} {<--type>} {<hdd>} {<--medium>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sda.vdi'> ) } ) (C {<VBoxManage>} {<createhd>} {<--filename>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdb.vdi'> ) } {<--size>} {<8192>} ) (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} {<--device>} {<0>} {<--port>} {<1>} {<--type>} {<hdd>} {<--medium>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdb.vdi'> ) } ) (C {<VBoxManage>} {<createhd>} {<--filename>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdc.vdi'> ) } {<--size>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_DRIVE_SIZE')} ) (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} {<--device>} {<0>} {<--port>} {<2>} {<--type>} {<hdd>} {<--medium>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdc.vdi'> ) } ) (C {<VBoxManage>} {<storagectl>} {<ansible-bcpc-bootstrap>} {<--name>} {(DQ <IDE>)} {<--add>} {<ide>}) (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <IDE>)} {<--device>} {<0>} {<--port>} {<0>} {<--type>} {<dvddrive>} {<--medium>} {<emptydrive>} ) (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--boot1>} {<dvd>}) (command.ForEach iter_name: VM iter_words: [{($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {(DQ <'Creating cluster VM '> ($ Id.VSub_DollarName '$VM'))}) (C {<VBoxManage>} {<createvm>} {<--basefolder>} {(DQ ($ Id.VSub_DollarName '$DMF_PATH'))} {<--name>} {($ Id.VSub_DollarName '$VM')} {<--register>} ) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--ostype>} {<Ubuntu_64>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--memory>} {($ Id.VSub_DollarName '$CLUSTER_VM_MEM')} ) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--cpus>} {($ Id.VSub_DollarName '$CLUSTER_VM_CPUS')} ) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic1>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype1>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter1>} {<vboxnet0>} ) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic2>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype2>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter2>} {<vboxnet1>} ) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic3>} {<hostonly>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype3>} {<82543GC>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter3>} {<vboxnet2>} ) (C {<VBoxManage>} {<storagectl>} {($ Id.VSub_DollarName '$VM')} {<--name>} {(DQ <SATA>)} {<--add>} {<sata>} {<--portcount>} {<5>} {<--hostiocache>} {<on>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PORT) op: assign_op.Equal rhs: {<0>} spids: [1058] ) ] ) (command.ForEach iter_name: DISK iter_words: [{<a>} {<b>} {<c>} {<d>} {<e>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<VBoxManage>} {<createhd>} {<--filename>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/'> ($ Id.VSub_DollarName '$VM') <'/'> ($ Id.VSub_DollarName '$VM') <-sd> ($ Id.VSub_DollarName '$DISK') <.vdi> ) } {<--size>} {($ Id.VSub_DollarName '$CLUSTER_VM_DRIVE_SIZE')} ) (C {<VBoxManage>} {<storageattach>} {($ Id.VSub_DollarName '$VM')} {<--storagectl>} {(DQ <SATA>)} {<--device>} {<0>} {<--port>} {($ Id.VSub_DollarName '$PORT')} {<--type>} {<hdd>} {<--medium>} { (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/'> ($ Id.VSub_DollarName '$VM') <'/'> ($ Id.VSub_DollarName '$VM') <-sd> ($ Id.VSub_DollarName '$DISK') <.vdi> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PORT) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike PORT> right: {<Id.Lit_Digits 1>} ) ) } spids: [1142] ) ] ) ] ) ) (C {<VBoxManage>} {<setextradata>} {($ Id.VSub_DollarName '$VM')} {<'VBoxInternal/Devices/pcbios/0/Config/LanBootRom'>} {(DQ ($ Id.VSub_DollarName '$BOOTSTRAP_CACHE_DIR') <'/gpxe-1.0.1-80861004.rom'>)} ) ] ) ) (command.ForEach iter_name: VM iter_words: [{<ansible-bcpc-bootstrap>} {($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--vram>} {<16>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--largepages>} {<on>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nestedpaging>} {<on>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--vtxvpid>} {<on>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hwvirtex>} {<on>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--ioapic>} {<on>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uart1>} {<0x3F8>} {<4>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uart2>} {<0x2F8>} {<3>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uartmode1>} {<disconnected>}) (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uartmode2>} {<disconnected>}) ] ) ) (command.ShFunction name: get_node_role body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-bootstrap>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <bootstrap>)})] spids: [1318 1333] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-vm1>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <head>)})] spids: [1343 1358] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-vm2>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <work>)})] spids: [1368 1383] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(DQ <ansible-bcpc-vm3>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <work-ephemeral>)})] spids: [1393 1408] ) ] else_action: [(C {<echo>} {(SQ <reserved>)})] ) ] ) ) (command.ShFunction name: get_node_ip body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-bootstrap>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <10.0.100.3>)})] spids: [1440 1455] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-vm1>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <10.0.100.11>)})] spids: [1465 1480] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <ansible-bcpc-vm2>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <10.0.100.12>)})] spids: [1490 1505] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(DQ <ansible-bcpc-vm3>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(SQ <10.0.100.13>)})] spids: [1515 1530] ) ] else_action: [(C {<echo>} {(SQ <169.254.1.1>)})] ) ] ) ) (C {<echo>} {(DQ <------------------------------------------->)}) (C {<echo>} {(DQ <'Generated below is a sample cluster.yml file'>)}) (C {<echo>} {(DQ <'Sample cluster.yml file:'>)}) (C {<echo>}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<YAML_HEAD>} here_end_span_id: 1587 stdin_parts: [<'---\n'> <'cluster_name: Test-Laptop-Ansible\n'> <'nodes:\n'>] ) ) ] do_fork: T ) (command.ForEach iter_name: VM iter_words: [{<ansible-bcpc-bootstrap>} {($ Id.VSub_DollarName '$VMS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAC_ADDRESS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<VBoxManage>} {<showvminfo>} {<--machinereadable>} {($ Id.VSub_DollarName '$VM')} ) (C {<pcregrep>} {<-o1>} {<-M>} {(SQ <'^hostonlyadapter\\d="vboxnet0"$\\n*^macaddress\\d="(.+)"'>)} ) (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s/^(..)(..)(..)(..)(..)(..)$/\\1:\\2:\\3:\\4:\\5:\\6/'>)} ) ] negated: F ) ) } spids: [1603] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EoF>} here_end_span_id: 1665 stdin_parts: [ <' '> ($ Id.VSub_DollarName '$VM') <':\n'> <' domain: bcpc.example.com\n'> <' hardware_type: Virtual\n'> <' ip_address: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_node_ip>} {($ Id.VSub_DollarName '$VM')}) ) <'\n'> <' ipmi_address:\n'> <' mac_address: '> ($ Id.VSub_DollarName '$MAC_ADDRESS') <'\n'> <' role: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_node_role>} {($ Id.VSub_DollarName '$VM')}) ) <'\n'> ] ) ) ] do_fork: T ) ] ) ) ] )