On Mar 20, 2014, at 1:26 PM, John <[email protected]> wrote:

> Below is a my current config,.pp file....  I'm trying to create a condition 
> that says
> 
> if (/etc/ldap.conf contains the string host1.mydomain.com or 
> host2.mydomain.com)
>   Then install an sshd_ldap.erb template
>  else if (/etc/ldap.conf contains the string hostB.mydomain.com or 
> hostA.mydomain.com)
>      Then install an sshd_freeIPA.erb template
>    else  install a standard template.
> 
> The code does not work as written.  Any advice to suggestions would be 
> greatly appreciated.
> 
> Thanks in advance.
> 
> class ssh::config inherits ssh {
>   file_content { '/etc/ldap.conf':
>     ensure => file,
>   }

I understand what you're trying to do here, but you seem to have made up some 
puppet code that it won't know how to handle. You're trying to define a 
variable by using puppet's resource language. That's not going to work.

What you'll need to do is write a custom facter fact, e.g. 'ldapserver', that 
will contain the name(s) of the configured ldap server(s). I do this in my 
environment with the following code, which I place into a puppet module named 
'custom' (as documented here 
http://docs.puppetlabs.com/guides/plugins_in_modules.html):

# ldapservers.rb
Facter.add(:ldapservers) do
    setcode do
        osfam = Facter.value('osfamily')
        case osfam
            when /RedHat/
                %x{authconfig --test | grep -Fwm 1 'LDAP server' | awk -F\\" 
'{gsub("ldap:","");gsub("/","");print $2}'}.chomp
            when /Debian/
                %x{awk '/^uri/{print $2,$3}' /etc/ldap.conf}.chomp
        end 
    end 
end

With this fact in place, you can use a selector instead of an if statement to 
make your code much more concise:

class ssh::config inherits ssh {
    $ssh_type = $::ldapservers ? {
        /host(1|2).mydomain.com/ => "ldap",
        /host(B|A).mydomain.com/ => "ipa",
        default => "standard",
    }
    file { '/etc/ssh/sshd_config':
        ensure => present,
        owner => $owner,
        group => $group,
        mode => '0644',
        backup => false,
        content => template("sshd_config_${$ssh_type}.erb"),
    }
    file { '/etc/ssh/ssh_config':
        ensure => present,
        owner => $owner,
        group => $group,
        mode => '0644',
        backup => false,
        content => template("ssh_config_${$ssh_type}.erb"),
    }
}

>   if $file_content == "host1.mydomain.com || host2.mydomain.com"
>   {
>     file { '/etc/ssh/sshd_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("sshd_config_ldap.erb"),
>       }
>       file { '/etc/ssh/ssh_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("ssh_config_ldap.erb"),
>       }
>   }
>   elsif $file_content == "hostB.mydomain.com || hostA.mydomain.com"
>   {
>     file { '/etc/ssh/sshd_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("sshd_config_ipa.erb"),
>       }
>       file { '/etc/ssh/ssh_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("ssh_config_ipa.erb"),
>       }
>   }
>   else
>   {
>     file { '/etc/ssh/sshd_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("sshd_config_standard.erb"),
>       }
>       file { '/etc/ssh/ssh_config':
>         ensure => present,
>         owner => $owner,
>         group => $group,
>         mode => '0644',
>         backup => false,
>         content => template("ssh_config_standard.erb"),
>       }
>   }
> }

--
Peter Bukowinski

-- 
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/B87E3C1D-B65E-4895-B7D8-C70B6F7E162F%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to