Devs Back into DevOps

with Atlantis

Project A

Dev

Ops

Automated release

Project A

Dev

Ops

> Use case - Feature that does not require infrastructure changes

Automated release

Project A

Dev

Ops

> Use case - Feature that does require infrastructure changes

Infra Project A

Automated release

Project A

Dev

Ops

> Use case - Feature that does require infrastructure changes

Infra Project A

Automated release

Challenges to better streamline development

About Cloud Automations...

  • Cloud Automation is a really powerful tool but can be heavily destructive if not used properly...
     
  • As of today we needed to have a DevOps engineer dealing with infrastructure changes due to the knowledge required

What if the infrastructure change is ...

  • Just a threshold update for an alarm ?
     
  • An additional networking link between two services ?
     
  • Trivial and can be safely done by Developers ?

Atlantis

Introducing Atlantis

Bring the benefits of code review to your operations workflow.

Developers can submit infrastructure code changes with DevOps approval.

Atlantis

Infra Project A

Terraform will perform the following actions:

  # aws_cloudwatch_metric_alarm.alarm will be updated in-place
  ~ resource "aws_cloudwatch_metric_alarm" "alarm" {
        actions_enabled           = false
        alarm_actions             = [
            "arn:aws:sns:us-east-1::cloudwatch-to-slack-notifier",
        ]
        alarm_description         = "<http://docs.example/runbooks/ | Visit the  Runbooks Documentation>"
        alarm_name                = "VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
        arn                       = "arn:aws:cloudwatch:us-east-1::alarm:VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
      ~ comparison_operator       = "GreaterThanThreshold" -> "GreaterThanOrEqualToThreshold"
        datapoints_to_alarm       = 0
        dimensions                = {
            "QueueName" = "va-sqs-verity-prod"
        }
        evaluation_periods        = 3
        id                        = "VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
        insufficient_data_actions = []
        metric_name               = "ApproximateNumberOfMessagesVisible"
        namespace                 = "AWS/SQS"
        ok_actions                = [
            "arn:aws:sns:us-east-1::cloudwatch-to-slack-notifier",
        ]
        period                    = 60
        statistic                 = "Sum"
        tags                      = {}
        threshold                 = 150000
        treat_missing_data        = "ignore"
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Atlantis

Terraform will perform the following actions:

  # aws_cloudwatch_metric_alarm.alarm will be updated in-place
  ~ resource "aws_cloudwatch_metric_alarm" "alarm" {
        actions_enabled           = false
        alarm_actions             = [
            "arn:aws:sns:us-east-1::cloudwatch-to-slack-notifier",
        ]
        alarm_description         = "<http://docs.example/runbooks/ | Visit the  Runbooks Documentation>"
        alarm_name                = "VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
        arn                       = "arn:aws:cloudwatch:us-east-1::alarm:VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
      ~ comparison_operator       = "GreaterThanThreshold" -> "GreaterThanOrEqualToThreshold"
        datapoints_to_alarm       = 0
        dimensions                = {
            "QueueName" = "va-sqs-verity-prod"
        }
        evaluation_periods        = 3
        id                        = "VA-VTY-MLE-HCELag-Prod-SQSApproximateNumberOfMessagesVisible"
        insufficient_data_actions = []
        metric_name               = "ApproximateNumberOfMessagesVisible"
        namespace                 = "AWS/SQS"
        ok_actions                = [
            "arn:aws:sns:us-east-1::cloudwatch-to-slack-notifier",
        ]
        period                    = 60
        statistic                 = "Sum"
        tags                      = {}
        threshold                 = 150000
        treat_missing_data        = "ignore"
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Apply infrastructure changes

Ops

devs-back-into-devops

By Florian Dambrine

devs-back-into-devops

Put Devs back into DevOps with Atlantis * Medium Blog post >>> https://link.medium.com/LJBz19SIecb

  • 1,424