Constrain armature movement based on child bone position
To get a curved armature result, the splineIK constraint is very helpful. It allows you to use a curve object that the armature follows. You may also want to try using curved bones, which you need to enable B-Bone display for the armature.

As the curve defines the "shape" of the bones you animate the curve to move the armature. To achieve this go into edit mode for the curve and for each control point add a hook by pressing &#9096; CtrlH->Hook to new object which will create an empty for the point. Now when you animate the position of the empty, the corresponding point in the curve will follow and the armature will bend to match.

For the animation you are trying to do I would reverse the direction of the armature. I'm not sure if this will make the rest of your animation easier or not.



Here is an example with curved bones enabled