Puppet class inheritance confusion
- by EMiller
I've read the documentation on scope, but I'm still having trouble working this out. I've got two environments that are very similar - so I've got:
modules/django-env/manifests/init.pp
class django-env {
package { "python26":
ensure => installed
}
# etc ...
}
import "er.pp"
modules/django-env/manifests/er.pp
$venvname = "er"
$venvpath = "/home/django/virtualenvs"
class er {
file { "$venvpath/$venvname" :
ensure => directory
}
# etc ...
}
class er-dev {
include er
}
class er-bce-dev {
$venvname = "er-bce"
include er
}
manifests/modules.pp
import "django-env"
manifests/nodes.pp
node default {
# etc ...
}
node 'centos-dev' imports default {
include django-env
include er-bce-dev
include er-dev
}
The result here is that the "inheritance" works - but only the first "er-" item under the 'centos-dev' node is acted upon, I either get er-bce-dev or er-dev, but not both. There must be some basic thing I'm misunderstanding here.
Is it the difference between import and include ? (not sure I understand that)