{"id":25965,"date":"2019-02-26T12:51:34","date_gmt":"2019-02-26T18:51:34","guid":{"rendered":"https:\/\/centricconsulting.com\/?p=25965"},"modified":"2021-12-15T00:15:52","modified_gmt":"2021-12-15T05:15:52","slug":"blog-series-how-to-put-ci-pipeline-in-cloud-using-aws-with-terraform_devops","status":"publish","type":"post","link":"https:\/\/centricconsulting.com\/blog\/blog-series-how-to-put-ci-pipeline-in-cloud-using-aws-with-terraform_devops\/","title":{"rendered":"[Blog Series] How to Put a CI Pipeline in the Cloud Using AWS with Terraform"},"content":{"rendered":"
As part of an Agile DevOps team, companies moving to the cloud will require\u00a0<\/span>continuous integration (<\/span>CI<\/span>)<\/span>\u00a0pipeline and code repository to efficiently manage, test and deploy applications.\u00a0 <\/span><\/p>\n Having the CI pipeline in the cloud has several advantages<\/span>\u00a0over an on-prem solution. I\u2019ve listed a few below.<\/span>\u00a0<\/span><\/p>\n I\u2019ll<\/span>\u00a0<\/span>walk you through\u00a0<\/span>how to setup a\u00a0<\/span>secure<\/span><\/i><\/b>,\u00a0<\/span>reliable<\/span><\/i><\/b>,\u00a0<\/span>highly available, cost effective<\/span><\/i><\/b>\u00a0<\/span>CI\u00a0<\/span>platform using concepts like\u00a0<\/span>infrastructure as code<\/span><\/i><\/b>\u00a0and\u00a0<\/span>immutable infrastructure<\/span><\/i><\/b>.\u00a0 <\/span><\/p>\n When complete, we will have a fully functional<\/span>, cloud-based<\/span>\u00a0DevOps\u00a0<\/span>platform<\/span>\u00a0which will allow a developer to check in code to a\u00a0<\/span>self-<\/span>hosted GitLab cluster, build the application into a docker container using a Jenkins pipeline, and deploy the application to an Amazon Web Services (AWS) Elastic Container Service using\u00a0<\/span>Fargate<\/span>.\u00a0 <\/span><\/p>\n The\u00a0resulting PHP\u00a0application will be publicly accessible via a URL hosted\u00a0behind\u00a0an AWS Application Load Balancer.\u00a0\u00a0\u00a0<\/strong><\/p>\n In this four-part series I will guide you through what it takes to build a cloud-based CI platform using AWS.<\/p>\n I\u2019ll talk about building the core infrastructure in AWS. We will refer to this as the \u201cLanding Zone\u201d, which will consist of components like VPCs, Subnets, Gateways and Routing Tables, Security and Identity Management, and more.<\/span>\u00a0Read the blog<\/a><\/span><\/p>\n I get into how to script the deployment of a Jenkins master server, Jenkins slaves within an autoscaling group and a highly available GitLab<\/span>\u00a0behind a load balancer<\/span>.<\/span>\u00a0Read the blog<\/a><\/span><\/p>\n I\u00a0<\/span>will expand the\u00a0<\/span>platform<\/span>\u00a0to include a container registry (ECR), and a serverless container platform where we can deploy our code in an Elastic Container Service (ECS) using the AWS\u00a0<\/span>Fargate<\/span>\u00a0service.<\/span>\u00a0Read the Blog<\/a>\u00a0<\/span><\/p>\n I\u00a0<\/span>will focus on building scripts in Jenkins to build and deploy load-balanced, containerized applications to AWS. A key feature of this blog will show how to integrate Jenkins with AWS Elastic Container Registry, Elastic Container Service and\u00a0<\/span>Fargate<\/span>. <\/span><\/p>\n It will check out our source code from GitLab, build and deploy a docker image to AWS ECR<\/span>\u00a0and create or update a\u00a0<\/span>Fargate<\/span>\u00a0task in ECS. The result will be a functioning application hosted on AWS via a public DNS Name (URL).<\/span>\u00a0Read the blog<\/a><\/span><\/p>\n Here is what the platform will look like when we are complete:<\/p>\n <\/p>\n <\/p>\n","protected":false},"excerpt":{"rendered":" In this four-part series, we will will guide you through what it takes to build a cloud-based CI pipeline using AWS with Terraform.<\/p>\n","protected":false},"author":63,"featured_media":25997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_oasis_is_in_workflow":0,"_oasis_original":0,"_oasis_task_priority":"","_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","footnotes":""},"categories":[1],"tags":[19120,18527],"coauthors":[15012],"acf":[],"publishpress_future_action":{"enabled":false,"date":"2024-07-22 09:40:23","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"category"},"_links":{"self":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts\/25965"}],"collection":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/comments?post=25965"}],"version-history":[{"count":0,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts\/25965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/media\/25997"}],"wp:attachment":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/media?parent=25965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/categories?post=25965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/tags?post=25965"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/coauthors?post=25965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\n
Read the Blog Series<\/h2>\n
Part 1\u00a0– Scripting a VPC Landing Zone using Terraform on AWS<\/h3>\n
Part 2\u00a0–\u00a0Scripting GitLab and Jenkins Installs using Terraform on AWS<\/h3>\n
Part 3\u00a0– Scripting a Container Platform using\u00a0Fargate\u00a0and ECR on AWS<\/h3>\n
Part 4\u00a0– Deploying Docker Containers to AWS\u00a0Fargate\u00a0using Jenkins<\/h3>\n