Ich verwende AWS CodeCommit, das wie eine abgespeckte Version von git aussieht.
Wenn alle diese EC2-Instanzen das gleiche Rollen-Tag haben, wie bewerkstellige ich das?
Ich möchte nichts Besonderes machen, ich möchte nur ein Tag angeben, auf eine Schaltfläche klicken und alle EC2-Instanzen mit diesem Tag für CodeCommit abrufen. Ich möchte dies von meinem lokalen Rechner aus tun.
Ich weiß, dass ich die SSH-Schlüssel verwenden muss, um CodeCommit auf jedem meiner EC2-Server zu öffnen und git auf jedem von ihnen zu installieren (ich backe dies in einem AMI). Ich bin nur nicht sicher, wie man jede der EC2-Maschinen "triggert", um einen git pull zu machen? Gibt es einen AWS-Befehl?
Ich bin kein Entwickler und kenne nur Linux und PHP.
Bei EC2-Instanzen, die mit einer IAM-Rolle gestartet werden, müssen Sie nicht einmal in SSH-Schlüsseln backen. Git kann CodeCommit-Anmeldeinformationen von den Metadaten der EC2-Instanz abrufen. Bake ein Linux-basiertes AMI mit dem neuesten AWS CLI-Paket und den folgenden Zeilen in ~ / .gitconfig:
%Vor%Starten Sie die Instanz, an die eine IAM-Rolle angehängt ist. Anschließend können Sie den CodeCommit-Repo ohne weitere Einrichtung klonen.
Vielleicht möchten Sie in Capistrano und schauen Capify-EC2 , wenn Sie git-Befehle in einer ganzen Reihe von EC2-Instanzen basierend auf Tags ausführen möchten.
Aktualisiert: Wenn Sie AWS OpsWorks für die Bereitstellung über CodeCommit verwenden möchten, gibt es eine aktuellen Blog-Artikel darüber, wie man das macht. Sie können OpsWorks auch zu Ausführen beliebiger Befehle über Instanzen mit Capistrano.
Am ehesten erreichen Sie mit den verwalteten Diensten von AWS CodeDeploy . Damit können Sie die Bereitstellung in EC2 -Instanzen über die Befehlszeile oder die Webkonsole koordinieren. Aber CodeDeploy zieht bisher nur Artefakte von S3 oder GitHub . Inzwischen scheint CodeCommit vollständig von anderen verwandten Amazon-Diensten isoliert zu sein, wie CodePipeline und < em> CodeDeploy , also scheint es keine gute Wahl zu sein. Aber, natürlich, Amazon Roadmap ist es, alle sie zu integrieren (nicht tun, wäre dies sinnlos). Also, jetzt wäre es besser, GitHub als CodeCommit zu verwenden.
Wenn Sie jedoch nicht GitHub verwenden, benötigen Sie eine CI (kontinuierliche Integration) -Lösung zwischen Ihrem Repository und CodeDeploy , die Sie ziehen Code aus der Quelle, möglicherweise Tests erstellen oder ausführen, schieben Sie es auf S3 und sagen CodeDeploy darüber. Es gibt zum Beispiel CodeShip , das dies ermöglicht und in viele externe Dienste integriert werden kann. Oder du könntest sogar deinen eigenen CI Server haben, wie Jenkins , der das macht "kleben" Rolle für Sie. (Jenkins wird wahrscheinlich das flexibelste sein, weil es Open-Source ist und Plugins für alles haben kann.)
Wenn Sie also ein wenig aufschlüsseln, wäre Ihr Arbeitsablauf ungefähr so:
( CodeDeploy setzt den Code eigentlich nicht in EC2 -Instanzen um. Stattdessen muss jede EC2 -Instanz einen Agenten ausführen, der regelmäßig
Die "sauberste" AWS-Lösung wäre CodeCommit - & gt; CodePipeline - & gt; CodeDeploy oder nur CodeCommit - & gt; CodeDeploy , aber diese Dienste sind noch nicht vollständig integriert.
In Ihrem Fall wäre die einfachste und praktikabelste Lösung jetzt Github - & gt; CodeDeploy Alles andere erfordert einige Zwischenschritte, wie die Beispiele, die ich zur Verfügung gestellt habe ( CodeShip , Jenkins , usw.).
Tags und Links git amazon-web-services amazon-ec2 aws-codecommit