FAQ
Hi,

I have a modul which created the vhosts and based on the variables defined
there i am creating nagios defacement host cfg.
My problem is that I can't conditionally decide if the file should be
created, based on the variable which will get content in the node config:
When the condition get evaluated $monstring still empty since it gets its
content in the node config later, so no file will be created.
If i remove the condition there will be hundreds of nagios cfg which should
not be created.
Can you give me some idea how can i make this work, so blog file gets
created and blog1 not.

*This is the important part of my resource type*
*
*
define vhost ($servername = "${hostname}.${domain}", $serveralias = [
"www.${hostname}.${domain}" ], $inorout = "1", $owner = "root", $group =
"root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert = "",
$certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
$pringodir = "pringo4", $staging = "false", $mode = '755', $monstring = '' )

if ! $monstring == "" {
file{"/root/${servername}.cfg":
ensure => present,
content =>
template("${module_name}/defacementmon.erb"),
}
}

*node config:*

import "apache2/vhost.pp"

vhost{'blog.domain.com':
servername => 'blog.domain.com',
serveralias => [ 'prod-blog.domain.com' ],
enabled => 'link',
require => Mount['/var/www'],
monstring => 'string',
inorout => '0';
}

vhost{'blog1.domain.com':
servername => 'blog1.domain.com',
serveralias => [ 'prod-blog1.domain.com' ],
enabled => 'link',
require => Mount['/var/www'],
inorout => '0';
}

