Hi John,
For conditional logic, you can use facts.
In your case, you need to create a fact for reading file /etc/file1.
you can create a fact in your fact directory, file_content.rb ->
Facter.add("file_content") do
setcode do
Facter::Util::Resolution.exec('cat /etc/file1')
end
end
But this file "/etc/file1" should be present on your client also, so
transfer this file first.
Now you can add this in your manifest,
if $file_content == "abc"
{
file { '/etc/ssh/sshd_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHDT Template1"),
}
file { '/etc/ssh/ssh_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHT Template 1"),
}
}
elsif $file_content == "xyz"
{
file { '/etc/ssh/sshd_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHDT Template2"),
}
file { '/etc/ssh/ssh_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHT Template 2"),
}
}
else
{
file { '/etc/ssh/sshd_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHDT Template3"),
}
file { '/etc/ssh/ssh_config':
ensure => present,
owner => $owner,
group => $group,
mode => '0644',
backup => false,
content => template("SSHT Template 3"),
}
}
I hope this will help you.
Thanks & Regards,
Sneha More,
NTT DATA GTS, OSS Centre, India (Pune).
On Thursday, September 19, 2013 8:04:38 PM UTC+5:30, John wrote:
>
> How can I accomplish the following in puppet?
>
> If /etc/file1 contains string abc
> then copy SSHTemplate1 to /etc/ssh/ssh_config && copy SSHDTemplate1 to
> /etc/ssh/sshd_config
> else if /etc/file1 contains string xyz
> then copy SSHtemplate2 to /etc/ssh/ssh_config && copy SSHDTemplate2 to
> /etc/ssh/sshd_config
> else copy SSHtemplate3 to /etc/ssh/ssh_config && copy SSHDTemplate3 to
> /etc/ssh/sshd_config
>
> I have to apply this logic multiple operating systems in a Puppet script
>
> So far this is what I have...
>
> class ssh {
> case $::operatingsystem {
> 'AIX': {
> $owner = 'root'
> $group = 'system'
> }
> 'FreeBSD': {
> $owner = 'root'
> $group = 'wheel'
> }
> default: {
> $owner = 'root'
> $group = 'root'
> }
> }
>
> file { '/etc/ssh/sshd_config':
> ensure => present,
> owner => $owner,
> group => $group,
> mode => '0644',
> backup => false,
> content => template("ssh/etc/ssh/sshd_config.erb"),
> }
>
> file { '/etc/ssh/ssh_config':
> ensure => present,
> owner => $owner,
> group => $group,
> mode => '0644',
> backup => false,
> content => template("ssh/etc/ssh/ssh_config.erb"),
> }
>
> file { '/etc/issue.net':
> ensure => present,
> owner => $owner,
> group => $group,
> mode => '0644',
> backup => false,
> content => template("motd/etc/issue.erb"),
> }
> }
>
> Does that look right? And how to add the the conditional logic above to
> this template? Thanks in advance!!
>
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.