On 02/11/2011 03:42 PM, [email protected] wrote:
> Hi all,
>
> I'm running puppet 0.25.5 and I'm running into an issue with virtual
> defines for setting up my NGinx Vhosts.
>
> The define is as follows:
>
> class nginx{
>
> ...
>
>
> # Setup a resource to create the configuration files
> define nginx_vhost($website_listen_port = "80",$ssl_enabled = "false"){
> $website_hostname = $title
> # Setup the config file with the appropriate name from the template
> file{"/etc/nginx/conf.d/${title}.conf":
> ensure => file,
> content => template("nginx/nginx_vhost.conf.erb")
> }
> if $ssl_enabled != "false" {
> $website_listen_port = "443"
> file{"/etc/nginx/conf.d/${website_hostname}.ssl.conf":
> ensure => file,
> content => template("nginx/nginx_vhost.conf.erb")
> }
> }
> }
>
> ...
>
> }
>
> What I want to be able to do is the following in my classes:
>
> # Set the websites to be hosted on this server as an array
> $websites = ['testing.domain.com','test2.domain.com']
> # realize the websites
> @nginx::nginx_vhost($websites:)
This syntax looks awkward.
You should declare each virtual resource on its own:
@nginx::nginx_vhost {
'testing.domain.com':
ssl_enabled => true;
'test2.domain.com': ;
}
> realize(Nginx::Nginx_vhost[$websites])
>
>
> The issue that I am running into is that I do not appear to be able to
> set the values for website_liste_port or ssl_enabled through using this
> methodology.
>
> Is the a way to pass the domain *and* the values for
> website_listen_port/ssl_enabled to the define at the point of realization?
Using the array for realization is fine, but I don't recommend it for
resource declaration.
Yes, there is redundant data in your manifest now.
The alternative probably is
@nginx::nginx_vhost { $websites: }
nginx::nginx_vhost <| title == 'testing.domain.com' |> {
ssl_enabled => false
}
nginx::nginx_vhost <| title == 'test2.domain.com' |>
But that's redundant, too, *and* ugly on top of it ;-)
HTH,
Felix
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.