Language

EC2 & Security · Lesson 15 of 30

User Data & Bootstrap

Source: doonops-curriculum/aws-compute--user-data.md

Doonops lesson

Goal

Bootstrap script that runs when server boots first time.

Simple explanation

user_data = sticky note on new server: "install nginx, show hello page". templatefile() fills name dynamically.

Technical view

user_data = sticky note on new server: "install nginx, show hello page". templatefile() fills name dynamically.

Think of it like

user_data = sticky note on new server: "install nginx, show hello page". templatefile() fills name dynamically.

Steps

  1. Read simple section
  2. Read analogy + diagram
  3. Copy project files
  4. Do local lab

Deep explanation

Layman words first, then technical detail — read slowly

Runs as root/cloud-init at boot — great for demos; for production consider Ansible/SSM later.

Example (Doonops)

Modern HCL — names are examples, not from any third-party course

Example HCL
HCL
# see project files

Terraform runs on your computer — copy this HCL into a folder, then follow the local lab steps below.

Quick check

  • Explain topic to a friend in 2 sentences
  • Did local lab steps

Project files for this lab

Full implementation folder — copy all files, then run terraform commands

Lab project files (full folder)

Copy every file below into one folder — same as a real repo module. Then run the local lab steps.

Suggested folder: Suggested path: ~/doonops-terraform/12-user-data/

versions.tfSee file purpose in the code below
terraform {
  required_version = ">= 1.9.0"
}

Module check — did you get it?

2–3 quick questions before the next module

EC2 — quick check

Quick check — did this module stick?

1. Security group rules control…

  • CPU speed
  • Network traffic in/out of instances
  • S3 bucket names
  • Terraform version