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 |
|---|---|---|
|
NOT expanded |
Literal content (scripts, configs) |
|
Expanded |
Dynamic content with variables |
|
Expanded + strip leading tabs |
Indented heredocs in scripts |