Barack Obama chose a general sacked by the Bush administration for doubting its Iraq war strategy for his Cabinet on Sunday.