zoukankan      html  css  js  c++  java
  • python 创建aws slb

    #!/usr/bin/env python
    # _*_coding:utf-8_*_
    
    import boto3
    import json
    import sys
    
    class Elbv2():
    
        def __init__(self,**kwargs):
            self.app = kwargs['app']
            self.env = kwargs['env']
            self.port = kwargs['port']
            self.vpcid = kwargs['vpcid']
            self.client_elb = boto3.client('elbv2')
    
    
        def create_elb(self,**kwargs):
            num = kwargs['num']
            elbtype = kwargs['elbtype']
            scheme = kwargs['scheme']
            #seg = kwargs['securitygroups']
            subnets = kwargs['subnets']
            iptype = kwargs['iptype']
            response = self.client_elb.create_load_balancer(
                Name='elb-{0}-{1}-{2}'.format(self.env,self.app,num),
                Subnets=subnets,
                Scheme=scheme,
                Type=elbtype,
                IpAddressType=iptype
            )
    
            return response
    
    
        def create_elb_trgroup(self,**kwargs):
            num = kwargs['num']
            protocol = kwargs['Protocol']
            elbtype = kwargs['elbtype']
            targettype = kwargs['TargetType']
    
            if elbtype == "network":
                response = self.client_elb.create_target_group(
                    Name='trg-{0}-{1}-{2}'.format(self.env,self.app,num),
                    Protocol=protocol,
                    Port=self.port,
                    VpcId=self.vpcid,
                    TargetType=targettype
                )
                return response
            else:
                response = self.client_elb.create_target_group(
                    Name='trg-{0}-{1}-{2}'.format(self.env,self.app,num),
                    Protocol=protocol,
                    Port=self.port,
                    VpcId=self.vpcid,
                    Matcher={
                        'HttpCode': '200-399'
                    },
                    TargetType=targettype
                )
                return response
    
        def create_elb_listener(self,**kwargs):
            elbarn = kwargs['LoadBalancerArn']
            protocol = kwargs['Protocol']
            tgarn = kwargs['TargetGroupArn']
            actiontype = kwargs['Actiontype']
    
            if protocol == 'HTTP':
                response = self.client_elb.create_listener(
                    DefaultActions=[
                        {
                            'TargetGroupArn': tgarn,
                            'Type': actiontype,
                        },
                    ],
                    LoadBalancerArn=elbarn,
                    Port=80,
                    Protocol='HTTP',
                )
                return response
    
            elif protocol == 'TLS':
                CAarn = kwargs['CertificateArn']
                response = self.client_elb.create_listener(
                    Certificates=[
                        {
                            'CertificateArn': CAarn,
                        },
                    ],
                    DefaultActions=[
                        {
                            'TargetGroupArn': tgarn,
                            'Type': actiontype,
                        },
                    ],
                    LoadBalancerArn=elbarn,
                    Port=443,
                    Protocol='HTTPS',
                )
                return response
    
            else:
                response = self.client_elb.create_listener(
                    DefaultActions=[
                        {
                            'TargetGroupArn': tgarn,
                            'Type': actiontype,
                        },
                    ],
                    LoadBalancerArn=elbarn,
                    Port=self.port,
                    Protocol='TCP',
                )
                return response
    
        def register_targets(self,Instanceid1,Instanceid2,**targetarg):
            TGarn = targetarg['TGarn']
            Port = targetarg['Port']
            response = self.client_elb.register_targets(
                TargetGroupArn=TGarn,
                Targets=[
                    {
                        'Id': Instanceid1,
                        'Port': Port,
                    },
                    {
                        'Id': Instanceid2,
                        'Port': Port,
                    },
                ]
            )
            return response
    
    
        def delete_elb(self,elbarn):
            response = self.client_elb.delete_load_balancer(
                LoadBalancerArn=elbarn
            )
            return response
    
        def delete_trgroup(self,tgarn):
            response = self.client_elb.delete_target_group(
                TargetGroupArn=tgarn
            )
            return response
    
        def delete_listen(self,lisarn):
            response = self.client_elb.delete_listener(
                ListenerArn=lisarn
            )
            return response
    
    
    if __name__ == '__main__':
        #client_elb = boto3.client('elbv2')
    
        instancearg = {"app":"mintest","env":"ops","port":8009,"vpcid":"vpc-03fedcxxxxxxx"}
        newelb = Elbv2(**instancearg)
    
        #elb_arg = load_f_dict['elb']
        elb_arg = {"num":"001","elbtype":"network","scheme":"internet-facing","iptype": "ipv4","subnets":["xxx","xxxx"]}
        newelb_create = newelb.create_elb(**elb_arg)
        print(newelb_create)
    
        #trgoup_arg = load_f_dict['elbtrg']
        trgoup_arg = {"vpcid":"vpc-03fedca7bfxxxxx","num":"001","elbtype":"network","Protocol":"TCP","TargetType":"instance"}
        newelb_trgoup = newelb.create_elb_trgroup(**trgoup_arg)
        print(newelb_trgoup)
    
        elbarn = newelb_create['LoadBalancers'][0]['LoadBalancerArn']
        #elbarn = 'arn:aws:elasticloadbalxxxxxxx......'
        tgarn = newelb_trgoup['TargetGroups'][0]['TargetGroupArn']
        #tgarn = 'arn:aws:elasticloadbxxxxxxx........'
        caarn = "arn:aws:acm:ap-southeast-1:41846537xxxxxxxxx.........."
        listener_arg = {"Protocol": "TCP", "LoadBalancerArn": elbarn, "TargetGroupArn": tgarn, "Actiontype": "forward", "CertificateArn": caarn}
        #listener_arg = load_f_dict['elblistener']
        newelb_listener = newelb.create_elb_listener(**listener_arg)
        print(newelb_listener)

      

  • 相关阅读:
    [转]char、varchar、nchar、nvarchar的区别
    【转】Asp.net 2.0中页的生存周期(Lifecycle)和动态控件 [.Net]
    git免登录sshkey
    ios8,xcode6 周边
    iOS 推送证书
    Lazarus中TreeView导出XML以及XML导入TreeView
    flac文件提取专辑封面手记
    Lazarus解决含中文文件名或路径的使用问题
    使用PowerShell管理Windows8应用
    thbgm拆包【in progress】
  • 原文地址:https://www.cnblogs.com/dy11/p/11853926.html
Copyright © 2011-2022 走看看