The Canadiens have two goaltenders, six of seven defencemen, and 10 of the 14 forwards they'll need to make up the 2016-17 roster, and have just over $10.1 million of wiggle room to flesh it out.
Some options to fill that (as of now) one remaining spot on defence can be found within the organization. Mark Barberio and breakout AHL defender Morgan Ellis are both unrestricted free agents at season's end, and could be signed on to relatively cheap deals.
The same situation exists at the forward position, as well. Current roster or injured reserve players Lucas Lessio, Sven Andrighetto, and Daniel Carr could all be re-upped. Charles Hudon has one year left on his $625 000 AVV entry-level contract, and should be a member of the opening night roster come October.
With the trade deadline on the horizon, Marc Bergevin will be looking to move out some contracts and free up more space to get some deals done in the summer. Those internal moves listed above could probably be made for an average cost of about $1 million per position, leaving $5 million available with the roster as is. Moving out an expensive deal would allow the team to have the means to offer a significant deal to a top-tier forward when free agency opens on July 1st, or make a big transaction before 3 PM ET on Monday.
More information on contract details is available at:
A public Google spreadsheet containing this cap info and the charts these visualizations are based upon is available here.