#!/usr/bin/env bash # Usage: ./aws-logs.sh controlAutoscalingGroup=$( terraform show -json | jq -r .'values.root_module.child_modules[] | select(.address == "module.instance_group_control_plane") | .resources[0].values.name' ) workerAutoscalingGroup=$( terraform show -json | jq -r .'values.root_module.child_modules[] | select(.address == "module.instance_group_worker_nodes") | .resources[0].values.name' ) controlInstances=$( aws autoscaling describe-auto-scaling-groups \ --region "${1}" \ --no-paginate \ --output json \ --auto-scaling-group-names "${controlAutoscalingGroup}" | jq -r '.AutoScalingGroups[0].Instances[].InstanceId' ) workerInstances=$( aws autoscaling describe-auto-scaling-groups \ --region "${1}" \ --no-paginate \ --output json \ --auto-scaling-group-names "${workerAutoscalingGroup}" | jq -r '.AutoScalingGroups[0].Instances[].InstanceId' ) echo "Fetching logs from control planes: ${controlInstances}" for instance in ${controlInstances}; do printf "Fetching for %s\n" "${instance}" aws ec2 get-console-output --region "${1}" --instance-id "${instance}" | jq -r .'Output' | tail -n +2 > control-plane-"${instance}".log done echo "Fetching logs from worker nodes: ${workerInstances}" for instance in ${workerInstances}; do printf "Fetching for %s\n" "${instance}" aws ec2 get-console-output --region "${1}" --instance-id "${instance}" | jq -r .'Output' | tail -n +2 > worker-"${instance}".log done