Ask Your Question
2

Duplicate declaration error occured, even if I use ensure_resource.

asked 2013-08-04 19:49:45 -0500

cynipe gravatar image

updated 2013-08-04 19:52:14 -0500

I'm wondering that why duplicate declaration error occured.

Suppose I have following statements which could be solve a duplication error:

if ! defined(Package['libxslt']) {
   package {'libxslt': ensure => present, }
}

or

include stdlib
ensure_packages(['libxslt'])

Then, include class that contains package libxslt.

Any idea?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2013-08-07 06:31:01 -0500

nibalizer gravatar image

updated 2013-08-07 06:41:01 -0500

What you're essentially doing here is trying to use the defined() function to evade duplicate definition errors. This kind of check-first, then-do programming isn't going to work very well in Puppet because evaluation order in Puppet is random.

What you're actually trying to do, I think, is to manage packages on your system. Specifically, you want to manage trivial packages. That is, packages that don't have to be installed in any order, no special options, no dependent resources. Everyone eventually ends up here, it seems. There are just long-ish lists of packages that you want to ... (more)

edit flag offensive delete link more

Comments

sorry for being late, and thank you very much for your detailed explanation. I will look into puppet-module-singleton. Thank you!!

cynipe gravatar imagecynipe ( 2013-08-29 03:15:24 -0500 )edit

edit: didn't read the question first, only the answer. Most of this comment is irrelevant. Carry on, nothing to see here. :-). This is exactly what I was looking for ...(more)

reidmv gravatar imagereidmv ( 2014-01-07 11:34:55 -0500 )edit

Unless I'm missing something here, doesn't the singleton option require that all modules on the system use the singleton module? My initial experimentation seems to indicate that. I ...(more)

mfrisch@univa.com gravatar imagemfrisch@univa.com ( 2014-02-07 13:04:35 -0500 )edit
1

answered 2013-08-06 21:52:54 -0500

GregLarkin gravatar image

Please check the reference for the defined function here. In particular, the documentation states:

Resource declarations are checked using resource references, e.g. defined( File['/tmp/myfile'] ). Checking whether a given resource has been declared is, unfortunately, dependent on the parse order of the configuration...

The example given in the documentation is almost identical to the code that you posted.

Is there a reason why you can't simply centralize the use of ensure_packages in a single manifest and include once?

edit flag offensive delete link more

Comments

sorry for being late. Because, conflicting occurred between my module and other module.

cynipe gravatar imagecynipe ( 2013-08-29 03:13:29 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2013-08-04 19:49:45 -0500

Seen: 3,864 times

Last updated: Aug 07 '13