The deal is contingent on Rodriguez taking a physical, the catcher said in an interview Monday on ESPN, adding that "finally, you know, [a deal is] very close." Rodriguez said there was interest from several teams, but the Astros were the team that showed the most interest.
Rodriguez can make an additional $1.5 million in performance bonuses.
ESPN's Steve Phillips first reported the deal.
"It's very important for me [to be a starter] because I feel good enough to play every day," Rodriguez said. "I feel very good, ready to play a whole season."
He added that his play with Puerto Rico probably boosted his bid to find a regular-season team.
"It helps a lot for some players like myself, who still don't have a job," Rodriguez said. "I think this Classic has been a very important factor."
Astros players were raving about the addition.
"He's a veteran guy that knows how to play the game," Carlos Lee said. "He's one of the greatest catchers to ever play the game."
Florida also had inquired. Rodriguez helped the Marlins win the 2003 World Series.
"There was some interest and we'll leave it at that," Marlins vice president of baseball operations Larry Beinfest said. "Obviously, we have a lot of affection for Pudge and what he did in '03. There was interest there, and he made another choice, and that's the way it goes. Hopefully, it works out for him."
Houston needed a veteran catcher to replace Brad Ausmus, who became a free agent and signed with the Los Angeles Dodgers. The Astros have several young catchers in camp who need time to develop. Houston used Ausmus, J.R. Towles and Humberto Quintero at the position last season.
It appeared earlier that Quintero would be the starter this season, but he'll likely move to a backup role.
"I don't have any feelings about it," Quintero said Tuesday. "I'm going to keep working hard. I can't do anything about it. I'm happy for him to be here and help the team."
"I'll learn something from him, like I learned from Brad last year," Quintero added. "Brad taught me everything last year and I'm going to learn something different this year."
At the World Baseball Classic, Rodriguez, a 14-time major league All-Star, is hitting .600 (9-for-15) in four games for Puerto Rico.
Rodriguez hit .276 with seven homers and 35 RBIs in 115 games with the Detroit Tigers and New York Yankees last year. He is the only player in baseball history with at least 13 Gold Gloves and a career .300 average or better.
He has three more Gold Gloves, earning one as recently as 2007, than Hall of Famer Johnny Bench and almost double the total of Bob Boone, who is third on the list. Among position players, only Hall of Fame third baseman Brooks Robinson has more Gold Glove awards.
Having Pudge in Houston will be a treat for Astros right fielder Hunter Pence, who as a child watched Rodriguez play for the Rangers.
"He was one of my favorites growing up in Arlington," he said. "So I'm very excited about it. I watched a lot of Rangers games and I loved Pudge. He was an incredible catcher."
Rodriguez has caught 2,173 games, trailing only Carlton Fisk (2,226) and Boone (2,225) in terms of longevity behind the plate.
Information from The Associated Press was used in this report.