Little Boxes on the Hillside
Python 2, 123 121 119 111 109 108 bytes


Saved two bytes thanks to caird coinheringaahing; using the actual unprintable ASCII character instead of escaping it (\33)
Could (and did) save a byte by writing an entire program using input() instead of defining a function
Saved seven bytes thanks to ElPedro; using the fact that str(90+n) with 0&lt;=n&lt;=9 is "9%s"%n
Saved two three bytes by using string formatting rather than string concatenation




N=input()
for(n)in"2543":Z="_"*N;print"&#27;[9%sm /"%n+~-~-N*"-"+"\ \n/%s\\\n"%Z+~-N/2*("|%s|\n"%" "*N)+"|%s|"%Z


Try it online!

Uses ANSI escape codes for coloring the houses.