A quality website is the first place to start, always. It's your virtual salesman and it has to look good and trustworthy.
If budget is an issue, the internet offers free strategies that I discuss here. Just requires time: http://roofermarketingsolutions.com/3-free-tools
If you're willing to invest some money, AdWords is about as good as it gets. People want roofer, people search roofer, you show up, and only pay if they click on you.
I'm finding Facebook ads to be vastly underpriced for the return but that won't last long. If you know how to use it correctly (NOT like AdWords) you can make a killing.
And with either of these, running Remarketing to stay in front of people who have visited you is crucial, especially in an industry like roofing where the buying decision takes time.
Above all, best advice with the ads is make sure you have someone experienced running it for you. You can waste a lot of money trying to do it yourself or giving it to an inexperienced employee.
Hope that helps.