agent: | Auto Exec |
Troubleshooting: Server is not reachable or unable to connect
Add credentials for various integrations
What is an "Expert"? How do we create our own expert?
Add credentials for various integrations
Managing workspaces and access control
DagKnows Architecture Overview
Setting up SSO via Azure AD for Dagknows
Enable "Auto Exec" and "Send Execution Result to LLM" in "Adjust Settings" if desired
(Optionally) Add ubuntu user to docker group and refresh group membership
Deployment of an EKS Cluster with Worker Nodes in AWS
Adding, Deleting, Listing DagKnows Proxy credentials or key-value pairs
Comprehensive AWS Security and Compliance Evaluation Workflow (SOC2 Super Runbook)
AWS EKS Version Update 1.29 to 1.30 via terraform
Instruction to allow WinRM connection
MSP Usecase: User Onboarding Azure + M365
Post a message to a Slack channel
How to debug a kafka cluster and kafka topics?
Open VPN Troubleshooting (Powershell)
Execute a simple task on the proxy
Assign the proxy role to a user
Create roles to access credentials in proxy
Install OpenVPN client on Windows laptop
Setup Kubernetes kubectl and Minikube on Ubuntu 22.04 LTS
Install Prometheus and Grafana on the minikube cluster on EC2 instance in the monitoring namespace
update the EKS versions in different clusters
AI agent session 2024-09-12T09:36:14-07:00 by Sarang Dharmapurikar
Parse EDN content and give a JSON out
Check whether a user is there on Azure AD and if the user account status is enabled
Manage AWS EC2 ASGs using Launch Configurations
This runbook involves deleting/updating older, less flexible configurations that specify instance settings. As AWS has evolved, Launch Templates have become the preferred method due to their enhanced flexibility and features like versioning. Transitioning from Launch Configurations to Launch Templates typically includes a remediation step to delete or update old ASGs, thereby modernizing the infrastructure setup.
- 1gI9PbPfVbKy0jWV6Kt3QList All AWS EC2 Auto Scaling Groups (ASGs)
1
List All AWS EC2 Auto Scaling Groups (ASGs)
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.This task involves retrieving information about all the ASGs within a specified AWS region or across multiple regions. It helps in monitoring and managing the scaling behaviors of instances automatically, ensuring that the number of instances adjusts according to the set criteria, such as changes in demand or defined schedules.
inputsoutputsimport boto3 from botocore.exceptions import NoCredentialsError, PartialCredentialsError, BotoCoreError, ClientError creds = _get_creds(cred_label)['creds'] access_key = creds['username'] secret_key = creds['password'] def list_all_regions(): ec2 = boto3.client('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name='us-east-1') return [region['RegionName'] for region in ec2.describe_regions()['Regions']] def list_auto_scaling_groups(region=None): regions = [region] if region else list_all_regions() asg_details = [] for region in regions: try: asg_client = boto3.client('autoscaling', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region) except (NoCredentialsError, PartialCredentialsError, BotoCoreError, ClientError) as e: print(f"Failed for {region}: {e}") continue paginator = asg_client.get_paginator('describe_auto_scaling_groups') try: for page in paginator.paginate(): for asg in page['AutoScalingGroups']: asg['CreatedTime'] = asg['CreatedTime'].strftime('%Y-%m-%d %H:%M:%S') if 'CreatedTime' in asg else 'N/A' asg['Region'] = region # Ensuring the region is part of the details asg_details.append(asg) except ClientError as e: print(f"Failed for {region}: {e}") return asg_details def display_asg_details(data): if not data: print("No Auto Scaling Groups found.") return table = context.newtable() table.title = "Auto Scaling Group Details" table.num_cols = 6 # Add an additional column for 'CreatedTime' table.num_rows = len(data) + 1 # Rows for headers plus each ASG table.has_header_row = True # Define header names with the addition of 'CreatedTime' headers = ["AutoScalingGroupName", "Region", "MinSize", "MaxSize", "DesiredCapacity", "CreatedTime"] # Set headers in the first row for col_num, header in enumerate(headers): table.setval(0, col_num, header) # Assume setval sets value at (row, col) # Populate the table with ASG data for row_num, asg in enumerate(data, start=1): # Starting from the second row values = [ asg["AutoScalingGroupName"], asg["Region"], str(asg["MinSize"]), str(asg["MaxSize"]), str(asg["DesiredCapacity"]), asg["CreatedTime"] # Ensure CreatedTime is included and properly formatted ] for col_num, value in enumerate(values): table.setval(row_num, col_num, value) #region_name = None # Set to None to list ASGs for all available regions or specify a region asg_list = list_auto_scaling_groups(region_name) if asg_list: display_asg_details(asg_list) #print("\nComplete ASG List:") #print(asg_list) # Display the complete list of ASG objects for downstream tasks else: print("No Auto Scaling Groups found.")copied1 - 2Q3BBjw3PR1WHrjSKd517Filter ASGs: Identify ASGs that are associated with a Launch Configuration
2
Filter ASGs: Identify ASGs that are associated with a Launch Configuration
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.This task involves identifying which ASGs are configured to use launch configurations as their instance management template. This is crucial for assessing the deployment strategy, as launch configurations are immutable and often need to be replaced with updated configurations or migrated to the more flexible launch templates. This helps in managing instance configurations and scaling policies efficiently.
inputsoutputsimport boto3 from botocore.exceptions import ClientError # Load AWS credentials from a secure source creds = _get_creds(cred_label)['creds'] access_key = creds['username'] secret_key = creds['password'] def filter_asgs_with_launch_configs(asg_list): """ Filter ASGs that are associated with a Launch Configuration. :param asg_list: List of ASGs fetched from an upstream task. :return: Filtered list of ASGs with Launch Configurations. """ asg_details = [] for asg in asg_list: if 'LaunchConfigurationName' in asg: asg_details.append({ 'AutoScalingGroupName': asg['AutoScalingGroupName'], 'LaunchConfigurationName': asg['LaunchConfigurationName'], 'Region': asg['Region'] }) return asg_details def display_asg_details(data): """ Display details of ASGs in a structured table format. :param data: List of filtered ASGs. """ if not data: print("No Auto Scaling Groups with Launch Configurations found.") return # Assuming 'context.newtable' creates a new table context in your environment table = context.newtable() table.title = "ASG with Launch Configurations" table.num_cols = 3 table.num_rows = 1 table.has_header_row = True # Define header names headers = ["AutoScalingGroupName", "LaunchConfigurationName", "Region"] for col_num, header in enumerate(headers): table.setval(0, col_num, header) # Populate the table with ASG data for row_num, asg in enumerate(data, start=1): table.num_rows += 1 values = [ asg["AutoScalingGroupName"], asg["LaunchConfigurationName"], asg["Region"] ] for col_num, value in enumerate(values): table.setval(row_num, col_num, value) # Filtering ASGs with Launch Configurations filtered_asgs = filter_asgs_with_launch_configs(asg_list) display_asg_details(filtered_asgs) context.skip_sub_tasks = Truecopied2- 2.1HBJ0gDH9Wt26YazBFB5PDelete AWS EC2 Auto Scaling Groups (ASGs)
2.1
Delete AWS EC2 Auto Scaling Groups (ASGs)
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.This task involves removing specified ASGs from the AWS environment. This operation is critical for cleaning up unused or unnecessary resources, managing costs, or decommissioning services.
inputsoutputsimport boto3 from botocore.exceptions import ClientError creds = _get_creds(cred_label)['creds'] access_key = creds['username'] secret_key = creds['password'] def delete_auto_scaling_groups(filtered_asgs): """ Deletes a list of auto scaling groups provided in filtered_asgs. Each ASG dict must contain 'AutoScalingGroupName' and 'Region'. """ for asg in filtered_asgs: region = asg['Region'] asg_name = asg['AutoScalingGroupName'] try: # Initialize the boto3 client for AutoScaling in the specified region client = boto3.client('autoscaling', aws_access_key_id=access_key,aws_secret_access_key=secret_key,region_name=region) # Delete the Auto Scaling group client.delete_auto_scaling_group(AutoScalingGroupName=asg_name, ForceDelete=True) print(f"Successfully requested deletion of ASG: {asg_name} in {region}") except ClientError as e: print(f"Failed to delete ASG: {asg_name} in {region}. Error: {e}") # Example filtered_asgs list #filtered_asgs = [{"AutoScalingGroupName":"test1-asg","AutoScalingGroupARN":"arn:aws:autoscaling:us-east-1:188379622596:autoScalingGroup:4f564e69-b9f3-4d3f-8cfc-5ee7468f1396:autoScalingGroupName/test1-asg","MixedInstancesPolicy":{"LaunchTemplate":{"LaunchTemplateSpecification":{"LaunchTemplateId":"lt-0b4e1233a5006c59b","LaunchTemplateName":"test1-asg-template","Version":"$Default"},"Overrides":[{"InstanceType":"t3.micro"},{"InstanceType":"t3a.micro"}]},"InstancesDistribution":{"OnDemandAllocationStrategy":"prioritized","OnDemandBaseCapacity":0,"OnDemandPercentageAboveBaseCapacity":0,"SpotAllocationStrategy":"price-capacity-optimized"}},"MinSize":0,"MaxSize":0,"DesiredCapacity":0,"DefaultCooldown":300,"AvailabilityZones":["us-east-1a","us-east-1b","us-east-1c"],"LoadBalancerNames":[],"TargetGroupARNs":[],"HealthCheckType":"EC2","HealthCheckGracePeriod":300,"Instances":[],"CreatedTime":"2024-05-27 10:49:04","SuspendedProcesses":[],"VPCZoneIdentifier":"subnet-b8482599,subnet-26325179,subnet-836e58ce","EnabledMetrics":[],"Tags":[],"TerminationPolicies":["Default"],"NewInstancesProtectedFromScaleIn":false,"ServiceLinkedRoleARN":"arn:aws:iam::188379622596:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling","CapacityRebalance":true,"TrafficSources":[],"Region":"us-east-1"}] # Deleting ASGs delete_auto_scaling_groups(filtered_asgs)copied2.1