working aws codedeploy devops tool
AWS CodeDeploy Kullanarak Otomatik Dağıtma Eğitimi:
İçinde AWS DevOps araçlarının 2. Bölümü Maven kullanarak J2EE projesini oluşturmak için CodeBuild hizmetinin nasıl kullanıldığını gördük.
Bu eğiticide, S3 klasöründe depolanan yapay WAR dosyasının CodeDeploy hizmeti kullanılarak Tomcat uygulama sunucusuna dağıtım için nasıl kullanılabileceğini göreceğiz.
Kontrol edin => DevOps Eğitimi için İdeal Kılavuz
AWS CodeDeploy, uygulamanın Amazon EC2 Linux veya Windows bulut sunucularına dağıtımını otomatikleştiren dağıtım hizmetidir.
Bu eğitimde, Jenkins'in CodeDeploy ile nasıl entegre edilebileceği açıklanacaktır.
Ön Koşul:
- AWS ile hesap, tercihen ücretsiz bir katman.
- İyi ve hızlı internet bağlantısı.
- Kullanılan AWS Bölgesi - Asya Pasifik (Singapur).
- Amazon Linux veya RHEL EC2 örneği.
- EC2 bulut sunucusuna Tomcat yüklendi.
Not: İçeriği dağıtmak için AWS CodeCommit havuzu, CodeDeploy hizmeti için desteklenmez. Yalnızca S3 ve GitHub desteklenir.
Ne öğreneceksin:
- Kurulum Kodu Dağıtımı
- Amazon Linux EC2 Bulut Sunucusunu Başlatın
- AWS CodeDeploy'u S3 ile entegre etme
- CodeDeploy Uygulaması Oluşturun
- AWS CodeDeploy ile Jenkins Entegrasyonu
- Sonuç
- Önerilen Kaynaklar
Kurulum Kodu Dağıtımı
AWS CodeDeploy'un, EC2 bulut sunucusuna ve yapıların (WAR dosyası) dağıtım için depolandığı S3 klasörüne erişmek için iki varlıkla çalışması gerekir. CodeDeploy hizmetinin bu IAM'ye erişmesine izin vermek için rollerin ayarlanması gerekecektir. IAM rolleri IAM kullanıcıları için tanımlanmamıştır, ancak yalnızca varlıklara erişimleri vardır.
# 1) Oluştur ilk rol CodeDeploy hizmetinin EC2 örneğine erişmesi için.
IAM'yi başlatın ve tıklayın Roller-> Rol Oluşturun.

Altında AWS Hizmeti tıklamak EC2 -> Kullanım alanınızı seçin -> EC2 ve tıklayın Sonraki-> İzinler.

Seçin AWSCodeDeployRole Politika adı altında ve tıklayın Sonraki-> İncele.

Bir rol adı girin ve tıklayın Rol Oluşturun.

Son olarak, CodeDeploy hizmetinin genel veya belirli bölgeler / uç noktalar için erişilebilir olmasını sağlamak için bu rol için Güven ilişkisini düzenleyin.
Rolü tıklayın ve aşağıda gösterildiği gibi güven ilişkisini güncelleyin.

Politikada, EC2'yi Codedeploy olarak değiştirin ve tıklayın Güven Politikasını Güncelleyin.

iki) Oluştur ikinci rol S3 klasörüne erişmek üzere CodeDeploy hizmetini kullanan EC2 örneği için.
Bu rol için yukarıdaki adımları tekrarlayın ve aşağıdaki gibi girin:
- Git IAM -> Roller -> Rol Oluşturun.
- AWS Service altında EC2'yi seçin.
- Bunun altında Kullanım durumunuzu tekrar seçin ve EC2'ye tıklayın ve düğmesine tıklayın Sonraki-> İzinler.
- Ekleme izni politikası ekranında, seçin AmazonS3ReadOnlyAccess ve düğmeyi tıklayın Sonraki-> İncele.
- Rolü adlandırın HW-Codedeploy-EC2-S3 ve tıklayın Rol Oluşturun.
Artık her iki rol de mevcut olmalıdır.
Amazon Linux EC2 Bulut Sunucusunu Başlatın
Bu bölümde, şimdi EC2 bulut sunucusunu sağlıyoruz.
Örneği sağlarken rolü seçtiğinizden emin olun HW-Codedeploy-EC2-S3 sırasında Örnek Ayrıntılarını Yapılandırın adım. Ayrıca, 8080 numaralı bağlantı noktasını açık yaptığınızdan emin olun.

