(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 prefix:'') (/test/)}) (Sentence child: (SimpleCommand words: [{(cube_read_heredoc)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {('[app]\n') ('name=${cubevar_app_name}\n') ('test=${cubevar_app_test}\n')} do_expansion: False here_end: HEREDOC was_filled: T 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 ops: [Op_DPipe] children: [ (C {(chmod)} {(600)} {(TildeSubPart prefix:'') (/test/test.cfg)}) (C {(cube_check_return)}) ] ) ] spids: [16777215 123] ) ] spids: [16777215 137] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(cube_has_role)} {(DQ (production))}) (C {(cube_file_contains)} {(TildeSubPart prefix:'') (/test/test.cfg)} {(DQ ('ip: 10'))} ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(cube_throw)} {(DQ ('Production role on test box'))})] spids: [16777215 165] ) ] spids: [16777215 174] ) ] )