2015-05-15 18 views
5

Ho un modulo fantoccio che utilizza gini-archive. Recentemente ho cambiato il mio modulo in base a biemond-wildfly, che dipende da nanliu-archive.Come si gestiscono i moduli puppet con le classi con lo stesso nome?

Tuttavia, non è possibile installare l'archivio nanliu, poiché entrambi questi moduli di archivio vengono installati in una directory denominata archive. Questo, credo, viola i requisiti del modulo puppet, poiché entrambi dovrebbero essere installati nelle directory chiamate <username>-archive.

Tuttavia, anche se li inserisco in directory diverse, ho ancora un problema. Entrambe le classi sono chiamate archive (in realtà una è una classe e una è una definizione, ma non penso che sia troppo importante in questo momento), quindi quando il mio modulo dice include archive, burattino non saprà quale voglio.

Nota Ho uno sfondo java in cui ogni classe si trova in una gerarchia di pacchetti che impedisce questo tipo di problemi, ma non riesco a vedere alcun equivalente per puppet.

So che avrei potuto avere un intero carico di moduli differenti directory (/etc/puppet/modules, /etc/puppet/modules2 ecc), ma burattino sembra ancora di guardare attraverso questi in ordine, il che significa che sarà sempre caricare la classe archive dalla prima directory modulo nella lista .

C'è un modo per risolvere questo o ho raggiunto il limite di ciò che può fare il burattino? Preferirei non dover sborsare ogni singolo modulo e modificare i nomi delle classi, che sembra sconfiggere il punto della fucina.

Grazie.

risposta

2

Il nome della directory in cui si trova il modulo deve essere archive, il nome utente viene utilizzato solo allo scopo di distribuire e imballare i moduli ma non viene utilizzato da puppet durante l'autoloading. Fondamentalmente, quello che stai vedendo è corretto.

Sembra esserci due modi di gestire questo:

  1. Forcella uno dei due moduli di archivio e rinominare il modulo in modo che non si scontrano
  2. Forcella uno dei moduli utilizzando i moduli di archivio e migrarlo per utilizzare lo stesso modulo di archivio dell'altro. Poiché i due moduli di archivio fanno quasi la stessa cosa, preferisco questo metodo.
+0

Ho la sensazione che questa risposta è corretta, ma fa troppo male ad accettare come vero. – 7yl4r

0

Ho appena fatto questo in modo ho intenzione espandere un po 'in opzione (1) in @ di ChrisPitman risposta includendo ulteriori dettagli utilizzando un modulo ho appena biforcato & rinominato come esempio.

(Sfortunatamente) la soluzione più semplice è quella di inserire uno dei moduli e rinominarlo. Di seguito è un esempio utilizzando e thias/selinux che hanno una collisione di spazio dei nomi a selinux. sono state adottate le seguenti misure di ri-namespace del modulo thias/selinux nel namespace selinux_thias:

  1. Forcella del modulo. In questo esempio ho creato USF-IMaRS/puppet-selinux da thias/puppet-selinux.
  2. Installare il modulo in modules/$NEW_NAME. Usando i sottomoduli git questo è: git submodule add https://github.com/USF-IMARS/puppet-selinux modules/selinux_thias
  3. rinominare le classi del modulo.Here è un commit che dimostra come questo sia sostanzialmente.
  4. modificare moduli usando thias/selinux di utilizzare nuovo nome selinux_thias anziché selinux.