Lưu đồ trong Python

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

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

Đây sẽ là một trợ giúp tuyệt vời cho SRE và DevOps/Kỹ sư đám mây để lưu giữ hồ sơ/sơ đồ thiết lập Cơ sở hạ tầng của họ và Duy trì nó tự động

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?

Lưu đồ trong Python

Mục lục

điều kiện tiên quyết

  • Python3 Phải được cài đặt
  • python pip phải được cài đặt để cài đặt các gói khác
  • Quyền truy cập IAM cần thiết để kết nối và lấy thông tin về ELB từ tài khoản AWS

 

Thiết lập không gian làm việc

Bạ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ồn

Bạ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

  • sơ đồ alb. py – Dành cho Ứng dụng và Cân bằng tải mạng
  • clb-sơ đồ. py – Dành 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ết

Bạ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

  • sơ đồ alb. py – dành cho Bộ cân bằng tải ứng dụng và Bộ cân bằng tải mạng
  • clb-sơ đồ. py – dành cho Cân bằng tải cổ điển

Đây là cú pháp để chạy alb-diagram.py để tạo sơ đồ cho Bộ cân bằng tải ứng dụng và mạng

python3  alb-diagram.py  <region_name> <profile_name>

Đây là cú pháp để chạy clb-diagram.py để tạo sơ đồ cho Cân bằng tải cổ điển

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ồn

Mã 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

AWS – Liệt kê tất cả ELB, NLB và CLB với Mục tiêu và Nhóm mục tiêu. Trăn Boto

 

 

Phần kết luận

Hi 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
Sarav AK

Lưu đồ trong Python

Theo dõi tôi trên Linkedin Hồ sơ của tôi
Theo dõi DevopsJunction trên Facebook hoặc Twitter
Để biết thêm các video và hướng dẫn thực tế. Hãy đăng ký theo dõi kênh của chúng tôi
Đối với bất kỳ tư vấn hoặc thuê chúng tôi

Lưu đồ trong Python

Đăng ký nội dung độc quyền "chỉ dành cho người đăng ký"

Tên*

E-mail*

Lưu đồ trong Python


Thêm từ Khoảng không quảng cáo phần mềm trung gian

  • Lưu đồ trong Python

    Tìm ai sở hữu IP riêng trong AWS. Ngã ba DevOps

    Tại thời điểm khắc phục sự cố hoặc thực hiện điều tra về sự cố bảo mật trong tài khoản AWS của bạn. Tìm ai sở hữu IP riêng đóng vai trò chính. Bạn có biết Hầu như tất cả các tài nguyên AWS như Load Balancers, RDS, EFS đều có địa chỉ IP riêng. Vậy làm sao để tìm…

  • Lưu đồ trong Python

    Cách khởi động lại tất cả các triển khai trong không gian tên - Kubectl. Giao lộ Devops

    Restart Namespace all Deployments after k8s v1.15 You can simply use the following command that takes care of restarting all the deployments in a namespace kubectl rollout restart deployment -n Restart all deployments in Namespace - before k8s v1.15 Instead of manually selecting each deployment in a namespace. you…

  • Lưu đồ trong Python

    Kubernetes khởi động lại daemonset - kubectl. Giao lộ Devops

    Trong bài viết nhanh này, chúng ta hãy tìm hiểu cách khởi động lại Kubernetes DaemonSet và tất cả các nhóm được tạo bởi DaemonSet. Trước khi chúng ta chuyển sang mục tiêu, đây là một số điều cơ bản. nhanh thật. DaemonSet là triển khai một ứng dụng/tính năng cụ thể cho cụm Kubernetes của bạn và để đảm bảo rằng nó…

  • Lưu đồ trong Python

    Chạy các lệnh AWS CLI trên Tất cả các vùng - awsall. Giao lộ Devops

    Công cụ awsall CLI là gì Đây là một giải pháp đơn giản mà chúng tôi đã tạo để thực thi các lệnh AWS CLI của bạn trên tất cả các khu vực AWS mà không phải lúc nào cũng phải đề cập đến đối số --region. Giả sử bạn muốn liệt kê các phiên bản dưới dạng bảng với các trường đã chọn nhưng bạn muốn…

  • Lưu đồ trong Python

    Ansible Copy tập tin hoặc thư mục - Local to Remote. Giao lộ Devops

    Trong bài viết này, chúng ta sẽ xem cách sao chép hoặc SCP các tệp và thư mục từ cục bộ sang điều khiển từ xa. Điều khiển máy đến máy chủ từ xa. Chúng ta sẽ tìm hiểu cách chuyển các tệp SCP từ cục bộ sang máy chủ từ xa Ansible có các mô-đun chuyên dụng để hỗ trợ sao chép giữa…

    Lưu đồ trong Python là gì?

    Lưu đồ là biểu diễn đồ họa của một thuật toán . Các lập trình viên thường sử dụng nó như một công cụ lập kế hoạch chương trình để giải quyết vấn đề. Nó sử dụng các biểu tượng được kết nối giữa chúng để biểu thị luồng thông tin và quá trình xử lý. Quá trình vẽ lưu đồ cho một thuật toán được gọi là “lưu đồ”.

    3 loại lưu đồ là gì?

    Năm 1987, Andrew Veronis đã xuất bản cuốn sách có tên Bộ vi xử lý. Thiết kế và Ứng dụng đã mô tả ba loại sơ đồ sau. .
    Lưu đồ hệ thống
    lưu đồ chung
    lưu đồ chi tiết

    Sự khác biệt giữa thuật toán và lưu đồ trong Python là gì?

    Thuật toán và sơ đồ là các cơ chế khác nhau được sử dụng để thiết kế các chương trình khác nhau, đặc biệt là trong lập trình máy tính. Thuật toán là bản tóm tắt từng bước của quy trình, mặt khác, lưu đồ minh họa các bước của chương trình bằng đồ họa .

    Các yếu tố cơ bản của lưu đồ trong Python là gì?

    4 Ký hiệu lưu đồ cơ bản để tạo lưu đồ .
    hình bầu dục. Kết thúc hoặc bắt đầu trong khi tạo lưu đồ. Hình bầu dục, hoặc dấu kết thúc, được sử dụng để biểu thị điểm bắt đầu và kết thúc của một quy trình. .
    Hình chữ nhật. Một bước trong quy trình lưu đồ. .
    Mũi tên. Chỉ ra dòng chảy định hướng. .
    Kim cương. Chỉ ra Quyết định

    Lưu đồ có phải là mã giả không?

    Cả lưu đồ và mã giả đều được sử dụng trước khi viết mã, nhưng mã giả là tuyến tính trong khi lưu đồ thì không . Ngoài ra, lưu đồ là đồ họa, trong khi mã giả là kỹ thuật. Với ý nghĩ đó, một sơ đồ luồng phù hợp để giao tiếp giữa những người không có kỹ thuật và lập trình viên.

    Tại sao Python liên quan đến lưu đồ?

    Sơ đồ Python về cơ bản là ngôn ngữ lập trình Python ở dạng trực quan . Bạn viết một chương trình bằng cách thiết lập một lưu đồ. Khi bạn chạy lưu đồ, phần mềm sẽ biên dịch thành mã byte python, để bạn có thể dễ dàng nhập các mô-đun bạn viết trong Lưu đồ Python vào các chương trình Python tiêu chuẩn.