If it's a fiberglass roof, and if your handy...
even out the hole (how big is it? you never posted or supplied a photo. is it fist sized or trash can cover size) to round or square. Patch it with some styrofoam first, and cover that with pieces of ply cut to the size of the hole, building it up with layers of Dicor between the layers of thin ply. Top layer of ply...try to get it as even with rest of roof, and then get a fiberglass patch kit from any auto parts store. Patch it , let it set up. Some Dicor Self Leveling over the patch, and finally some Eternabond Tape in whatever width you need to overlay the patched area.
May sound like overkill, but I bet it will never leak and it's what I would do if the same thing ever happened to our Lexington with a fiberglass roof. No need to replace the entire roof for one hole.
Dosen't matter if it looks patched, as long as it works, and it's on the roof...who's going to notice.
As for the interior ceiling, you'll have to attack that from the inside. First priority is to seal the hole.
Steve & Cheryl + Charlie & Casey, our furry kids.
2012 Forrest River Lexington 283ts
Toad, 2013 Subaru XV Crosstrek