(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 ops: [Op_DPipe] children: [(C {(dnf)} {(check-update)}) (C {(cube_check_return)})] ) ] spids: [16777215 41] ) ] spids: [16777215 52] ) (C {(cube_ensure_directory)} {(TildeSubPart token:<Lit_TildeLike '~'>) (/test/)}) (CommandList children: [ (Sentence child: (SimpleCommand words: [{(cube_read_heredoc)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(SQ <HEREDOC>)} here_end_span_id: 79 stdin_parts: [ ('[app]\n') ('name=${cubevar_app_name}\n') ('test=${cubevar_app_test}\n') ] ) ] ) 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: [81] ) ] spids: [81] ) (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: [89 91] ) (', random: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_random_number)} {(10)})]) left_token: <Left_CommandSub '$('> spids: [93 97] ) (', memory: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_total_memory)})]) left_token: <Left_CommandSub '$('> spids: [99 101] ) (', ip: ') (CommandSubPart command_list: (CommandList children:[(C {(cube_interface_ipv4_address)} {(eth0)})]) left_token: <Left_CommandSub '$('> spids: [103 107] ) (' }') ) } spids: [86] ) ] spids: [86] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(cube_set_file_contents_string)} {(TildeSubPart token:<Lit_TildeLike '~'>) (/test/test.cfg)} {(DQ (${ VSub_Name cubevar_app_myconfig))} ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(chmod)} {(600)} {(TildeSubPart token:<Lit_TildeLike '~'>) (/test/test.cfg)}) (C {(cube_check_return)}) ] ) ] spids: [16777215 127] ) ] spids: [16777215 141] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(cube_has_role)} {(DQ (production))}) (C {(cube_file_contains)} {(TildeSubPart token:<Lit_TildeLike '~'>) (/test/test.cfg)} {(DQ ('ip: 10'))} ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(cube_throw)} {(DQ ('Production role on test box'))})] spids: [16777215 169] ) ] spids: [16777215 178] ) ] )