Tạo lưu đồ là một yếu tố thiết yếu của Quản lý cơ sở hạ tầng và Kiến trúc hệ thống. Tạo sơ đồ từ Code là một bước đột phá đáng chú ý trong thời gian gần đây Show
Sơ đồ Python thực sự là công cụ hàng đầu trong không gian này và bạn có thể tạo sơ đồ đám mây của mình sau vài phút Tất cả những gì bạn cần là một số kiến thức về python và bạn có thể tạo Sơ đồ đẹp bằng mã Trong bài viết này, tôi sẽ tạo sơ đồ cho tất cả ELB trong tài khoản aws của mình bằng mã Python Boto3 và Sơ đồ. Hoàn toàn Năng động khi dữ liệu được tìm nạp Trực tiếp bằng Boto
Không chần chừ gì nữa, chúng ta hãy chuyển sang mục tiêu Đây là một cái nhìn thoáng qua về những gì chúng ta sẽ làm. Có vẻ thú vị phải không? Mục lục điều kiện tiên quyết
Thiết lập không gian làm việcBạn có thể bắt đầu bằng cách tải xuống mã nguồn từ kho lưu trữ GITHUB của tôi và cài đặt các gói cần thiết và chạy nó Chúng tôi cho rằng AWS CLI của bạn đã được cài đặt và định cấu hình. vì vậy chúng tôi không trình bày chi tiết Nếu bạn chưa quen với AWS CLI, hãy tham khảo bài viết trước của chúng tôi trước khi tiếp tục
Tải xuống mã nguồnBạn có thể tải xuống mã nguồn từ kho lưu trữ Github. hoặc chỉ cần sao chép và dán các tập lệnh được cung cấp bên dưới Có hai kịch bản. một cho Cân bằng tải ứng dụng và Mạng, một cho Cân bằng tải cổ điển
Đây là tập lệnh để tạo Sơ đồ/lưu đồ cho Ứng dụng và Bộ cân bằng tải mạng sơ đồ alb. py import boto3 import pprint import sys import json def gettargetgroups(arn): tgs=elb.describe_target_groups(LoadBalancerArn=arn) tgstring=[] for tg in tgs["TargetGroups"]: tgstring.append(tg["TargetGroupName"]) return tgstring def gettargetgrouparns(arn): tgs=elb.describe_target_groups(LoadBalancerArn=arn) tgarns=[] for tg in tgs["TargetGroups"]: tgarns.append(tg["TargetGroupArn"]) return tgarns def getinstancename(instanceid): instances=ec2.describe_instances(Filters=[ { 'Name': 'instance-id', 'Values': [ instanceid ] }, ],) for instance in instances["Reservations"]: for inst in instance["Instances"]: for tag in inst["Tags"]: if tag['Key'] == 'Name': return (tag['Value']) def gettargethealth(arn): # print("arn",arn) inss=elb.describe_target_health(TargetGroupArn=arn) instanceids=[] result=[] for ins in inss["TargetHealthDescriptions"]: ins["Name"]=getinstancename(ins['Target']['Id']) instanceids.append(ins['Target']['Id']) result.append(ins) return result def describelbs(): lbs = elb.describe_load_balancers(PageSize=400) for lb in lbs["LoadBalancers"]: lbjson={} lbjson['Name']=lb["LoadBalancerName"] lbjson['Type']=lb["Type"] lbjson['TG']=gettargetgrouparns(lb["LoadBalancerArn"]) lbjson['TGData']=[] TGLIST=[] if len(lbjson["TG"]) > 0: for tgs in lbjson['TG']: TGD={} TGD['Name']=tgs.split("/")[1] tgh=gettargethealth(tgs) if len(tgh) > 0: TGD['Instances']=tgh else: TGD['Instances']="" TGLIST.append(TGD) lbjson['TGData'] = TGLIST print("\n",json.dumps(lbjson, indent=4, sort_keys=True)) if __name__ == "__main__": if len(sys.argv) < 3: print(" – Region Name and the Profile name is mandatory – ") print(" Syntax: python3 clb-list-json.py us-east-1 default") exit() region_name = sys.argv[1] profile = sys.argv[2] session = boto3.session.Session(profile_name=profile) elb = session.client('elbv2') ec2 = session.client('ec2') describelbs()
Đây là tập lệnh để tạo Sơ đồ và lưu đồ cho Cân bằng tải cổ điển clb-sơ đồ. py import boto3 import pprint import json import sys from diagrams import Cluster, Diagram from diagrams.aws.compute import EC2 from diagrams.aws.network import ELB def getinstancename(instanceid): instances=ec2.describe_instances(Filters=[ { 'Name': 'instance-id', 'Values': [ instanceid ] }, ],) resultset = {} for instance in instances["Reservations"]: for inst in instance["Instances"]: resultset["State"]=inst["State"]["Name"] for tag in inst["Tags"]: if tag['Key'] == 'Name': resultset["Name"]=tag['Value'] # print (resultset) return resultset def getinstancehealth(lbname,instanceid): instancestate=elb.describe_instance_health( LoadBalancerName=lbname, Instances = [{ 'InstanceId' : instanceid }] ) return instancestate['InstanceStates'][0]['State'] def describelbs(): lbs = elb.describe_load_balancers(PageSize=400) for lb in lbs["LoadBalancerDescriptions"]: lbjson={} lbjson['Name']=lb["LoadBalancerName"] lbjson['HealthCheck']=lb["HealthCheck"] lbjson['Instances']=[] if len(lb["Instances"]) > 0: InstanceList=[] for instance in lb["Instances"]: instance.update(getinstancename(instance["InstanceId"])) instance['Health']=getinstancehealth(lb["LoadBalancerName"], instance["InstanceId"]) InstanceList.append(instance) lbjson['Instances']=InstanceList print("\n",json.dumps(lbjson, indent=4, sort_keys=True)) with Diagram(profile+"_CLB_"+lbjson['Name'],show=False): lb = ELB(lbjson['Name']) instance_group=[] for instance in lbjson['Instances']: instance_group.append(EC2(instance['Name'])) lb >> instance_group if __name__ == "__main__": if len(sys.argv) < 3: print(" – Region Name and the Profile name is mandatory – ") print(" Syntax: python3 ",sys.argv[0]," us-east-1 default") exit() region_name = sys.argv[1] profile = sys.argv[2] print("profilename selected:",profile) print("regionname selected: ",region_name) session = boto3.session.Session(profile_name=profile) elb = session.client('elb') ec2 = session.client('ec2') describelbs()
Cài đặt các gói cần thiếtBạn cần cài đặt gói boto python vì tập lệnh yêu cầu nó Hy vọng bạn đã cài đặt pip. bây giờ hãy thực hiện lệnh sau để cài đặt boto3 với pip pip install -r requirements.txt Sau khi cài đặt hoàn tất, chúng ta có thể bắt đầu chạy tập lệnh của mình
Chạy Tập lệnh và Tạo Lưu đồ/Sơ đồ
Chạy chương trình với cú pháp sau Bạn cần sử dụng đúng chương trình cho đúng trường hợp sử dụng vì có hai
Đây là cú pháp để chạy python3 alb-diagram.py <region_name> <profile_name> Đây là cú pháp để chạy python3 clb-diagram.py <region_name> <profile_name> Nếu bạn không có hồ sơ được đặt tên, bạn chỉ cần nhập _______8_______ làm tên hồ sơ
Liên kết Github cho mã nguồnMã nguồn có sẵn tại liên kết sau. Vui lòng sao chép hoặc tạo PR cho những đóng góp https://github.com/AKSarav/AWS_ELB_Diagram
Liệt kê ELB với Nhóm mục tiêu và Phiên bản ( Bổ sung)Đây là cách nó bắt đầu. Các phiên bản trước của tập lệnh này in đầu ra JSON và TEXT của Tất cả ELB trong tài khoản AWS của bạn sẽ được thảo luận trong bài viết khác của chúng tôi Kiểm tra nó ra
Phần kết luậnHi vọng điêu nay co ich. Có nhiều điều tôi muốn thử và tiếp tục làm việc trên cùng một. Mọi đóng góp hoặc yêu cầu kéo đều được hoan nghênh để làm cho điều này tốt hơn Vì đây là mã nguồn mở. vui lòng cập nhật nó cho phù hợp với nhu cầu của bạn và đăng nó giúp ích như thế nào trong các bình luận để cả thế giới biết
Chúc mừng Theo dõi tôi trên Linkedin Hồ sơ của tôi Đăng ký nội dung độc quyền "chỉ dành cho người đăng ký" Tên* E-mail* Thêm từ Khoảng không quảng cáo phần mềm trung gian
|