Overview
I just started using Puppet and have been unable to suss something.
Problem
Because of normalization, when I add two classes to a node with packages that have the same dependencies it fails.
In simple terms have duplicate resources – in this case the package libssl
.
Note: packages are being held to prevent latest packages being installed.
Question
What's the best practice way to get round this?
class ssh {
package { 'openssh-server':
ensure => installed,
require => Package['libssl'],
}
package { 'libssl': ensure => installed, }
}
class apache {
package { 'apache':
ensure => installed,
require => Package['libssl'],
}
package { 'libssl': ensure => installed, }
}
node server {
include apache
include openssl-server
Best Answer
You have two choices that are going to look almost the same.
1: make it it's own class.
2: virtual resource
I find it better to break dependencies out into their own modules rather than use virtual resources.