Bununla birlikte, ayrıca yüklememiz gerekecek CodeDeploy aracısı ve Tomcat uygulamamızın konuşlandırılması için kullanılacak bir uygulama sunucusu olarak.
# 1) Amazon Linux örneğinde CodeDeploy Aracısını kurun ve yapılandırın
CodeDeploy aracısı, dağıtımlara yardımcı olur ve dağıtımın yapılacağı her örnekte (ortamlarda) kurulmalıdır.
Linux örneğinde oturum açın ve kullanılan bölgeye göre aracıyı indirin. Bizim durumumuzda, tanımlayıcının olduğu Singapur bölgesidir ap-güneydoğu-1.
Aracıyı indirme komutu şu formatta olacaktır:
wget https: // aws-kodlueploy-. s3.amazonaws.com/latest/install

# 2) EC2 bulut sunucusuna Tomcat'i yükleyin
- Tomcat'i kurmak ve çalıştırmak için sırayla aşağıdaki adımları uygulayın.
yum yükle tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Uygulama yöneticisi için tomcat kullanıcısını etkinleştirin. /Etc/tomcat7/tomcat-users.xml dosyasında gösterildiği gibi değişiklikleri yapın

- Son olarak Tomcat hizmetini başlatın.
hizmet tomcat7 başlangıç

- Başlatmak Tomcat Web Uygulama Yöneticisi ve http: //: 8080 / manager URL'sini kullanarak çalışıp çalışmadığını kontrol edin

AWS CodeDeploy'u S3 ile entegre etme
2. bölümde belirtildiği gibi, CodeDeploy, uygulamanın en son sürümlerini dağıtmak için kullanılan kod deposu olarak yalnızca S3 ve GitHub'ı destekler. WAR uygulaması uygulamamız S3 klasöründe depolandığından, korunan biçimin bir ZIP dosyası olduğundan emin olmamız gerekir.
Bu, WAR dosyasının CodeDeploy kullanan dağıtım işlemi tarafından desteklenen bir ZIP dosyasında olması gerektiği anlamına gelir.
- AWS CLI (Komut satırı arayüzü) de Linux bulut sunucusuna yüklenmelidir. Lütfen bakın URL yüklemek.
- WAR'ı S3 klasöründen indirmek için Linux örneğinde aşağıdaki adımları çalıştırın. Aşağıdaki adımların normalde yapı makinesinde yapılması gerekir.
AWS_ACCESS_KEY_ID = ayarla
kabarcık sıralama algoritması c ++
AWS_SECRET_ACCESS_KEY = ayarla
AWS_DEFAULT_REGION = ap-güneydoğu-1 olarak ayarlayın
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy bir appspec.yml EC2 bulut sunucularına dağıtım talimatlarını içeren dosya. Bu dosya, WAR uygulamasının indirildiği bir klasörün kökünde olmalıdır.
Appspec.yml dosyasını ve scripts klasörünü aşağıda gösterildiği gibi oluşturun:

Olaylar, dağıtım sırasında aşağıdaki sırada çalışır.
# 1) ApplicationStop
# 2) Kurulumdan Önce
# 3) Yükle (dosyalar bölümü çağrılır ve WAR dosyası kopyalanır)
# 4) ApplicationStart
- Kullanılan klasör hiyerarşisi
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
Kodlar
start_application
stop_application
uninstall_war_file

