Slide 1

Slide 1 text

Kerim Satirli Senior Devevloper Advocate, HashiCorp Unlocking Infrastructure Lifecycle Management

Slide 2

Slide 2 text

©2024 HASHICORP Maximize infrastructure investments Infrastructure Nomad Scheduling and orchestration Automated developer services Waypoint Packer Build and manage images as code Terraform Infrastructure as code provisioning WORKFLOW AUTOMATION SYSTEM OF RECORD LIFECYCLE MANAGEMENT Infrastructure as code to build, deploy and manage the lifecycle of infrastructure and applications.

Slide 3

Slide 3 text

©2024 HASHICORP Optimize infrastructure on Day 1 Build Author infrastructure and images as code Create and share reusable modules Collaborate safely via version control

Slide 4

Slide 4 text

©2024 HASHICORP Optimize infrastructure on Day 1, Day 2 Deploy Enforce security and compliance Standardize provisioning workflows Enable self-service patterns

Slide 5

Slide 5 text

©2024 HASHICORP Optimize infrastructure on Day 1, Day 2, and beyond Manage Gain organization-wide visibility Monitor infrastructure health and drift Auto-destroy temporary resources

Slide 6

Slide 6 text

©2024 HASHICORP Blueprint for cloud success Security Infrastructure Compose Collaborate Publish and discover Enforce policy Enable self-service Observe and respond Manage all secrets Enforce policy Ensure continuity Automate and observe Remediate Encrypt seamlessly Stage 1: Adopting Stage 2: Standardizing Stage 3: Scaling

Slide 7

Slide 7 text

©2024 HASHICORP Team goals People Tools Process Platform teams Standardize and automate Enable app and service teams Reduce cross-team friction AppDev teams Accelerate app delivery Get infrastructure quickly Reduce context switching

Slide 8

Slide 8 text

How do we go from blocker to enabler?

Slide 9

Slide 9 text

©2024 HASHICORP Build 01

Slide 10

Slide 10 text

©2024 HASHICORP Platform team Container registry HCP Packer artifact registry VCS Packer template Infrastructure lifecycle

Slide 11

Slide 11 text

©2024 HASHICORP HCP Terraform private registry Packer template HCP Packer artifact registry Terraform module Platform team Container registry VCS Infrastructure lifecycle

Slide 12

Slide 12 text

©2024 HASHICORP HCP Terraform private registry HCP Waypoint templates/add-ons App developers Actions HCP Packer artifact registry Terraform module Application Add-ons Packer template Platform team Container registry VCS Infrastructure lifecycle

Slide 13

Slide 13 text

©2024 HASHICORP data "hcp-packer-artifact" "nodejs-base" { bucket_name = var.base_image_bucket channel_name = var.base_image_channel platform = "docker" region = "docker" } Images as code • Repeatable and automated builds with Packer • Common syntax and workflow for AMIs, VM templates, and containers • Publish artifact metadata to HCP Packer registry source "docker" "store-frontend" { image = data.hcp-packer-artifact.nodejs-base.labels["ImageDigest"] commit = true platform = "linux/arm64" changes = [ "WORKDIR /app", "ENTRYPOINT [\"/app/entrypoint.sh\"]", "CMD [\"node_modules/.bin/next\", \"start\"]", "USER nextjs", "EXPOSE 3000", ] } store-frontend.pkr.hcl

Slide 14

Slide 14 text

©2024 HASHICORP build { hcp_packer_registry { bucket_name = "hashicafe-store-frontend" description = "HashiCafe store frontend Node.js app container." bucket_labels = { "owner" = var.owner "department" = var.department } } sources = ["source.docker.store-frontend"] provisioner "shell" { script = "build-app.sh" } post-processor "docker-tag" { repository = "${var.registry_host}/hashicafe-store-frontend" tags = [ local.timestamp, "latest" ] } post-processor "docker-push" { } } store-frontend.pkr.hcl • Repeatable and automated builds with Packer • Common syntax and workflow for AMIs, VM templates, and containers • Publish artifact metadata to HCP Packer registry Images as code

Slide 15

Slide 15 text

©2024 HASHICORP • Promote for deployment using specific channels • Incrementally update channels as new builds are approved and tested Images as code

Slide 16

Slide 16 text

©2024 HASHICORP Standardize with modules main.tf data "hcp_packer_artifact" "frontend" { bucket_name = var.hcp_packer_bucket_name channel_name = var.hcp_packer_channel platform = "docker" region = "docker" } resource "aws_ecs_task_definition" "app" { container_definitions = jsonencode( [ { name : "frontend" image : data.hcp_packer_artifact.frontend.labels["ImageDigest"] essential : true portMappings = [{ containerPort = 3000 }] } ] ) } • Design for reusability

Slide 17

Slide 17 text

