working aws codedeploy devops tool
podwójnie połączona implementacja list w java
Samouczek na temat automatycznego wdrażania przy użyciu AWS CodeDeploy:
W Część 2 narzędzi AWS DevOps , widzieliśmy, jak usługa CodeBuild została użyta do zbudowania projektu J2EE przy użyciu Maven.
W tym samouczku zobaczymy, jak plik WAR artefaktu przechowywany w zasobniku S3 może zostać użyty do wdrożenia na serwerze aplikacji Tomcat przy użyciu usługi CodeDeploy.
Sprawdź => Idealny przewodnik po szkoleniach DevOps
AWS CodeDeploy to usługa wdrożeniowa, która automatyzuje wdrażanie aplikacji w instancjach Amazon EC2 Linux lub Windows.
W tym samouczku wyjaśniono również, jak można zintegrować Jenkins z CodeDeploy.
Warunek wstępny:
- Konto w AWS najlepiej na darmowym poziomie.
- Dobre i szybkie łącze internetowe.
- Używany region AWS - Azja i Pacyfik (Singapur).
- Instancja Amazon Linux lub RHEL EC2.
- Tomcat zainstalowany na instancji EC2.
Uwaga: W celu wdrożenia zawartości repozytorium AWS CodeCommit nie jest obsługiwane przez usługę CodeDeploy. Obsługiwane są tylko S3 i GitHub.
Czego się nauczysz:
- Skonfiguruj CodeDeploy
- Uruchom instancję Amazon Linux EC2
- Integracja AWS CodeDeploy z S3
- Utwórz aplikację CodeDeploy
- Integracja Jenkinsa z AWS CodeDeploy
- Wniosek
- rekomendowane lektury
Skonfiguruj CodeDeploy
AWS CodeDeploy będzie musiało działać, a mianowicie z dwoma podmiotami, aby uzyskać dostęp do instancji EC2 i zasobnika S3, w którym przechowywane są artefakty (plik WAR) do wdrożenia. Aby nadać usłudze CodeDeploy uprawnienia dostępu do tych uprawnień, należy skonfigurować role. Role IAM nie są zdefiniowane dla użytkowników IAM, ale mają oni dostęp tylko do encji.
# 1) Utwórz plik pierwsza rola aby usługa CodeDeploy miała dostęp do instancji EC2.
Uruchom IAM i kliknij Role-> Utwórz rolę.
Pod Usługa AWS Kliknij EC2 -> Wybierz swój przypadek użycia -> EC2 i kliknij Dalej-> Uprawnienia.
Wybierz AWSCodeDeployRole w obszarze Nazwa zasady i kliknij Dalej-> Recenzja.
Wpisz nazwę roli i kliknij Utwórz rolę.
Na koniec edytuj relację zaufania dla tej roli, aby upewnić się, że usługa CodeDeploy jest dostępna ogólnie lub w określonych regionach / punktach końcowych.
Kliknij rolę i zaktualizuj relację zaufania, jak pokazano poniżej.
W polityce zmień EC2 na Codedeploy i kliknij Zaktualizuj zasady zaufania.
dwa) Utwórz plik druga rola dla instancji EC2 przy użyciu usługi CodeDeploy w celu uzyskania dostępu do zasobnika S3.
Powtórz powyższe kroki dla tej roli i wprowadź poniżej:
- Iść do IAM -> Role -> Utwórz rolę.
- W usłudze AWS wybierz EC2.
- Pod tym Wybierz ponownie swój przypadek użycia i kliknij EC2, a następnie kliknij przycisk Dalej-> Uprawnienia.
- Na ekranie zasad uprawnień do dołączania wybierz AmazonS3ReadOnlyAccess i kliknij przycisk Dalej-> Recenzja.
- Nazwij rolę HW-Codedeploy-EC2-S3 i kliknij Utwórz rolę.
Obie role powinny być teraz dostępne.
Uruchom instancję Amazon Linux EC2
W tej sekcji udostępniamy teraz instancję EC2.
Podczas udostępniania instancji wybierz rolę HW-Codedeploy-EC2-S3 podczas Skonfiguruj szczegóły instancji krok. Upewnij się również, że otwarty port 8080.
Wraz z tym będziemy musieli również zainstalować Agent CodeDeploy i Tomcat jako serwer aplikacji, na którym zostanie wdrożona nasza aplikacja.
# 1) Zainstaluj i skonfiguruj agenta CodeDeploy w instancji Amazon Linux
Agent CodeDeploy pomaga we wdrożeniach i musi być zainstalowany w każdej instancji (środowiskach), w których zostanie wykonane wdrożenie.
Zaloguj się do instancji systemu Linux i pobierz agenta zgodnie z używanym regionem. W naszym przypadku jest to region Singapuru, w którym znajduje się identyfikator ap-południowy wschód-1.
Polecenie pobrania agenta byłoby w formacie:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Zainstaluj Tomcat na instancji EC2
- Aby zainstalować i uruchomić Tomcat, wykonaj następujące kroki w podanej kolejności.
mniam zainstaluj tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Włącz użytkownika tomcat dla menedżera aplikacji. Wprowadź zmiany, jak pokazano w pliku /etc/tomcat7/tomcat-users.xml
- Na koniec uruchom usługę Tomcat.
usługa tomcat7 start
- Uruchomić Menedżer aplikacji internetowych Tomcat i sprawdź, czy działa, korzystając z adresu URL http: //: 8080 / manager
Integracja AWS CodeDeploy z S3
Jak wspomniano w części 2, CodeDeploy obsługuje tylko S3 i GitHub jako repozytorium kodu, które jest używane do wdrażania najnowszych wersji aplikacji. Ponieważ nasz plik WAR aplikacji jest przechowywany w zasobniku S3, musimy upewnić się, że utrzymywany format to plik ZIP.
Oznacza to, że plik WAR powinien znajdować się w pliku ZIP, który jest obsługiwany przez proces wdrażania przy użyciu CodeDeploy.
- AWS CLI (interfejs wiersza poleceń) również musi być zainstalowany w instancji Linux. Proszę odnieść się do URL żeby zainstalować.
- Wykonaj następujące kroki w instancji systemu Linux, aby pobrać WAR z zasobnika S3. Poniższe kroki należy zwykle wykonać na komputerze kompilacji.
ustaw AWS_ACCESS_KEY_ID =
ustaw AWS_SECRET_ACCESS_KEY =
najlepsze oprogramowanie do zdalnego pulpitu dla systemu Windows
ustaw AWS_DEFAULT_REGION = ap-południowy-wschód-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy używa pliku appspec.yml plik zawierający instrukcje wdrażania dla instancji EC2. Ten plik musi znajdować się w katalogu głównym folderu, do którego pobierany jest plik WAR aplikacji.
Utwórz plik appspec.yml i folder scripts, jak pokazano poniżej:
Podczas wdrażania zdarzenia są uruchamiane w następującej kolejności.
# 1) ApplicationStop
# 2) Przed instalacją
# 3) Zainstaluj (wywoływana jest sekcja plików i kopiowany plik WAR)
# 4) ApplicationStart
- Używana hierarchia folderów to
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
skrypty
start_application
stop_application
uninstall_war_file
- Zawartość skryptów
stop_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
uninstall_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- Spakuj zawartość i prześlij plik ZIP do zasobnika S3. Upewnij się, że WERSJA jest włączona w zasobniku.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war skrypty appspec.yml
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Plik ZIP przesłany do zasobnika S3 jest widoczny na poniższym ekranie:
Zamiast uruchamiać polecenia jeden po drugim, można utworzyć skrypt wykonywalny i dodać do niego powyższe polecenia oraz uruchamiać go za każdym razem, gdy z kompilacji dostępny jest nowy plik WAR aplikacji.
Utwórz aplikację CodeDeploy
Aplikacja CodeDeploy jest tworzona w celu zapewnienia, że właściwa wersja pliku WAR jest wdrażana w odpowiednim środowisku, jakim jest instancja EC2.
Uruchom usługę CodeDeploy i kliknij plik Utwórz aplikację przycisk.
java, która przyjmuje tablicę
Wprowadź nazwę aplikacji, grupę wdrożeń ( Przykład: QA-Env) i wybierz uruchomione instancje EC2.
Na końcu formularza wybierz rolę usługi. To jest druga rola, która została utworzona wcześniej w samouczku.
Kliknij na Utwórz aplikację przycisk.
Wybierz grupę wdrażania (QA-Env) i wybierz Działania -> Wdróż nową wersję.
Ponieważ plik ZIP znajduje się w zasobniku S3, wprowadź lokalizację wersji w następujący sposób:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Kliknij na Rozmieścić przycisk. Wdrożenie powiodło się, jak pokazano poniżej.
Plik WAR został pomyślnie skopiowany do katalogu Tomcat webapps.
Przejrzyj adres URL aplikacji, aby upewnić się, że aplikacja została pomyślnie wdrożona.
Integracja Jenkins z AWS CodeDeploy
Jak widzieliśmy w poprzednich 2 samouczkach, Jenkins bardzo dobrze integruje się z narzędziami AWS DevOps. Aby zintegrować Jenkins z CodeDeploy, należy zainstalować wtyczkę. Kliknij tutaj aby pobrać i zainstalować wtyczkę CodeDeploy.
Najpierw wprowadź dostęp i tajny klucz dla użytkownika IAM w Jenkins -> Konfiguracja .
Wniosek
Do tej pory widzieliśmy, jak można wykorzystać CodeDeploy do zautomatyzowania wdrażania pliku WAR aplikacji J2EE przechowywanego w zasobniku S3 w instancji EC2, na której działa serwer aplikacji Tomcat.
Seria tych trzech narzędzi, czyli CodeCommit, CodeBuild i CodeDeploy, pomaga w aspektach ciągłej integracji i ciągłego dostarczania DevOps. Wraz z tymi trzema narzędziami, AWS CodePipeline jest kolejnym narzędziem, które pomaga w końcowej wizualizacji dostarczenia aplikacji.
Bądź na bieżąco z naszym nadchodzącym samouczkiem, aby dowiedzieć się więcej o wdrażaniu aplikacji internetowych .NET w AWS przy użyciu Elastic Beanstalk.
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- Najlepsze narzędzia AWS DevOps do tworzenia i wdrażania w chmurze
- Ciągłe wdrażanie w DevOps
- Samouczek AWS CodeCommit dotyczący wdrażania DevOps w chmurze
- Ciągłe dostarczanie w DevOps
- Ciągłe testowanie w DevOps
- Znaczenie małych przyrostów dostaw w DevOps
- Samouczek AWS CodeBuild: wyodrębnianie kodu z kompilacji Maven
- DevOps Automation: Jak automatyzacja jest stosowana w praktyce DevOps