This is a pain.. looks like [the only way around it](http://docs.puppetlabs.com/guides/templating.html#testing-for-undefined-variables) is to bring the variable in-scope and then use the `@ca_server` syntax.  This could probably be done in just `puppet::config` as `puppet::server::config` inherits it, and might be slightly neater (at least, less likely to break).