{"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":"

In a four-part series, we<\/span>\u00a0<\/span>walk you through\u00a0<\/span>how to setup a\u00a0<\/span>secure<\/i>,\u00a0reliable<\/i>,\u00a0highly available, and cost effective<\/i>\u00a0<\/span>CI\u00a0<\/span>pipeline<\/span>.\u00a0 <\/span><\/h2>\n

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

    \n
  1. Secure Universal Access<\/span><\/i><\/b>\u00a0\u2013 Global team can\u00a0<\/span>securely\u00a0<\/span>access\u00a0<\/span>the tools\u00a0<\/span>from anywhere in the world.<\/span>\u00a0<\/span><\/li>\n
  2. Scalabi<\/span><\/i><\/b>lity<\/span><\/i><\/b>\u00a0and High Performance<\/span><\/i><\/b>\u00a0\u2013\u00a0<\/span>Using advanced tools and features of the cloud provider such as autoscaling and load balancing, you can scale up or scale down based on demand. You only pay for the resources you need, when you need them.\u00a0<\/span>You can spin up new servers to run a task and spin back down when the task is complete – saving hours, days or weeks of productivity.<\/span>\u00a0<\/span><\/li>\n
  3. Reliability<\/span><\/i><\/b>\u00a0\u2013 With the cloud you take advantage of the redundancy and reliability built into the hardware and software as well as having a 24x7x365 team of professionals keeping the platform running for the millions of customers using it.<\/span>\u00a0<\/span><\/li>\n
  4. Flexibility<\/span><\/i><\/b>\u00a0– As technology advances, it very easy to swap out the underlying technology<\/span>\u00a0if you are running on a cloud platform<\/span>. No need to purchase and provision new hardware in your data center when you want to use a faster processor, need faster storage or a faster network.\u00a0<\/span>Simply run a few commands and start to take advantage of the technology advancements provided by the cloud provider.<\/span>\u00a0<\/span><\/li>\n<\/ol>\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

    Read the Blog Series<\/h2>\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

    Part 1\u00a0– Scripting a VPC Landing Zone using Terraform on AWS<\/h3>\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

    Part 2\u00a0–\u00a0Scripting GitLab and Jenkins Installs using Terraform on AWS<\/h3>\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

    Part 3\u00a0– Scripting a Container Platform using\u00a0Fargate\u00a0and ECR on AWS<\/h3>\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

    Part 4\u00a0– Deploying Docker Containers to AWS\u00a0Fargate\u00a0using Jenkins<\/h3>\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

    \"CI<\/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}]}}