You could use Dupliverts to add one copy of the object to each vertex, and then use a Constraint to orient them correctly.
Parent the rounded cylinder object to the vertex object by pressing CtrlP:
Enable Dupliverts in Properties > Object > Duplication with the vertex object selected and scale the rounded cylinder object down (S):
Select the rounded cylinder object and snap the 3D cursor to it with ShiftS:
Add an empty (ShiftA> Empty > Plain Axes), it should appear at the center of the rounded cylinder object (where the 3D cursor is). Then select the vertex object and press CtrlShiftA to make the dupliface objects real:
With one of the rounded cylinder objects selected, add a Track To constraint in Properties > Constraints and tweak the axes settings:
With the same rounded cylinder object selected, press ShiftL> Object Data to select all the other rounded cylinder objects, then copy the constraints by pressing 3D View > Header > Object > Constraints > Copy Constraints to Selected Objects:
If you then snap the vertex object to the 3D cursor, and then delete the two center rounded cylinder objects, you get this:
Removing the constraints
To "apply" the constraints to the object transforms, select all the rounded cylinder objects again:
Select one of them and press ShiftL> Object Data
Press CtrlA> Apply Visual Transform make their actual rotation the same as the constrained rotation.
Then remove the constraints:
Remove the constraint from one by pressing the X on the constraint in Properties > Constraints.
Copy it to the others with 3D View > Header > Object > Constraints > Copy Constraints to Selected Objects.