- Komut dosyası içeriği
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
- İçeriği ZIP haline getirin ve ZIP dosyasını S3 klasörüne yükleyin. Paket üzerinde VERSIONING'in etkinleştirildiğinden emin olun.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war appspec.yml betikleri

aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip

dvd filmlerini sabit sürücüye ücretsiz kopyalayın
S3 klasörüne yüklenen ZIP dosyası aşağıdaki ekranda görüldüğü gibidir:

Komutları tek tek çalıştırmak yerine, çalıştırılabilir bir komut dosyası oluşturabilir ve yukarıdaki komutları buna ekleyebilir ve derlemeden yeni bir WAR dosyası uygulaması mevcut olduğunda her seferinde çalıştırabilirsiniz.
CodeDeploy Uygulaması Oluşturun
CodeDeploy uygulaması, WAR dosyasının uygun revizyonunun EC2 örneği olan uygun ortama dağıtılmasını sağlamak için oluşturulur.
CodeDeploy hizmetini başlatın ve Uygulama Oluştur buton.

Uygulama Adı, Dağıtım Grubu ( Misal: QA-Env) ve çalışan EC2 bulut sunucularını seçin.

Formun sonunda hizmet rolünü seçin. Bu, öğreticide daha önce oluşturulan diğer roldür.
Tıkla Uygulama Oluştur buton.

Dağıtım Grubunu (QA-Env) seçin ve Eylemler -> Yeni revizyonu dağıtın.

ZIP dosyası S3 klasöründe olduğundan, Revizyon konumunu aşağıdaki gibi girin:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip

Tıkla Dağıtmak buton. Dağıtım, aşağıda gösterildiği gibi başarılıdır.

WAR dosyası başarıyla tomcat webapps dizinine kopyalandı.

Uygulamanın başarıyla dağıtıldığından emin olmak için uygulama URL'sine göz atın.

AWS CodeDeploy ile Jenkins Entegrasyonu
Önceki 2 eğiticide gördüğümüz gibi, Jenkins, AWS DevOps araçlarıyla çok iyi entegre oluyor. Jenkins'i CodeDeploy ile entegre etmek için eklentinin yüklenmesi gerekir. Tıklayın İşte CodeDeploy eklentisini indirmek ve yüklemek için.
İlk olarak, IAM kullanıcısı için Erişim ve Gizli Anahtarı girin. Jenkins -> Yapılandırma .

Sonuç
Şimdiye kadar CodeDeploy'un S3 klasöründe depolanan bir J2EE uygulaması WAR dosyasının tomcat uygulama sunucusunu çalıştıran EC2 bulut sunucusuna dağıtımını otomatikleştirmek için nasıl kullanılabileceğini gördük.
CodeCommit, CodeBuild ve CodeDeploy gibi bu üç araç dizisi, DevOps'un Sürekli Entegrasyon ve Sürekli Teslimat konularında yardımcı olur. Bu 3 aracın yanı sıra AWS CodePipeline, uygulama sunumunun uçtan uca görselleştirilmesine yardımcı olan bir diğer araçtır.
Elastic Beanstalk kullanarak AWS'ye .NET web uygulaması dağıtımı hakkında daha fazla bilgi edinmek için yaklaşan eğiticimizi takip etmeye devam edin.
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- Bulut Derlemesi ve Dağıtımı için En İyi AWS DevOps Araçları
- DevOps'ta Sürekli Dağıtım
- Bulutta DevOps Uygulaması için AWS CodeCommit Eğiticisi
- DevOps'ta Sürekli Teslimat
- DevOps'ta Sürekli Test
- DevOps'ta Küçük Teslimat Artışlarının Önemi
- AWS CodeBuild Eğitimi: Maven Build'tan Kod Çıkarma
- DevOps Otomasyonu: Otomasyon DevOps Uygulamasında Nasıl Uygulanır?