trey85stang
2011-Mar-30 14:03 UTC
[Puppet Users] syntax error with case statment; in file type.
I am getting a syntax error in a module and I''m not sure why... Anyone care to take a look? class audit { file { "/etc/audit.rules": owner => "root", group => "root", mode => 640, case $operatingsystemrelease { "10.2": { path => "/etc/audit.rules", source => "puppet:///modules/audit/audit.rules.sles10", require => Package["audit-libs","audit"] } "11.1": { path => "/etc/audit/audit.rules", source => "puppet:///modules/audit/audit.rules.sles11", require => Package["audit-libs","audit","audit-audispd- plugins"] } } } } error on client is: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at ''case''; expected ''}'' at /etc/puppet/shared/ modules/audit/manifests/init.pp:6 on node node.example.com Also, is it possible to do regex''s in the case statement? i.e" "/^10\.[0-3]*/": { stuff here } "/^11\.[0-3]*/": { other stuff } Thanks -- 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.
Martin Alfke
2011-Mar-30 14:32 UTC
Re: [Puppet Users] syntax error with case statment; in file type.
On Mar 30, 2011, at 4:03 PM, trey85stang wrote:> I am getting a syntax error in a module and I''m not sure why... > > Anyone care to take a look? > > class audit { > file { "/etc/audit.rules": > owner => "root", > group => "root", > mode => 640, > case $operatingsystemrelease { > "10.2": { path => "/etc/audit.rules", > source => "puppet:///modules/audit/audit.rules.sles10", > require => Package["audit-libs","audit"] > } > "11.1": { path => "/etc/audit/audit.rules", > source => "puppet:///modules/audit/audit.rules.sles11", > require => Package["audit-libs","audit","audit-audispd- > plugins"] > } > } > } > }You need to use a selector for each resource item: path => $operatingsystemrelease ? { "10.2" => "/etc/audit.rules", "11.1" => "/etc/audit/audit.rules", default => undef, }, source => $operatingsystemrelease ? { "10.2" => "puppet...", "11.1" => "puppet...", default => ..., }, another option would be to separate this to multiple manifests (one for each os-release) and include based upon os-release number.> > error on client is: > err: Could not retrieve catalog from remote server: Error 400 on > SERVER: Syntax error at ''case''; expected ''}'' at /etc/puppet/shared/ > modules/audit/manifests/init.pp:6 on node node.example.com > > Also, is it possible to do regex''s in the case statement? > > i.e" > "/^10\.[0-3]*/": { stuff here } > "/^11\.[0-3]*/": { other stuff }Regexp are possible, But you have to take care of upper/lower letters yourself.> > Thanks > > -- > 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.
trey85stang
2011-Mar-30 17:20 UTC
[Puppet Users] Re: syntax error with case statment; in file type.
sweet, got it fixed by using selectors instead of case.... Im going to add one more question to this thread since it appears to be syntax related as well... perhaps my logic is just a little fubar but, I have this module that the services complains that it cannot find the file dependencies: class apparmor { if $highavailability == "true" { file { "myapp": owner => "root", group => "root", mode => 640, path => "/etc/apparmor.d/path.to.myapp", source => "puppet://modules/apparmor/path.to.myapp", require => Package["libapparmor","apparmor-profiles","perl- libapparmor","yast2-apparmor"], } } else { case $hostname { /$m[0-9]*$/: { file { "myapp1": owner => "root", group => "root", mode => 640, path => "/etc/apparmor.d/path.to.myapp1", source => "puppet://modules/apparmor/path.to.myapp1", require => Package["libapparmor","apparmor-profiles","perl- libapparmor","yast2-apparmor"], } } /$s[0-9]*$/: { file { "myapp2": owner => "root", group => "root", mode => 640, path => "/etc/apparmor.d/path.to.myapp2", source => "puppet://modules/apparmor/path.to.myapp2", require => Package["libapparmor","apparmor-profiles","perl- libapparmor","yast2-apparmor"], } } } } service { apparmor: ensure => running, # subscribe => $highavailability ? { # true => File["myapp_profile"], # false => $hostname ? { # /$m[0-9]*/ => File["myapp1_apparmor"], # /$s[0-9]*/ => File["myapp2_apparmor"], # }, # }, hasrestart => true, hasstatus => true, restart => "/etc/init.d/apparmor restart", status => "/etc/init.d/apparmor status", } } The commented out part under service is the section I am having trouble with; as it always compalins that it cannot find File["myapp"]; the logic works but but the file type is never found. With that section commented out the respective files transfer to their respective location. Any idea''s on this one? I seem to be having problems with my logic building in these modules. On Mar 30, 9:32 am, Martin Alfke <tux...@gmail.com> wrote:> On Mar 30, 2011, at 4:03 PM, trey85stang wrote: > > > > > > > > > > > I am getting a syntax error in a module and I''m not sure why... > > > Anyone care to take a look? > > > class audit { > > file { "/etc/audit.rules": > > owner => "root", > > group => "root", > > mode => 640, > > case $operatingsystemrelease { > > "10.2": { path => "/etc/audit.rules", > > source => "puppet:///modules/audit/audit.rules.sles10", > > require => Package["audit-libs","audit"] > > } > > "11.1": { path => "/etc/audit/audit.rules", > > source => "puppet:///modules/audit/audit.rules.sles11", > > require => Package["audit-libs","audit","audit-audispd- > > plugins"] > > } > > } > > } > > } > > You need to use a selector for each resource item: > path => $operatingsystemrelease ? { > "10.2" => "/etc/audit.rules", > "11.1" => "/etc/audit/audit.rules", > default => undef,}, > > source => $operatingsystemrelease ? { > "10.2" => "puppet...", > "11.1" => "puppet...", > default => ..., > > }, > > another option would be to separate this to multiple manifests (one for each os-release) and include based upon os-release number. > > > > > error on client is: > > err: Could not retrieve catalog from remote server: Error 400 on > > SERVER: Syntax error at ''case''; expected ''}'' at /etc/puppet/shared/ > > modules/audit/manifests/init.pp:6 on node node.example.com > > > Also, is it possible to do regex''s in the case statement? > > > i.e" > > "/^10\.[0-3]*/": { stuff here } > > "/^11\.[0-3]*/": { other stuff } > > Regexp are possible, But you have to take care of upper/lower letters yourself. > > > > > > > > > > > Thanks > > > -- > > 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 athttp://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.
trey85stang
2011-Mar-30 17:22 UTC
[Puppet Users] Re: syntax error with case statment; in file type.
Correction: # subscribe => $highavailability ? { # true => File["myapp"], # false => $hostname ? { # /$m[0-9]*/ => File["myapp1"], # /$s[0-9]*/ => File["myapp2"], # }, # }, On Mar 30, 12:20 pm, trey85stang <trey85st...@gmail.com> wrote:> sweet, got it fixed by using selectors instead of case.... Im going > to add one more question to this thread since it appears to be syntax > related as well... perhaps my logic is just a little fubar > > but, I have this module that the services complains that it cannot > find the file dependencies: > > class apparmor { > if $highavailability == "true" { > file { "myapp": > owner => "root", > group => "root", > mode => 640, > path => "/etc/apparmor.d/path.to.myapp", > source => "puppet://modules/apparmor/path.to.myapp", > require => Package["libapparmor","apparmor-profiles","perl- > libapparmor","yast2-apparmor"], > } > } else { > case $hostname { > /$m[0-9]*$/: { > file { "myapp1": > owner => "root", > group => "root", > mode => 640, > path => "/etc/apparmor.d/path.to.myapp1", > source => "puppet://modules/apparmor/path.to.myapp1", > require => Package["libapparmor","apparmor-profiles","perl- > libapparmor","yast2-apparmor"], > } > } > /$s[0-9]*$/: { > file { "myapp2": > owner => "root", > group => "root", > mode => 640, > path => "/etc/apparmor.d/path.to.myapp2", > source => "puppet://modules/apparmor/path.to.myapp2", > require => Package["libapparmor","apparmor-profiles","perl- > libapparmor","yast2-apparmor"], > } > } > } > } > service { apparmor: > ensure => running, > # subscribe => $highavailability ? { > # true => File["myapp_profile"], > # false => $hostname ? { > # /$m[0-9]*/ => File["myapp1_apparmor"], > # /$s[0-9]*/ => File["myapp2_apparmor"], > # }, > # }, > hasrestart => true, > hasstatus => true, > restart => "/etc/init.d/apparmor restart", > status => "/etc/init.d/apparmor status", > } > > } > > The commented out part under service is the section I am having > trouble with; as it always compalins that it cannot find > File["myapp"]; the logic works but but the file type is never found. > With that section commented out the respective files transfer to their > respective location. > > Any idea''s on this one? I seem to be having problems with my logic > building in these modules. > > On Mar 30, 9:32 am, Martin Alfke <tux...@gmail.com> wrote: > > > > > > > > > On Mar 30, 2011, at 4:03 PM, trey85stang wrote: > > > > I am getting a syntax error in a module and I''m not sure why... > > > > Anyone care to take a look? > > > > class audit { > > > file { "/etc/audit.rules": > > > owner => "root", > > > group => "root", > > > mode => 640, > > > case $operatingsystemrelease { > > > "10.2": { path => "/etc/audit.rules", > > > source => "puppet:///modules/audit/audit.rules.sles10", > > > require => Package["audit-libs","audit"] > > > } > > > "11.1": { path => "/etc/audit/audit.rules", > > > source => "puppet:///modules/audit/audit.rules.sles11", > > > require => Package["audit-libs","audit","audit-audispd- > > > plugins"] > > > } > > > } > > > } > > > } > > > You need to use a selector for each resource item: > > path => $operatingsystemrelease ? { > > "10.2" => "/etc/audit.rules", > > "11.1" => "/etc/audit/audit.rules", > > default => undef,}, > > > source => $operatingsystemrelease ? { > > "10.2" => "puppet...", > > "11.1" => "puppet...", > > default => ..., > > > }, > > > another option would be to separate this to multiple manifests (one for each os-release) and include based upon os-release number. > > > > error on client is: > > > err: Could not retrieve catalog from remote server: Error 400 on > > > SERVER: Syntax error at ''case''; expected ''}'' at /etc/puppet/shared/ > > > modules/audit/manifests/init.pp:6 on node node.example.com > > > > Also, is it possible to do regex''s in the case statement? > > > > i.e" > > > "/^10\.[0-3]*/": { stuff here } > > > "/^11\.[0-3]*/": { other stuff } > > > Regexp are possible, But you have to take care of upper/lower letters yourself. > > > > Thanks > > > > -- > > > 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 athttp://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.
trey85stang
2011-Mar-30 22:08 UTC
[Puppet Users] Re: syntax error with case statment; in file type.
ok, dont bother answering the question about the other module... I got it straightened out... the logic was fubar I cut it down to a single file type, and service type with a few separators and it all works now. On Mar 30, 12:22 pm, trey85stang <trey85st...@gmail.com> wrote:> Correction: > > # subscribe => $highavailability ? { > # true => File["myapp"], > # false => $hostname ? { > # /$m[0-9]*/ => File["myapp1"], > # /$s[0-9]*/ => File["myapp2"], > # }, > # }, > > On Mar 30, 12:20 pm, trey85stang <trey85st...@gmail.com> wrote: > > > > > > > > > sweet, got it fixed by using selectors instead of case.... Im going > > to add one more question to this thread since it appears to be syntax > > related as well... perhaps my logic is just a little fubar > > > but, I have this module that the services complains that it cannot > > find the file dependencies: > > > class apparmor { > > if $highavailability == "true" { > > file { "myapp": > > owner => "root", > > group => "root", > > mode => 640, > > path => "/etc/apparmor.d/path.to.myapp", > > source => "puppet://modules/apparmor/path.to.myapp", > > require => Package["libapparmor","apparmor-profiles","perl- > > libapparmor","yast2-apparmor"], > > } > > } else { > > case $hostname { > > /$m[0-9]*$/: { > > file { "myapp1": > > owner => "root", > > group => "root", > > mode => 640, > > path => "/etc/apparmor.d/path.to.myapp1", > > source => "puppet://modules/apparmor/path.to.myapp1", > > require => Package["libapparmor","apparmor-profiles","perl- > > libapparmor","yast2-apparmor"], > > } > > } > > /$s[0-9]*$/: { > > file { "myapp2": > > owner => "root", > > group => "root", > > mode => 640, > > path => "/etc/apparmor.d/path.to.myapp2", > > source => "puppet://modules/apparmor/path.to.myapp2", > > require => Package["libapparmor","apparmor-profiles","perl- > > libapparmor","yast2-apparmor"], > > } > > } > > } > > } > > service { apparmor: > > ensure => running, > > # subscribe => $highavailability ? { > > # true => File["myapp_profile"], > > # false => $hostname ? { > > # /$m[0-9]*/ => File["myapp1_apparmor"], > > # /$s[0-9]*/ => File["myapp2_apparmor"], > > # }, > > # }, > > hasrestart => true, > > hasstatus => true, > > restart => "/etc/init.d/apparmor restart", > > status => "/etc/init.d/apparmor status", > > } > > > } > > > The commented out part under service is the section I am having > > trouble with; as it always compalins that it cannot find > > File["myapp"]; the logic works but but the file type is never found. > > With that section commented out the respective files transfer to their > > respective location. > > > Any idea''s on this one? I seem to be having problems with my logic > > building in these modules. > > > On Mar 30, 9:32 am, Martin Alfke <tux...@gmail.com> wrote: > > > > On Mar 30, 2011, at 4:03 PM, trey85stang wrote: > > > > > I am getting a syntax error in a module and I''m not sure why... > > > > > Anyone care to take a look? > > > > > class audit { > > > > file { "/etc/audit.rules": > > > > owner => "root", > > > > group => "root", > > > > mode => 640, > > > > case $operatingsystemrelease { > > > > "10.2": { path => "/etc/audit.rules", > > > > source => "puppet:///modules/audit/audit.rules.sles10", > > > > require => Package["audit-libs","audit"] > > > > } > > > > "11.1": { path => "/etc/audit/audit.rules", > > > > source => "puppet:///modules/audit/audit.rules.sles11", > > > > require => Package["audit-libs","audit","audit-audispd- > > > > plugins"] > > > > } > > > > } > > > > } > > > > } > > > > You need to use a selector for each resource item: > > > path => $operatingsystemrelease ? { > > > "10.2" => "/etc/audit.rules", > > > "11.1" => "/etc/audit/audit.rules", > > > default => undef,}, > > > > source => $operatingsystemrelease ? { > > > "10.2" => "puppet...", > > > "11.1" => "puppet...", > > > default => ..., > > > > }, > > > > another option would be to separate this to multiple manifests (one for each os-release) and include based upon os-release number. > > > > > error on client is: > > > > err: Could not retrieve catalog from remote server: Error 400 on > > > > SERVER: Syntax error at ''case''; expected ''}'' at /etc/puppet/shared/ > > > > modules/audit/manifests/init.pp:6 on node node.example.com > > > > > Also, is it possible to do regex''s in the case statement? > > > > > i.e" > > > > "/^10\.[0-3]*/": { stuff here } > > > > "/^11\.[0-3]*/": { other stuff } > > > > Regexp are possible, But you have to take care of upper/lower letters yourself. > > > > > Thanks > > > > > -- > > > > 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 athttp://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.