On 02/11/2011 03:42 PM, li...@truthisfreedom.org.uk 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 puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to