It's not clear exactly what shape you want, so this may not be the easiest approach (it's not too bad,) but you wind up with something that probably covers the bases.
Reading top to bottom, left to right, Y in the direction shown, Z up. Pivot set to '3D Cursor', at the origin.
- Starting with a 12-sided cylinder, fan-filled ends, cut in half.
- In Edit Mode, select all, and GX move the mesh out a little on X, select the open loop, and E Xextrude it a bit.
- Still with that edge loop selected, SX0 scale it to 0 in X.
- Assign a Mirror modifier in X, with 'Clip' and 'Merge' switched on
- You should now find, in edit mode, by selecting all, you can move the halves apart/together to make the shape longer or shorter
- Assign a Bevel modifier below the Mirror, with 2 segments, by 'Angle', about 33, not shallow enough to catch the vertical edges.
Assign a Subdivision surface modifier at the bottom of the stack.
Now by playing with the distance between the ends, and the settings in the Bevel modifier (segments, width, profile), you can reach a wide range of objects which answer your description.
You can improve the topology a bit by CtrlX dissolving every other edge in the fans, leaving all quads