Heredoc Favorites

Git Operations

Multi-line Commit

# Multi-line git commit with heredoc
git commit -m "$(cat <<'EOF'
feat(runbook): Add k3s deployment Phase 5

- Cilium CNI with Hubble enabled
- MetalLB L2 mode (10.50.1.130-140)
- Traefik ingress with TLS
EOF
)"

Remote Execution

SSH Remote Script

# Execute multi-line script on remote host
ssh vault-01 << 'EOF'
sudo systemctl status vault
vault status
vault secrets list
EOF

ISE Operations

dACL Content File

# Create dACL content file for ISE
cat > /tmp/dacl-ad-only.txt << 'EOF'
permit udp any any eq 53
permit tcp any any eq 53
permit udp any any eq 88
permit tcp any any eq 88
permit udp any any eq 123
permit tcp any any eq 389
permit tcp any any eq 636
permit tcp any any eq 445
permit tcp any any eq 464
permit udp any any eq 464
permit tcp any any eq 3268
permit tcp any any eq 3269
deny ip any any log
EOF

Infrastructure

cloud-init User Data

# cloud-init user-data for VM
cat > /tmp/cloud-init.yml << 'EOF'
#cloud-config
hostname: k3s-master-02
users:
  - name: evanusmodestus
    groups: wheel
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAA... evanusmodestus@workstation
runcmd:
  - dnf install -y curl
EOF

JSON Payload with Variables

# JSON payload with variables
MAC="14:F6:D8:7B:31:80"
GROUP_ID="aa0e8b20-8bff-11e6-996c-525400b48521"
cat << EOF
{
  "ERSEndPoint": {
    "mac": "${MAC}",
    "groupId": "${GROUP_ID}",
    "staticGroupAssignment": true
  }
}
EOF

kubectl Apply

cat << 'EOF' | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  namespace: default
data:
  key: value
EOF

sudo tee Pattern

cat << 'EOF' | sudo tee /etc/systemd/system/myservice.service
[Unit]
Description=My Service

[Service]
ExecStart=/usr/bin/myapp

[Install]
WantedBy=multi-user.target
EOF

Quick Reference

Delimiter Variables Use Case

<< 'EOF'

NOT expanded

Literal content (scripts, configs)

<< EOF

Expanded

Dynamic content with variables

<← EOF

Expanded + strip leading tabs

Indented heredocs in scripts