I hope it is understandable, my english is not the best.
Peter

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Search Discussions

  • Peter Horvath at Apr 30, 2012 at 3:58 pm
    Hi,

    I have a modul which created the vhosts and based on the variables
    defined there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node
    config:
    When the condition get evaluated $monstring still empty since it gets
    its content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which
    should not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    This is the important part of my resource type

    define vhost ($servername = "${hostname}.${domain}", $serveralias =
    [ "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root",
    $group = "root", $enabled = "link", $rewrite = "", $ssl = "false",
    $cacert = "", $certchain = "", $certfile = "", $keyfile = "", $pringo
    = "false", $pringodir = "pringo4", $staging = "false", $mode = '755',
    $monstring = '' )

    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure => present,
    content => template("${module_name}/
    defacementmon.erb"),
    }
    }

    node config:

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    monstring => 'string',
    inorout => '0';
    }

    vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-
    blog1.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    inorout => '0';
    }

    I hope it is understandable, my english is not the best.

    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Peter Horvath at May 1, 2012 at 12:24 pm
    Anybody got any idea on this?
    I am really stuck with this one.
    On Apr 30, 4:51 pm, Peter Horvath wrote:
    Hi,

    I have a modul which created the vhosts and based on the variables defined
    there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node config:
    When the condition get evaluated $monstring still empty since it gets its
    content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which should
    not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    *This is the important part of my resource type*
    *
    *
    define vhost ($servername = "${hostname}.${domain}", $serveralias = [
    "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root", $group =
    "root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert = "",
    $certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
    $pringodir = "pringo4", $staging = "false", $mode = '755', $monstring = '' )

    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure          => present,
    content         =>
    template("${module_name}/defacementmon.erb"),
    }

    }

    *node config:*

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername              => 'blog.domain.com',
    serveralias             => [ 'prod-blog.domain.com' ],
    enabled                 => 'link',
    require                 => Mount['/var/www'],
    monstring               => 'string',
    inorout                 => '0';
    }

    vhost{'blog1.domain.com':
    servername              => 'blog1.domain.com',
    serveralias             => [ 'prod-blog1.domain.com' ],
    enabled                 => 'link',
    require                 => Mount['/var/www'],
    inorout                 => '0';
    }

    I hope it is understandable, my english is not the best.
    Peter
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Denmat at May 1, 2012 at 1:59 pm
    Hi,

    can't see anything wrong off the top of my head except you use an import statement instead of an include.
    http://docs.puppetlabs.com/guides/language_guide.html#importing-manifests

    Have you tried testing for a string like 'false'? Just to see if something odd not going on.
    $mode = '755', $monstring = 'false' )
    if ! $monstring == "false" {
    file{"/root/${servername}.cfg":

    Not at a computer so can't test the code till tomorrow (that's about 8 hours away).

    Sorry,
    Den

    On 01/05/2012, at 22:24, Peter Horvath wrote:

    Anybody got any idea on this?
    I am really stuck with this one.
    On Apr 30, 4:51 pm, Peter Horvath wrote:
    Hi,

    I have a modul which created the vhosts and based on the variables defined
    there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node config:
    When the condition get evaluated $monstring still empty since it gets its
    content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which should
    not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    *This is the important part of my resource type*
    *
    *
    define vhost ($servername = "${hostname}.${domain}", $serveralias = [
    "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root", $group =
    "root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert = "",
    $certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
    $pringodir = "pringo4", $staging = "false", $mode = '755', $monstring = '' )

    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure => present,
    content =>
    template("${module_name}/defacementmon.erb"),
    }

    }

    *node config:*

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    monstring => 'string',
    inorout => '0';
    }

    vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-blog1.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    inorout => '0';
    }

    I hope it is understandable, my english is not the best.
    Peter
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Peter Horvath at May 1, 2012 at 3:03 pm
    Hey Den, thanks for the answer

    I changed the import to include it was just a leftover when for some reason
    include wasnt good enough to be able to use defined resource types with
    some older version.

    This false solution isnt working sadly still that monstring get evaluated
    with the default value and never with the later defined value.
    On 1 May 2012 14:58, Denmat wrote:

    Hi,

    can't see anything wrong off the top of my head except you use an import
    statement instead of an include.
    http://docs.puppetlabs.com/guides/language_guide.html#importing-manifests

    Have you tried testing for a string like 'false'? Just to see if something
    odd not going on.
    $mode = '755', $monstring = 'false' )
    if ! $monstring == "false" {
    file{"/root/${servername}.cfg":

    Not at a computer so can't test the code till tomorrow (that's about 8
    hours away).

    Sorry,
    Den

    On 01/05/2012, at 22:24, Peter Horvath wrote:

    Anybody got any idea on this?
    I am really stuck with this one.

    On Apr 30, 4:51 pm, Peter Horvath <peter.horvat...@googlemail.com>
    wrote:
    Hi,

    I have a modul which created the vhosts and based on the variables
    defined
    there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node
    config:
    When the condition get evaluated $monstring still empty since it gets
    its
    content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which
    should
    not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    *This is the important part of my resource type*
    *
    *
    define vhost ($servername = "${hostname}.${domain}", $serveralias = [
    "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root", $group =
    "root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert = "",
    $certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
    $pringodir = "pringo4", $staging = "false", $mode = '755', $monstring =
    '' )
    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure => present,
    content =>
    template("${module_name}/defacementmon.erb"),
    }

    }

    *node config:*

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    monstring => 'string',
    inorout => '0';
    }

    vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-blog1.domain.com' ],
    enabled => 'link',
    require => Mount['/var/www'],
    inorout => '0';
    }

    I hope it is understandable, my english is not the best.
    Peter
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Denmat at May 2, 2012 at 12:24 am
    Hi Peter,

    take a look at this:

    class testme {
    define vhost ($servername = "${hostname}.${domain}", $serveralias =
    [ "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root",
    $group = "root", $enabled = "link", $rewrite = "", $ssl = "false",
    $cacert = "", $certchain = "", $certfile = "", $keyfile = "", $pringo
    = "false", $pringodir = "pringo4", $staging = "false", $mode = '755',
    $monstring = undef ) {

    if $monstring {
    file{"/root/test_${servername}.cfg":
    ensure => present,
    content => "${servername}_defacementmon.erb",
    }
    }
    }
    }


    class runme {
    include testme
    testme::vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com' ],
    enabled => 'link',
    monstring => 'string',
    inorout => '0',
    }

    testme::vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-blog1.domain.com' ],
    enabled => 'link',
    inorout => '0',
    }

    }

    include runme

    Now the monstring, if it is not declared remains 'undef'. We now just
    test on the existence of monstring. If it is declared it you create
    the file, if not the file is not created.

    In my quick testing it appeared to work, but may not be exactly
    suitable for your env.

    That help?
    Den
    On Wed, May 2, 2012 at 1:03 AM, Peter Horvath wrote:
    Hey Den, thanks for the answer

    I changed the import to include it was just a leftover when for some reason
    include wasnt good enough to be able to use defined resource types with some
    older version.

    This false solution isnt working sadly still that monstring get evaluated
    with the default value and never with the later defined value.

    On 1 May 2012 14:58, Denmat wrote:

    Hi,

    can't see anything wrong off the top of my head except you use an import
    statement instead of an include.
    http://docs.puppetlabs.com/guides/language_guide.html#importing-manifests

    Have you tried testing for a string like 'false'? Just to see if something
    odd not going on.
    $mode = '755', $monstring = 'false' )
    if ! $monstring == "false" {
    file{"/root/${servername}.cfg":

    Not at a computer so can't test the code till tomorrow (that's about 8
    hours away).

    Sorry,
    Den

    On 01/05/2012, at 22:24, Peter Horvath wrote:

    Anybody got any idea on this?
    I am really stuck with this one.

    On Apr 30, 4:51 pm, Peter Horvath <peter.horvat...@googlemail.com>
    wrote:
    Hi,

    I have a modul which created the vhosts and based on the variables
    defined
    there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node
    config:
    When the condition get evaluated $monstring still empty since it gets
    its
    content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which
    should
    not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    *This is the important part of my resource type*
    *
    *
    define vhost ($servername = "${hostname}.${domain}", $serveralias = [
    "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root", $group
    =
    "root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert = "",
    $certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
    $pringodir = "pringo4", $staging = "false", $mode = '755', $monstring =
    '' )

    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure          => present,
    content         =>
    template("${module_name}/defacementmon.erb"),
    }

    }

    *node config:*

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername              => 'blog.domain.com',
    serveralias             => [ 'prod-blog.domain.com' ],
    enabled                 => 'link',
    require                 => Mount['/var/www'],
    monstring               => 'string',
    inorout                 => '0';
    }

    vhost{'blog1.domain.com':
    servername              => 'blog1.domain.com',
    serveralias             => [ 'prod-blog1.domain.com' ],
    enabled                 => 'link',
    require                 => Mount['/var/www'],
    inorout                 => '0';
    }

    I hope it is understandable, my english is not the best.
    Peter
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Peter Horvath at May 2, 2012 at 10:23 am
    Cool thx Den, undef worked like a charm.

    much appriciated!
    On 2 May 2012 01:24, denmat wrote:

    Hi Peter,

    take a look at this:

    class testme {
    define vhost ($servername = "${hostname}.${domain}", $serveralias =
    [ "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root",
    $group = "root", $enabled = "link", $rewrite = "", $ssl = "false",
    $cacert = "", $certchain = "", $certfile = "", $keyfile = "", $pringo
    = "false", $pringodir = "pringo4", $staging = "false", $mode = '755',
    $monstring = undef ) {

    if $monstring {
    file{"/root/test_${servername}.cfg":
    ensure => present,
    content =>
    "${servername}_defacementmon.erb",
    }
    }
    }
    }


    class runme {
    include testme
    testme::vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com' ],
    enabled => 'link',
    monstring => 'string',
    inorout => '0',
    }

    testme::vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-blog1.domain.com' ],
    enabled => 'link',
    inorout => '0',
    }

    }

    include runme

    Now the monstring, if it is not declared remains 'undef'. We now just
    test on the existence of monstring. If it is declared it you create
    the file, if not the file is not created.

    In my quick testing it appeared to work, but may not be exactly
    suitable for your env.

    That help?
    Den
    On Wed, May 2, 2012 at 1:03 AM, Peter Horvath wrote:
    Hey Den, thanks for the answer

    I changed the import to include it was just a leftover when for some reason
    include wasnt good enough to be able to use defined resource types with some
    older version.

    This false solution isnt working sadly still that monstring get evaluated
    with the default value and never with the later defined value.

    On 1 May 2012 14:58, Denmat wrote:

    Hi,

    can't see anything wrong off the top of my head except you use an import
    statement instead of an include.
    http://docs.puppetlabs.com/guides/language_guide.html#importing-manifests
    Have you tried testing for a string like 'false'? Just to see if
    something
    odd not going on.
    $mode = '755', $monstring = 'false' )
    if ! $monstring == "false" {
    file{"/root/${servername}.cfg":

    Not at a computer so can't test the code till tomorrow (that's about 8
    hours away).

    Sorry,
    Den

    On 01/05/2012, at 22:24, Peter Horvath wrote:

    Anybody got any idea on this?
    I am really stuck with this one.

    On Apr 30, 4:51 pm, Peter Horvath <peter.horvat...@googlemail.com>
    wrote:
    Hi,

    I have a modul which created the vhosts and based on the variables
    defined
    there i am creating nagios defacement host cfg.
    My problem is that I can't conditionally decide if the file should be
    created, based on the variable which will get content in the node
    config:
    When the condition get evaluated $monstring still empty since it gets
    its
    content in the node config later, so no file will be created.
    If i remove the condition there will be hundreds of nagios cfg which
    should
    not be created.
    Can you give me some idea how can i make this work, so blog file gets
    created and blog1 not.

    *This is the important part of my resource type*
    *
    *
    define vhost ($servername = "${hostname}.${domain}", $serveralias = [
    "www.${hostname}.${domain}" ], $inorout = "1", $owner = "root",
    $group
    =
    "root", $enabled = "link", $rewrite = "", $ssl = "false", $cacert =
    "",
    $certchain = "", $certfile = "", $keyfile = "", $pringo = "false",
    $pringodir = "pringo4", $staging = "false", $mode = '755',
    $monstring =
    '' )

    if ! $monstring == "" {
    file{"/root/${servername}.cfg":
    ensure => present,
    content =>
    template("${module_name}/defacementmon.erb"),
    }

    }

    *node config:*

    import "apache2/vhost.pp"

    vhost{'blog.domain.com':
    servername => 'blog.domain.com',
    serveralias => [ 'prod-blog.domain.com'
    ],
    enabled => 'link',
    require => Mount['/var/www'],
    monstring => 'string',
    inorout => '0';
    }

    vhost{'blog1.domain.com':
    servername => 'blog1.domain.com',
    serveralias => [ 'prod-blog1.domain.com'
    ],
    enabled => 'link',
    require => Mount['/var/www'],
    inorout => '0';
    }

    I hope it is understandable, my english is not the best.
    Peter
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedApr 30, '12 at 3:51p
activeMay 2, '12 at 10:23a
posts7
users3
websitepuppetlabs.com

People

Translate

site design / logo © 2022 Grokbase