The deal allows the Astros to avoid arbitration with the 32-year-old who hit .240 with two home runs and a career-high 25 RBIs in 79 games last season.
Also on Monday, Houston announced that catcher Jason Castro had surgery on his left foot. The team expects Castro's recovery to take about three months.
Castro, who missed all of last season after tearing the anterior cruciate ligament in his right knee, injured his foot in a game in the Arizona Fall League Nov. 16.
The Astros hoped he could become their full time catcher, but he hasn't been able to play in the major leagues since his rookie season in 2010.