Eine Funktionsanforderung: Die Möglichkeit, den sekundären Instance-Typ anzugeben, wenn der Fehler "Es ist keine Spot-Kapazität verfügbar, die Ihrer Anforderung entspricht", Code: 'InsufficientInstanceCapacity'.
Ich denke, wir könnten eine Fallback-Startvorlage mit einem anderen Instance-Typ haben oder InstanceType
in der aktuellen Startvorlage überschreiben, falls AWS mit dem Fehler 'InsufficientInstanceCapacity' antwortet.
Ja, wir hatten das gleiche Problem und unsere Idee war, dasselbe zu tun. Arbeitet schon jemand daran?
Hier ist ein WIP für diese Idee - https://github.com/Kostiantyn-Vorobiov/terraform-aws-github-runner/pull/1 (nicht in der realen Umgebung getestet)
Irgendwelche Gedanken? Ich bin kein TS-Typ @gertjanmaas , @npalm
Hallo @Kostiantyn-Vorobiov.
Die Idee gefällt mir richtig gut. Ich glaube nicht, dass die Implementierung funktionieren wird, weil wir EC2 Launch Templates verwenden. Soweit ich weiß, mischen sich die Optionen für Startvorlagen und die Optionen für den Instanztyp nicht im runInstances
Aufruf.
Anstatt den Instanztyp zu ändern, könnten wir also eine zweite Startvorlage in Terraform erstellen und launchTemplateName
und launchTemplateVersion
bei einem InsufficientInstanceCapacity
Fehler in die sekundäre Vorlage ändern. Siehe Terraform-Code hier: https://github.com/philips-labs/terraform-aws-github-runner/blob/8ed8a8491298d5023f37b207e432e92129183adc/modules/runners/main.tf#L36
@npalm wie hört sich das für dich an?
Laut Dokumentation -
"LaunchTemplate — (Karte) -
Die zum Starten der Instanzen zu verwendende Startvorlage. Alle Parameter, die Sie in RunInstances angeben, überschreiben dieselben Parameter in der Startvorlage."
Es besteht also die Möglichkeit, dass es auf diese Weise funktioniert. Aber die zweite Startvorlage könnte auch gut funktionieren.
Außerdem gibt es eine robustere Lösung mit Spot-Flottenanfragen. Aber das erfordert viele Veränderungen.
In diesem Fall sollte das Überschreiben der richtige Weg sein
Link zu Dokumenten: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html
@Kostiantyn-Vorobiov öffne gerne einen Entwurf (WIP) PR
Hilfreichster Kommentar
Laut Dokumentation -
"LaunchTemplate — (Karte) -
Die zum Starten der Instanzen zu verwendende Startvorlage. Alle Parameter, die Sie in RunInstances angeben, überschreiben dieselben Parameter in der Startvorlage."
Es besteht also die Möglichkeit, dass es auf diese Weise funktioniert. Aber die zweite Startvorlage könnte auch gut funktionieren.
Außerdem gibt es eine robustere Lösung mit Spot-Flottenanfragen. Aber das erfordert viele Veränderungen.