Primäres Ziel ist es, alle Marionettenmodule automatisch hinzuzufügen, so dass alle dev-env und prod-env mit einem Befehl gestartet werden können. Wie kann ich Marionettenmodule durch Marionettenmanifest installieren?Kann ich Marionettenmodule über Marionettenmanifest installieren?
Antwort
Wir haben glücklich librarian-puppet verwendet, um alle 3rd-Party-Module zu synchronisieren, unterstützt die Einstellung der Standorte und Versionen der Module. So laufen in Produktion und Entwicklung genau derselbe Code. Die Nutzung ist ein Liner
librarian-puppet install
In anderen Fällen wir einen Shell-Skript, das Marionette zwei Mal ausgeführt wird, einmal ein minimales Modul, das zum Abrufen der benötigten Module und dann der ausgewachsene Puppe Fluss nur dann verantwortlich, wenn Alle Module sind verfügbar.
Scheint, dass Schreibmodul für die Installation von Marionettenmodule möglich ist - es wird nur Wrapper für puppet module
Werkzeug sein. Jedoch habe ich über solches Modul noch nicht erfahren.
Ich nehme an, dass dieser Mechanismus der Installation nicht populär ist, weil Sie häufig das installierte Modul ändern müssen, tun Sie einige Anpassungen. Praktisches Werkzeug für die Verwaltung solcher Änderungen ist Versionskontrollsystem. Zum Beispiel, in unserem Team behalten wir /etc/puppetlabs/puppet
Verzeichnis in git repostitory. Nach der Installation eines beliebigen Moduls von Puppet Forge fügen wir seine Dateien der Versionskontrolle hinzu und schieben sie auf den Remote-Git-Server. Unsere intern entwickelten Module werden ebenfalls in diesem Repository aufbewahrt. Auf diese Weise werden mehrere Puppet-Master (Dev- und Prod-Umgebungen) mit diesem zentralen Repository synchronisiert und haben immer aktuelle Versionen aller Module.
Die "Puppet module" type and provider tut genau das:
module { 'author/mymodule':
ensure => present,
}
module { 'puppetlabs/stdlib':
ensure => '2.6.0',
}
module { 'puppetlabs/stdlib':
ensure => present,
modulepath => '/etc/puppet/modules',
}
Neuere Versionen von Puppet auch einen puppet module
Befehl haben, dass Sie beliebigen Puppet Module aus dem Puppet forge, beispielsweise installieren kann:
$ puppet module install rcoleman/puppet_module
Notice: Preparing to install into /home/anarcat/.puppet/modules ...
Notice: Created target directory /home/anarcat/.puppet/modules
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/home/anarcat/.puppet/modules
└── rcoleman-puppet_module (v0.0.3)
Andere Alternativen beinhalten :
- librarian
- r10k (cited als Ersatz für Bibliothekar), unterstützt dynamische Umgebungen und vieles mehr
R10K ist jetzt Teil von Puppet Entreprise 2.015,03, so kann es sicherlich am besten Praxis in Betracht gezogen werden.
Das sieht einfach und großartig aus, hat aber [Probleme] (https://github.com/ryanycoleman/puppet_module_provider/issues/4) mit einer neueren Version der Marionette – vikas027
@ vikas027 Ich habe andere Optionen hinzugefügt, die jetzt verfügbar sind, einschließlich des Befehls 'puppet module' und legen eine stärkere Betonung auf r10k. – anarcat
Bestätigen, vermeiden 'rcoleman/puppet_module' aufgrund von Problemen – alekwisnia
Ich tat dies, und es schien,
exec { 'puppet-fstab':
path => '/bin:/usr/bin',
command => 'puppet module install -i /usr/share/puppet/modules/AlexCline-fstab >>/tmp/err.log',
}
Natürlich werde ich nur feststellen, dass direkt nachdem ich dies zur Arbeit gebracht habe, erkannte ich, dass Marionette in" mount "eingebaut hat, was tut, was ich wollte, also habe ich dieses Modul entfernt , aber hoffentlich zeigt dieser andere jemanden in die richtige Richtung. –
Hier ist ein Beispiel von mir zu arbeiten:
$module_stdlib = 'puppetlabs-stdlib'
exec { 'puppet_module_stdlib':
command => "puppet module install ${module_stdlib}",
unless => "puppet module list | grep ${module_stdlib}",
path => ['/bin', '/opt/puppetlabs/bin']
}
Wo $ module_stdlib ein Modul I zu installieren whant zu. Der Pfad /bin
ist ein Pfad, von dem die grep
stammt. Und die /opt/puppetlabs/bin
ist ein Pfad, wo für die Puppe Binär in meiner Installation existiert.
Dies funktioniert, aber seien Sie vorsichtig mit Anführungszeichen und Bindestrichen! –
- 1. Marionettenmanifest - 'Sudo' Befehle?
- 2. Wie schließe ich eine Datei mit einem Marionettenmanifest ein?
- 3. Warum kann ich Rails nicht über die Windows-Befehlszeile installieren?
- 4. Kann gfortran nicht über Homebrew installieren
- 5. CentOS kann nodejs nicht über yum installieren
- 6. Ich kann keine Büroklammer installieren
- 7. Kann ich R automatisch installieren?
- 8. kann ich installieren iconv nicht
- 9. Apache über Ansible installieren
- 10. NPM - Ich kann socket.IO nicht installieren
- 11. Warum kann ich googleapis nicht installieren?
- 12. Warum kann ich socket.io nicht installieren?
- 13. Installieren von Realm über CocoaPods
- 14. MoPub installieren AdMob über CocoaPods
- 15. Kann Cocoapods nicht installieren, Bericht über Pod-Setup
- 16. Kann php7.0-fpm nicht über ppa installieren: ondrej/php
- 17. Kann nicht installieren rpy2 über Pip in MAC OS
- 18. Kann mcrypt nicht über Homebrew OSX installieren Yosemite
- 19. Wie kann man die Module über die Anforderungsdatei installieren?
- 20. kann ich cruisecontrol.rb in heroku installieren?
- 21. Ich kann mein Paket nicht installieren
- 22. Ich kann gcc48 nicht mit Homebrew installieren
- 23. Wie kann ich Curl unter Linux installieren?
- 24. Wie kann ich mit conda installieren pydotplus
- 25. Ich kann Boto nicht in Python3 installieren
- 26. Wie kann ich SQL Server Instanzen installieren?
- 27. Wie kann ich Skriptverteilungen von CPAN installieren?
- 28. Kann ich Xcode 6 auf Mavericks installieren?
- 29. Wie kann ich paramiko Modul installieren?
- 30. Wie kann ich ein lokales Juwel installieren?
Ich kann diesen Modulzweck immer noch nicht verstehen. installiert Librarian auch Puppet-Module, nicht nur benutzerdefinierte? Wenn Sie Submodule von git verwenden, können Sie alle mit einem Befehl aktualisieren? Standard-Marionettenmodule installieren Ich habe gerade install-me.sh-Skript erstellt.Ich möchte einfach die Checkout & Run-Methode, ohne zusätzlichen Aufwand. – holms
ok das ist also im Grunde das gleiche wie Bibliothekar-Chef. Ich bin zum Chef migriert, aber Ihre Antwort ist immer noch gültig – holms
es scheint mir, dass dies nicht wirklich die ursprüngliche Frage beantwortet, wie das Modul * nicht * vom Puppet-Client installiert, sondern von einem Drittanbieter-Tool. Daher müssen Benutzer zuerst diese Bibliothek installieren, und Sie können das nicht mit Puppet installieren! Die beste Lösung wäre etwas, das in den Puppet-Client selbst eingebaut wird ... – anarcat