Bring a large pot of salted water to boil over high heat. Add onions and cook, about 3 minutes. Drain, trim root ends, leaving bases intact, and peel. Set aside.
Preheat oven to 325°.
In a bowl, add sugar, vinegar, and mustard and stir to combine.
Add onions to a 9”x13” baking dish. Add 2/3 cup sugar-vinegar mixture, butter, 1 teaspoon salt, 1/4 teaspoon pepper, and 1/2 cup water and toss to coat. Cover with aluminum foil. Place in oven and cook, 25 minutes. Uncover and continue to cook, 50 minutes.
Line a large roasting pan with foil. Place ham in pan and cook, basting with glaze every 15 minutes, until warmed through, 45 minutes.
Transfer ham to a large platter and serve with roasted onions.