Überprüfen Sie, ob Vagrant Provisioning durchgeführt wurde

7

Ich verwende Vagrant, um VMs für die Entwicklung bereitzustellen. Eine der Voraussetzungen ist, dass vagrant provision einen neuen Benutzer erstellt (getan in einem Provisionierungsskript, das ich geschrieben habe) und dann vagrant ssh mit diesem Benutzer verbindet.

Ich kann nicht herausfinden, wie ich feststellen kann, ob die Box bereitgestellt wurde oder nicht.

Ich sehe, dass die Vagrant-Bereitstellung einen Code enthält setzt env[:provision_enabled] , wenn dieser Lauf eine Provisionierung durchführen soll, also dachte ich, ich könnte so etwas machen:

%Vor%

Die Idee ist, dass SSH-Verbindungen für die Bereitstellung eine Verbindung und SSH-Verbindungen für alle anderen die andere verwenden würden.

env[:provision_enabled] scheint jedoch in Vagrantfile nicht verfügbar zu sein.

Gibt es eine Möglichkeit, dies zu tun?

    
Moshe Katz 20.07.2014, 22:46
quelle

4 Antworten

7
___ qstnhdr ___ Überprüfen Sie, ob Vagrant Provisioning durchgeführt wurde ___ answer24857447 ​​___

Dies scheint durch die action_provision -Datei im Vagrant-Datenverzeichnis ( .vagrant/ ) bestimmt zu sein. Es befindet sich normalerweise im selben Ordner wie Ihr Vagrantfile .

Eine rohe Problemumgehung wäre also, den ssh-Benutzernamen in Ihrer Vagrant-Datei abhängig davon festzulegen, ob die Datei existiert oder nicht. Ich konnte das zwar nicht testen, aber wenn Sie nur die Datei action_provision umbenennen oder entfernen und vagrant reload gehen, sollte sie erneut bereitgestellt werden.

    
___ answer38203497 ___

Also für diejenigen, die bereit sind, %code% code Anweisungen zu verwenden, ist hier eine Funktion, die prüft, ob VM bereitgestellt wurde und Verwendungsbeispiel:

%Vor%
  

Warnung! Es ist Hackery-Methode mit %code% -Datei Existenz zu überprüfen.   Aber es funktioniert und zum Zeitpunkt der Veröffentlichung gibt es keine anderen guten Möglichkeiten.

    
___ answer35235276 ___

BEARBEITEN

War zu schnell, um zu antworten, ohne es vorher auszuprobieren. Der Code im unten stehenden Link funktioniert möglicherweise in früheren Versionen, in Version 1.7.2 funktioniert er jedoch nicht. Sie müssen es ein wenig zwicken:

%Vor%

ursprüngliche Antwort unten

Ich bin hier auf der Suche nach einer Antwort auf die gleiche Frage gewesen, aber keine der existierenden war ziemlich befriedigend, also fand ich mit ein bisschen mehr Graben this Kommentar zu Github darüber, wie Sie Ihre Anforderungen erfüllen können:

%Vor%

Sie überprüfen nur, ob der von Ihnen ausgegebene vagrant -Befehl %code% ist, dann wird der von Ihnen angegebene Benutzername verwendet.

    
___ qstntxt ___

Ich verwende Vagrant, um VMs für die Entwicklung bereitzustellen. Eine der Voraussetzungen ist, dass %code% einen neuen Benutzer erstellt (getan in einem Provisionierungsskript, das ich geschrieben habe) und dann %code% mit diesem Benutzer verbindet.

Ich kann nicht herausfinden, wie ich feststellen kann, ob die Box bereitgestellt wurde oder nicht.

Ich sehe, dass die Vagrant-Bereitstellung einen Code enthält setzt %code% , wenn dieser Lauf eine Provisionierung durchführen soll, also dachte ich, ich könnte so etwas machen:

%Vor%

Die Idee ist, dass SSH-Verbindungen für die Bereitstellung eine Verbindung und SSH-Verbindungen für alle anderen die andere verwenden würden.

%code% scheint jedoch in %code% nicht verfügbar zu sein.

Gibt es eine Möglichkeit, dies zu tun?

    
___ answer24855698 ___

Ich finde keinen einfachen Weg, dies zu tun. Klingt wie die einfachste Lösung wäre, das Bereitstellungsergebnis zu überprüfen, d. H., Können Sie sich mit dem Benutzer anmelden, der nach der Bereitstellung erstellt wurde?

Eine weitere Möglichkeit wäre, %code% immer auszuführen, um sicherzustellen, dass sich die Box in einem Bereitstellungszustand befindet, bevor Sie fortfahren.

    
___
Jahaja 21.07.2014, 03:46
quelle
9

Also für diejenigen, die bereit sind, Vagrantfile code Anweisungen zu verwenden, ist hier eine Funktion, die prüft, ob VM bereitgestellt wurde und Verwendungsbeispiel:

%Vor%
  

Warnung! Es ist Hackery-Methode mit action_provision -Datei Existenz zu überprüfen.   Aber es funktioniert und zum Zeitpunkt der Veröffentlichung gibt es keine anderen guten Möglichkeiten.

    
arma 05.07.2016 12:29
quelle
2

BEARBEITEN

War zu schnell, um zu antworten, ohne es vorher auszuprobieren. Der Code im unten stehenden Link funktioniert möglicherweise in früheren Versionen, in Version 1.7.2 funktioniert er jedoch nicht. Sie müssen es ein wenig zwicken:

%Vor%

ursprüngliche Antwort unten

Ich bin hier auf der Suche nach einer Antwort auf die gleiche Frage gewesen, aber keine der existierenden war ziemlich befriedigend, also fand ich mit ein bisschen mehr Graben this Kommentar zu Github darüber, wie Sie Ihre Anforderungen erfüllen können:

%Vor%

Sie überprüfen nur, ob der von Ihnen ausgegebene vagrant -Befehl ssh ist, dann wird der von Ihnen angegebene Benutzername verwendet.

    
Sakis Vtdk 05.02.2016 23:26
quelle
1

Ich finde keinen einfachen Weg, dies zu tun. Klingt wie die einfachste Lösung wäre, das Bereitstellungsergebnis zu überprüfen, d. H., Können Sie sich mit dem Benutzer anmelden, der nach der Bereitstellung erstellt wurde?

Eine weitere Möglichkeit wäre, vagrant reload --provision immer auszuführen, um sicherzustellen, dass sich die Box in einem Bereitstellungszustand befindet, bevor Sie fortfahren.

    
Andy 20.07.2014 22:57
quelle

Tags und Links