The 35-year-old Loretta, who played for the Boston Red Sox in 2006, can also play first, third and shortstop. Loretta will also provide insurance at third in case Morgan Ensberg, who battled injuries last season, does not make a successful comeback.
The Texas Rangers reportedly offered $1 million more, Garber said, and Loretta also had an offer from the Cincinnati Reds. However, Loretta chose Houston, partly because of an aggressive recruiting job by current players Roy Oswalt and Brad Ausmus, who played alongside him on the team in 2002.
"Roy called [club owner] Drayton McLane and said, 'We need this guy,'" Garber told MLB.com. "That's how the ball started rolling. Drayton said, 'OK, I'll call your agent tomorrow.'
"We wanted to wait until the second-base market got better. The market is great for everyone but second basemen."
Loretta batted .285 in 155 games last season for the Red Sox, who finished third in the American League's East Division. He recorded five home runs and drove in 59 runs while playing mostly second base.
The Red Sox chose to let Loretta seek another job opportunity via free agency, and the New York Yankees had reportedly shown interest in December.
He started the 2006 All-Star Game in Pittsburgh last July. He also played in the 2004 All-Star Game.
Loretta has previously played for the Milwaukee Brewers, Astros and San Diego Padres and has a career .299 average and .987 career fielding percentage.