Continuous Deployment dengan AWS CodeDeploy

Continuous Deployment (CD) merupakan praktek pengembangan perangkat lunak yang berperan untuk secara otomatis menyebarkan kode ke server dan folder aplikasi tertentu setelah kode tersebut telah terintegrasi dengan sukses.

 

Keuntungan penggunaan AWS CodeDeploy secara umum:

. Deployment otomatis

. Meminimalkan downtime

. Kontrol terpusat

. Mudah untuk digunakan

 

Konfigurasi Aplikasi AWS CodeDeploy

Saya anggap bahwa Anda memiliki semua akses yang diperlukan untuk mengkonfigurasi AWS Code Deploy. Kita harus mengkonfigurasi 2 IAM Role yang akan digunakan untuk boot EC2 Server / akses S3 dan kemudian untuk AWS Code Deploy untuk menghubungi server EC2.

Kita akan menamai mereka CodeDeploy dan EC2CodeDeploy

  1. Pembuatan Role CodeDeploy

Untuk membuat role masuk ke IAM service pilih Roles -> Create New Role

Masukkan nama CodeDeploy dan pilih Next

pilih Amazon EC2 sebagai Role Type and pilih Next

di bawah Set Permissions pilih Custom Policy dan select

Masukkan nama CodeDeploy dan paste policy di bawah ini

CodeDeploy Policy

 

{
 "Version": "2012-10-17",
 "Statement": [
   {
 	"Action": [
   	"autoscaling:PutLifecycleHook",
   	"autoscaling:DeleteLifecycleHook",
   	"autoscaling:RecordLifecycleActionHeartbeat",
   	"autoscaling:CompleteLifecycleAction",
   	"autoscaling:DescribeAutoscalingGroups",
   	"autoscaling:PutInstanceInStandby",
   	"autoscaling:PutInstanceInService",
   	"ec2:Describe*"
 	],
 	"Effect": "Allow",
 	"Resource": "*"
   }
 ]
}

 

pilih Next dan Create Role. langkah ini akan menunjukan daftar dari Roles yang dibuat.

Sekarang kita perlu untuk memilih CodeDeploy dan memilih Edit Trust Relationship

Ganti policy dengan policy di bawah ini, Policy Trust untuk CodeDeploy

 

{
 "Version": "2012-10-17",
 "Statement": [
   {
 	"Sid": "",
 	"Effect": "Allow",
 	"Principal": {
   	"Service": [
     	"codedeploy.us-west-2.amazonaws.com",
     	"codedeploy.us-east-1.amazonaws.com"
   	]
 	},
 	"Action": "sts:AssumeRole"
   }
 ]
}

 

dan Update Trust Policy

 

  1. Pembuatan Role EC2CodeDeploy

Seperti langkah diatas, kita buat lagi policy EC2CodeDeploy

paste policy dibawah ini

 

{
   "Version": "2012-10-17",
   "Statement": [   
 	{	 
     	"Action": [  	 
         	"s3:Get*",  	 
         	"s3:List*"	 
     	],	 
     	"Effect": "Allow",	 
     	"Resource": "*"   
 	}
   ]
}

 

  1. Persiapan server EC2

Sekarang kita perlu membuat ec2 yang sudah berisi aws cli dengan aws code deploy agent dan memiliki IAM role EC2CodeDeploy

 

AWS CodeDeploy agent dapat diinstall seperti langkah berikut ini.

Dengan asumsi aws cli sudah terinstall, jalankan ‘aws configure’ di linux consol dari ec2 tersebut.

isi Secret key, access key dan region (key ini cukup untuk baca S3). Jika kita sudah implementasi IAT (Infra structure as code) proses ini bisa dilakukan dengan lebih cepat

 

aws s3 cp s3://aws-codedeploy-ap-southeast-1/latest/install . --region ap-soutest-1

chmod +x ./install

sed -i "s/sleep(.*)/sleep(10)/" install

./install auto

service codedeploy-agent status

 

perlu diingat bahwa kita perlu mengganti file appspec.yml dengan file appspec.yml dari repo.

dibawah ini contoh file appspec.yml

 

version: 0.0

os: linux

hooks:

 BeforeInstall:

   - location: scripts/beforecicd.sh

            runas: root

AfterInstall:

   - location: scripts/aftercicd.sh

            runas: root

 

script beforecicd.sh berisi semua command yang diperlukan untuk dieksekusi sebelum kode dideploy ke aplikasi folder.

script aftercicd.sh berisi command yang akan dieksekusi untuk menjalankan beberapa test case jika aplikasi dideploy dengan benar.

 

  1. Pembuatan Aplikasi AWS CodeDeploy

Dari konsol aws, cari menu AWS CodeDeploy -> Get Started -> Custom Deployment

halaman Create New Application akan muncul.

Isi Application Name dan Deployment Group Name, langkah berikutnya memilih instance yang akan dipilih untuk deployment aplikasi.

Di menu Add Instances kita dapat mencari dan memilih instance-instance kita atau AutoScaling Group menurut nama tagnya. Dalam praktek ini kita pilih instance yang sudah kita buat. Selanjutnya di Deployment Config, kita pilih One at a Time karena kita hanya memiliki satu instance. Service Role, kita pasang role CodeDeploy Role yang sudah kita buat. langkah akhir pilih Create Application, langkah ini kita menyelesaikan konfigurasi AWS CodeDeploy. selanjutnya kita akan insatll dan mengkonfigur jenkins.

 

AWS CodeDeploy masih tidak memberikan kita fungsi untuk rollback ketika diintegrasikan dengan CI tool jika ada kegagalan penyebaran dan rolling back ke revisi sukses adalah tugas yang menyusahkan. Tetapi menggunakan script dan plugin yang berbeda yang diberikan oleh tool CI seperti Jenkins kita juga dapat mengotomatisasi proses ini. Artikel saya selanjutnya (Jenkins dan AWS Code Deploy sebagai CI / CD ) akan membahas ini.

 

Ref:

Comments

comments

wawangholanda

You Might Also Like

No Comment

Leave your thought