Back

Explore Courses Blog Tutorials Interview Questions
+1 vote
2 views
in DevOps and Agile by (29.3k points)

I'm writing some puppet modules and have a package defined in two modules hence get the following error:

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate definition: Package[gnome-session-fallback] is already defined in file /etc/puppet/modules/vnc4server/manifests/init.pp at line 3; cannot redefine at /etc/puppet/modules/vino/manifests/init.pp:7 on node l

Hence want to ensure that the package has not already been defined but the following does not work:

if ! defined ('gnome-session-fallback') {

    package { 'gnome-session-fallback':

        ensure => installed,

    }

}

Can anyone suggest how to fix this, and on the broader scale, what is the "proper" approach to avoiding clashes such as this in modules?

1 Answer

+1 vote
by (50.2k points)

For this question, you are missing a Package[] inside defined(). The correct way to do it:

if ! defined(Package['gnome-session-fallback']) {

    package { 'gnome-session-fallback':

        ensure => installed,

    }

}

Related questions

Browse Categories

...