©2024 HASHICORP run "unit_test" { command = plan assert { condition = local.base_name == "hashicafe-frontend-demo-app" error_message = "Interpolated resource name doesn't match expected." } assert { condition = length(data.aws_subnets.private.ids) >= 2 error_message = "Expected at least 2 private subnets." } } run "input_validation" { command = plan variables { task_cpu = 100 # Min is 256 task_memory = 256 # Min is 512 } expect_failures = [ var.task_cpu, var.task_memory ] } Standardize with modules tests/unit-tests.tftest.hcl • Design for reusability • Bake-in compliance rules and approved practices • Extend with tests and functional health checks

Slide 18

Slide 18 text

©2024 HASHICORP check "service_health" { assert { condition = aws_ecs_service.app.task_definition == aws_ecs_task_definition.app.arn error_message = "The service is not using the latest task definition.” } } check "web_health" { data "http" "service" { url = "https://${local.dns_name}" } assert { condition = data.http.service.status_code == 200 error_message = "${data.http.service.url} returned an unhealthy status.” } } Standardize with modules checks.tf • Design for reusability • Bake-in compliance rules and approved practices • Extend with tests and functional health checks

Slide 19

Slide 19 text

©2024 HASHICORP • Private registry with integrated publishing, versioning, and testing • Enable module for easy no-code provisioning Publish and discover

Slide 20

Slide 20 text

©2024 HASHICORP • Platform teams curate a catalog of golden patterns • Templates and add-ons use Terraform no-code modules • Consistent governance with policy as code and run tasks Beta + Pave a golden path

Slide 21

Slide 21 text

©2024 HASHICORP Risk Standardized, modular deployment patterns Approved and hardened images and modules Build People Cost Best practices directly codified in modules Less duplicated effort for overcommitted teams Speed Automation through codification Reusability - stop reinventing the wheel

Slide 22

Slide 22 text

How do we make tomorrow better?

Slide 23

Slide 23 text

©2024 HASHICORP Deploy 02

Slide 24

Slide 24 text

©2024 HASHICORP 4,200+ providers Workspaces VCS/CLI/API Kubernetes Operator No-code provisioning Plan Apply Run tasks OPA Sentinel Policy Developer platform Dynamic provider credentials (OIDC) Service catalogs Standardized provisioning workflow

Slide 25

Slide 25 text

©2024 HASHICORP Self-service flow • App devs get a push-button consumption experience • Module inputs and outputs synced with HCP Terraform • Add-ons for optional app and infra dependencies Beta

Slide 26

Slide 26 text

©2024 HASHICORP Beta Self-service flow • Platform teams curate a catalog of golden patterns • Templates and add-ons use Terraform no-code modules • Consistent governance with policy as code and run tasks

Slide 27

Slide 27 text

©2024 HASHICORP Deploy Risk Proactive, consistent policy enforcement Keep cloud credentials dynamic and safe Speed Eliminate slow ticket- driven process Developers enabled to innovate on apps Cost Eliminate deployment and over-provisioning errors Reduce burden on app and platform teams Eliminate blockers and reduce frustration People

Slide 28

Slide 28 text

What happens after Day 1?

Slide 29

Slide 29 text

©2024 HASHICORP Manage 03

Slide 30

Slide 30 text

©2024 HASHICORP Platform teams expose common tasks for Day 2 operations: • Trigger CI/CD action • Build promotion and rollback • Toggle a feature flag Beta Day 2 actions

Slide 31

Slide 31 text

©2024 HASHICORP Day 2 visibility • Explorer provides views into workspace details • Sort and filter, export to CSV • API access for programmatic reporting and processing

Slide 32

Slide 32 text

©2024 HASHICORP Assessments • Automatic drift detection • Continuous validation of checks and conditions • Proactive notifications

Slide 33

Slide 33 text

©2024 HASHICORP Clean-up • Self-service: delete HCP Waypoint app, workspace gets destroyed • Terraform ephemeral workspaces: auto-destroy temporary resources

Slide 34

Slide 34 text

©2024 HASHICORP Manage Risk Detect and remediate drift and health risks Speed Golden patterns for app developers Shared service available to all teams Cost Clean up temporary resources Avoid costly health issues and outages People Reduce friction between app, platform, and security teams

Slide 35

Slide 35 text

©2024 HASHICORP Infrastructure Compose Collaborate Publish and discover Enforce policy Enable self-service Observe and respond Private registry Dynamic image usage No-code provisioning Standardize application delivery Policy as code Integrate security tooling Continuous validation Auto-destroy temporary resources Infrastructure as code Provision cloud resources Version control integration Role-based access Stage 1: Adopting Stage 2: Standardizing Stage 3: Scaling Blueprints for cloud success

Slide 36

Slide 36 text

Prescriptive guidance

Slide 37

Slide 37 text

©2024 HASHICORP Next steps Tutorials and certification developer.hashicorp.com Sign up for free hashicorp.com/cloud