I'm doing a kind of similar thing in a little test project, where I have a reticule circling around my player based on mouse position.
In my case I have an "anchor" node, which I'd assume you'd position over your sun. I just use a plain ol' Node2D.
My reticule (in your case, a planet) is then a child of the anchor (in my case it's just a sprite). My reticule is then offset from the anchor by a certain distance in local transform - I adjust my position.x to 100, so it's always 100 units from my anchor.
Because the reticule/planet is a child, any rotation on the anchor will swing it around.
In my case I find the angle to the mouse, and set my anchor rotation to that, so that my reticule / planet is always reaching toward the mouse.
In your case you could skip the getangleto call, and just set it to the angle that you want.
In gdscript, my code is a one-liner in _process:
anchor.rotate(anchor.get_angle_to(get_global_mouse_position()))
Then, if you want the planet to move closer/further away you can just modify the local position.x to be smaller or larger.