(CommandList children: [ (C {(cube_echo)} {(DQ ('Hello World'))}) (C {(cube_package)} {(install)} {(atop)}) (C {(cube_service)} {(enable)} {(atop)}) (C {(cube_service)} {(start)} {(atop)}) (If arms: [ (if_arm cond: [(Sentence child:(C {(cube_command_exists)} {(dnf)}) terminator:<Op_Semi ';'>)] action: [ (AndOr children: [(C {(dnf)} {(check-update)}) (C {(cube_check_return)})] op_id: Op_DPipe ) ] spids: [-1 41] ) ] spids: [-1 52] ) (C {(cube_ensure_directory)} {(TildeSubPart prefix:'') (/test/)}) (Sentence child: (SimpleCommand words: [{(cube_read_heredoc)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {('[app]\n') ('name=${cubevar_app_name}\n') ('test=${cubevar_app_test}\n')} do_expansion: False here_end: HEREDOC was_filled: True spids: [63] ) ] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cubevar_app_myconfig) op: Equal rhs: {(DQ (${ VSub_Name cube_read_heredoc_result))} spids: [69] ) ] spids: [69] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cubevar_app_name) op: Equal rhs: {(DQ ('Hello World'))} spids: [77] ) ] spids: [77] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cubevar_app_test) op: Equal rhs: { (DQ ('{ host: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_hostname)})]) left_token: <Left_CommandSub '$('> spids: [85 87] ) (', random: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_random_number)} {(10)})]) left_token: <Left_CommandSub '$('> spids: [89 93] ) (', memory: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_total_memory)})]) left_token: <Left_CommandSub '$('> spids: [95 97] ) (', ip: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_interface_ipv4_address)} {(eth0)})]) left_token: <Left_CommandSub '$('> spids: [99 103] ) (' }') ) } spids: [82] ) ] spids: [82] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(cube_set_file_contents_string)} {(TildeSubPart prefix:'') (/test/test.cfg)} {(DQ (${ VSub_Name cubevar_app_myconfig))} ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr children: [ (C {(chmod)} {(600)} {(TildeSubPart prefix:'') (/test/test.cfg)}) (C {(cube_check_return)}) ] op_id: Op_DPipe ) ] spids: [-1 123] ) ] spids: [-1 137] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(cube_has_role)} {(DQ (production))}) (C {(cube_file_contains)} {(TildeSubPart prefix:'') (/test/test.cfg)} {(DQ ('ip: 10'))} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ';'> ) ] action: [(C {(cube_throw)} {(DQ ('Production role on test box'))})] spids: [-1 165] ) ] spids: [-1 174] ) ] )