Hi Dan,

I would write the grubipv6disable class in another way:

class grubipv6disable (
  Boolean $enable,
) {
  if $enable {
    contain grubipv6disable::config
  }
}

And keep the grubipv6disable::config class as is:

class grubipv6disable::config (
){
  if $facts['os']['release']['major'] =~ /7/ {
    exec { 'grub2_ipv6_disable':
      command => '/usr/sbin/grubby --update-kernel=ALL --args=ipv6.disable=1',
      unless  => '/usr/sbin/grubby --info=ALL | /usr/bin/grep ipv6'
    }
  } else {
    notice ('Assuming RHEL 6.x thus taking no action')
  }
}

Parameters, like variables, are always local to a class.

Best,
Martin


> On 28. Sep 2020, at 12:03, [email protected] <[email protected]> wrote:
> 
> Thanks for that Martin,
> 
> I seem to have unearthed a different issue:
> 
> # puppet agent --no-daemonize --onetime --verbose
> Error: Could not retrieve catalog from remote server: Error 500 on SERVER: 
> Server Error: Evaluation Error: Error while evaluating a Resource Statement, 
> Class[Grubipv6disable]: expects a value for parameter 'enable' (file: 
> /etc/puppetlabs/code/environments/production/manifests/site.pp, line: 12, 
> column: 3) on node lhcsrvprdidm02.fixnetix.com 
> <http://lhcsrvprdidm02.fixnetix.com/>
> 
> # pwd
> /etc/puppetlabs/code/environments/production/modules/grubipv6disable
> # more manifests/init.pp
> class grubipv6disable (
>   Boolean $enable,
> ) {
>   contain grubipv6disable::config
>   }
> 
> # more manifests/config.pp
> class grubipv6disable::config (
>   Boolean $enable = true,
> ){
>  if $enable {
>   if $facts['os']['release']['major'] =~ /7/ {
>     exec { 'grub2_ipv6_disable':
>       command => '/usr/sbin/grubby --update-kernel=ALL --args=ipv6.disable=1',
>       unless  => '/usr/sbin/grubby --info=ALL | /usr/bin/grep ipv6'
>      }
>   } else {
>       notice ('Assuming RHEL 6.x thus taking no action')
>     }
>  }
> }
> 
> # pwd
> /etc/puppetlabs/code/environments/production/data
> # more nodes/lhcsrvprdidm02.fixnetix.com.yaml
> ---
> grubipv6disable::enable: false
> 
> Seems hiera is not being read.
> 
> Any further help you can provide would be appreciated
> 
> Thanks,
> Dan.
> On Friday, September 18, 2020 at 12:43:26 PM UTC+1 Martin Alfke wrote:
> Add a parameter to grubipv6disable class which controls the internal 
> behaviour.
> https://puppet.com/docs/puppet/6.17/lang_classes.html#class-parameters-and-variables
>  
> <https://puppet.com/docs/puppet/6.17/lang_classes.html#class-parameters-and-variables>
> 
> e.g.
> 
> # modules/grubipv6disable/manifests/init.pp
> class grubipv6disable (
>   Boolean $enable = true,
> ){
>   if $enable {
>     # add here the code from the class.
>   }
> }
> 
> Now you add hiera.yaml to your control-repo and add node specific data.
> https://puppet.com/docs/puppet/6.17/hiera_intro.html 
> <https://puppet.com/docs/puppet/6.17/hiera_intro.html>
> 
> e.g.
> data/nodes/<nodename>.yaml
> ---
> grubipv6disable::enable: false
> 
> Hth,
> Martin
> 
> 
> 
>> On 17. Sep 2020, at 19:19, [email protected] <http://gmail.com/> 
>> <[email protected] <applewebdata://7B6293DD-2FFD-49D1-9DCD-0C0C1AA6D763>> 
>> wrote:
>> 
> 
>> Hello experts,
>> 
>> I apply all my current classes like so:
>> 
>> # cat site.pp
>> 
>> node default {
>>   class { 'selinux':
>>     mode => 'permissive',
>>     type => 'targeted',      }
>>   class { 'commonpackages':  }
>>   class { 'polkit':          }
>>   class { 'libstoragemgmt':  }
>>   class { 'rngd':            }
>>   class { 'gssproxy':        }
>>   class { 'smartd':          }
>>   class { 'firewalld':       }
>>   class { 'grubipv6disable': }
>>   class { 'grubrootpasswd':  }
>>   class { 'grubcrash':       }
>>   class { 'logrotate':       }
>>   class { 'htop':            }
>>   class { 'vim':             }
>>   class { 'yum':             }
>>   class { 'yumlocalrepo':    }
>>   class { 'sysctl':          }
>>   class { 'sysconfig':       }
>>   class { 'bashrc':          }
>>   class { 'vault':           }
>>   class { 'useradd':         }
>>   class { 'crontab':         }
>>   class { 'modprobe':        }
>>   class { 'rsyslogd':        }
>>   class { 'sudoers':         }
>>   class { 'motd':            }
>>   class { 'pam':             }
>>   class { 'issue':           }
>>   class { 'issuenet':        }
>>   class { 'limits':          }
>>   class { 'timezone':        }
>>   class { 'profiled':        }
>>   class { 'pulpconsumer':    }
>>   class { 'resolver':        }
>>   class { 'aide':            }
>>   class { 'autofs':          }
>>   class { 'vmtoolsd':        }
>>   class { 'ntpd':            }
>>   class { 'postfix':         }
>>   class { 'auditd':          }
>>   class { 'sshd':            }
>>   class { 'idmclient':       }
>> }
>> 
>> However, it's now become apparent that I need to exclude the grubipv6disable 
>> from some nodes (all have idm0 in their hostname).
>> 
>> What is the best way (or the less complicated) to achive this?
>> 
>> Thanks in advance.
>> Dan.
>> 
> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <applewebdata://7B6293DD-2FFD-49D1-9DCD-0C0C1AA6D763>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/puppet-users/e0226cb0-a8d9-4767-afa7-093c89358063n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/puppet-users/e0226cb0-a8d9-4767-afa7-093c89358063n%40googlegroups.com?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/puppet-users/b168cfbc-a37a-4ecd-b394-223de8580440n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/puppet-users/b168cfbc-a37a-4ecd-b394-223de8580440n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/10312006-1B7F-4EF0-8078-7F1D4B010E1C%40gmail.com.

Reply via email to