ok, maybe not my most constructive comment ever ... (and not a blocker for me at all)

on the variables, my main issue is that there are way too many, and i'm not convinced that this case warrants a dedicated variable, since the action can be achieved with a oneliner anywhere in the templates. but this is probably a matter of taste. 

wrt the repos, unless you mix eg el6 and el7 repos, the OS name is not needed in the repo name, only in the repo url. (but again, not a blocker at all, and would probably need a lot more work elsewhere too). the repo url can be generated via a function that eg prefixes the OS. there is no need for a separate namespace. we use such funciton also to deal with snapshots:
example epel repo https://github.ugent.be/stdweird/quattor-SCDB-ugent/blob/master/cfg/site/dict/repository/epel.pan
the template with the url_for_repo function for adding snapshot info to the url https://github.ugent.be/stdweird/quattor-SCDB-ugent/blob/master/cfg/site/dict/site/functions.tpl