Foreman VM-Bereitstellung ohne SSH und DHCP/DNS

Foreman VM-Bereitstellung ohne SSH und DHCP/DNS

Ich versuche, Foreman zu implementieren, damit wir Server für die von uns betreuten Kunden verwalten und bereitstellen können. Ich habe Foreman an einem zentralen Standort installiert und anschließend einen Foreman Smart Proxy in einem der Kundennetzwerke. Alles funktioniert einwandfrei (Remote-Puppet-Agenten können sich mit meinem Smart Proxy verbinden und mein zentraler Foreman-Server kann die Daten sehen), ich möchte nun jedoch neue VMs bereitstellen (über vCenter). Ich habe foreman-vmwaremein Compute-Ressourcenprofil installiert und konfiguriert, einen Eintrag für meine VM-Vorlage erstellt, aber wenn ich über Foreman einen neuen Host erstelle und ihm sage, dass er von meiner Vorlage klonen soll, hängt er sich auf und wartet, bis der Knoten verfügbar ist. Ich nehme an, damit er per SSH eine Verbindung darauf herstellen kann, um die Konfiguration abzuschließen. Mein Problem ist, dass der Foreman-Server keine Verbindung zur neuen VM herstellen kann. Ich hatte gehofft, dass die neue VM (auf der der Puppet-Agent installiert ist) so konfiguriert wäre, dass sie sich mit meinem Smart Proxy verbindet und die Konfiguration auf diese Weise abschließt?

Habe ich einen Fehler gemacht? Kann mir jemand helfen, die für mich richtige Lösung zu entwerfen?

Ich kann im Kundennetzwerk keinen neuen DHCP-, DNS- und TFTP-Server erstellen, da dies zu Störungen bei vorhandenen DHCP- und DNS-Diensten führen kann.

Vielen Dank, Ben

Antwort1

tl;dr: Funktioniert derzeit nicht, die SSH-Bereitstellung kommt vom Foreman-Server.

Wir haben eine ähnliche Konfiguration, bei der wir eine öffentliche/zentralisierte Foreman/Puppet-Instanz haben, mit der wir mehrere „kleine“ Kunden verbinden. In unserem Fall habe ich nicht einmal einen „Smart Proxy“ im Netzwerk des Kunden installiert. Das IT-Personal des Kunden hat mir tatsächlich SSH-Anmeldeinformationen für eine minimale CentOS 6.x-Installation bereitgestellt (tatsächlich wie die Bereitstellung eines Images?). In Foreman habe ich einfach die neue VM als „Bare Metal“ erstellt und dann das Finish-Skript aus der Registerkarte „Vorlagen“ des Bildschirms mit den Hostdetails kopiert und in die VM eingefügt (ich musste VPN verwenden, um per SSH auf den Client-Computer zuzugreifen). In Ihrem Fall könnten Sie wahrscheinlich etwas Ähnliches tun, aber alle „manuellen“ Schritte werden normalerweise missbilligt.

Hier sind einige zufällige Ideen, die mir beim Nachdenken darüber kamen:

  • Vielleicht könnten Sie herausfinden, wie man „Cloud-Init“ verwendet. Dann könnten Sie die VM „bereitstellen“ (ein Skript darauf ausführen), ohne dass der Foreman-Server per SSH darauf zugreifen kann. Ich bin nicht sicher, wie das mit ESXi funktionieren würde, und es würde wahrscheinlich „benutzerdefinierten Code“ erfordern :)

  • Richten Sie vielleicht einen OpenVPN-Server auf dem Foreman-Server ein und richten Sie Ihre Bilder so ein, dass sie automatisch eine VPN-Verbindung zum Foreman-Server herstellen. Das hat den Vorteil, dass Sie Puppet/Foreman nicht dem Internet aussetzen müssen, aber wahrscheinlich wäre auch hier ein benutzerdefinierter Code erforderlich, um die VPN-IP des Hosts für die SSH-Verbindung herauszufinden. Einige Kunden könnten dies auch als Sicherheitslücke betrachten, insbesondere wenn sie versuchen, PCI-kompatibel zu sein.

  • Erstellen Sie ein neues Modul, das eine „SSH via“-Konfiguration zulässt, sodass der Foreman-Server ssh -t viaHost ssh $HOST_ADDRESSwährend des Bereitstellungsprozesses per SSH eine Verbindung zu einem bestimmten Host und dann zur gewünschten Client-IP ( ) herstellt. Wenn Sie diesen Weg einschlagen, können Sie natürlich auch einen Smart-Proxy-Vorgang daraus machen, bei dem statt des Versuchs, per SSH vom Foreman-Server aus zu arbeiten, ein Smart-Proxy darum gebeten wird.

Dies sind alles mögliche Lösungen, aber ich glaube nicht, dass eine davon derzeit funktionieren wird. Es wäre vielleicht eine gute Idee, einige Funktionsanfragen einzureichen unterhttp://projects.theforeman.org/projects/foreman/issues

~Tommy

Antwort2

Pull-Anfrage#3623gegen Nebel, der von Foreman verwendet wird, sollte das Ausführen von Befehlen aus user_dataVorlagen mit einemruncmdEintrag.

verwandte Informationen