zoukankan      html  css  js  c++  java
  • python 获取SLB信息 更换证书

    首先安装阿里云SDK

    pip install aliyun-python-sdk-core

    pip install aliyun-python-sdk-slb

    可以配合jenkins传递参数

    #获取slb的信息

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2018/1/18 0018 16:51
    # @Author  : sanmuyan
    # @File    : aliyun_slb.py
    import json, jsonpath, os
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkslb.request.v20140515 import DescribeLoadBalancersRequest
    
    
    def slb_info(AccessKey,Secret,Regions,slb_name,AddressType):
        # 创建 AcsClient 实例
        client = AcsClient(
            AccessKey,
            Secret,
            Regions
            );
        # 查看负载均衡实例
        request = DescribeLoadBalancersRequest.DescribeLoadBalancersRequest()
        if (slb_name != "all"):
            request.set_LoadBalancerName(slb_name)
        else:
            request.set_LoadBalancerName("")
    
        if (AddressType != "all"):
            request.set_AddressType(AddressType)
        else:
            request.set_AddressType("")
        response = client.do_action_with_exception(request)
        data = json.loads(response)
        data1 = jsonpath.jsonpath(data, "$.LoadBalancers.LoadBalancer.[*].LoadBalancerId")
        data2 = jsonpath.jsonpath(data, "$.LoadBalancers.LoadBalancer.[*].Address")
        data3 = jsonpath.jsonpath(data, "$.LoadBalancers.LoadBalancer.[*].LoadBalancerName")
    
        print("SLB基本信息")
        for i in range(len(data1)):
            print(data1[i], '=', data2[i], '=', data3[i])
        data = json.dumps(data, sort_keys=True, indent=2)
        data = data.encode('utf-8').decode('unicode_escape')
    
        print("打印出JSON格式数据")
        print(data)
    
    if __name__ == '__main__':    
        AccessKey = os.environ.get('AccessKey')
        Secret = os.environ.get('Secret')
        Regions = os.environ.get('Regions')
        slb_name = os.environ.get('slb_name')
        AddressType = os.environ.get('AddressType')
        slb_info (AccessKey,Secret,Regions,slb_name,AddressType)

    #更换证书

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2018/1/18 0018 16:51
    # @Author  : sanmuyan
    # @File    : aliyun_slb.py
    import json, jsonpath, os
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkslb.request.v20140515 import DescribeLoadBalancerHTTPSListenerAttributeRequest
    from aliyunsdkslb.request.v20140515 import SetLoadBalancerHTTPSListenerAttributeRequest
    
    def slb_set (LoadBalancerId,ListenerPort,ServerCertificateId,AccessKey,Secret,Regions):
        # 创建 AcsClient 实例
        client = AcsClient(
            AccessKey,
            Secret,
            Regions
        );
    
        # 获取配置前的信息
        request = DescribeLoadBalancerHTTPSListenerAttributeRequest.DescribeLoadBalancerHTTPSListenerAttributeRequest()
        request.set_LoadBalancerId(LoadBalancerId)
        request.set_ListenerPort(ListenerPort)
        response = client.do_action_with_exception(request)
        data = (json.loads(response))
        HealthCheck = (data['HealthCheck'])
    
        print("更新前的配置信息")
        print(json.dumps(data, sort_keys=True, indent=2))
    
        # 设置负载均衡实例
        request = SetLoadBalancerHTTPSListenerAttributeRequest.SetLoadBalancerHTTPSListenerAttributeRequest()
        request.set_LoadBalancerId(LoadBalancerId)  # 负载均衡实例的唯一标识
        request.set_ListenerPort(ListenerPort)  # 负载均衡实例前端使用的端口
        request.set_ServerCertificateId(ServerCertificateId)  # 证书ID
        request.set_Bandwidth(data['Bandwidth'])  # 监听的带宽峰值。取值:-1/1-1000Mbps
        request.set_StickySession(data['StickySession'])  # 是否开启会话保持
        request.set_HealthCheck(HealthCheck)  # 是否开启健康检查
    
        if (HealthCheck == "on"):
            request.set_HealthCheckURI(data['HealthCheckURI'])  # 监控检查url
            request.set_HealthCheckTimeout(data['HealthCheckTimeout'])  # 健康检查超时时间
            request.set_HealthCheckInterval(data['HealthCheckInterval'])  # 健康检查间隔时间
            request.set_HealthyThreshold(data['HealthyThreshold'])  # 健康检查健康阈值
            request.set_UnhealthyThreshold(data['UnhealthyThreshold'])  # 健康检查不健康阈值
            if "HealthCheckConnectPort" in data:
                request.set_HealthCheckConnectPort(data['HealthCheckConnectPort'])  # 健康检查端口
            else:
                print("HealthCheckConnectPort=default")
        else:
            print("HealthCheck=off")
    
        response = client.do_action_with_exception(request)
    
        print(response)
    
        print("更新后的配置信息")
        print(json.dumps(data, sort_keys=True, indent=2))
    
    
    if __name__ == '__main__':
        LoadBalancerId = os.environ.get('LoadBalancerId')
        LoadBalancerId = LoadBalancerId.strip(',').split(',')
        ListenerPort = os.environ.get('ListenerPort')
        ServerCertificateId = os.environ.get('ServerCertificateId')
        AccessKey = os.environ.get('AccessKey')
        Secret = os.environ.get('Secret')
        Regions = os.environ.get('Regions')
    
        print("需要部署",len(LoadBalancerId),"个实例")
        for i in LoadBalancerId:
            print (i)
        for i in range(len(LoadBalancerId)):
            print("+++++++++++++++++++++++++++++++++++++++++++++")
            print("正在配置","",i+1,"个实例",LoadBalancerId[i])
            slb_set (LoadBalancerId[i],ListenerPort,ServerCertificateId,AccessKey,Secret,Regions)
            print("+++++++++++++++++++++++++++++++++++++++++++++")
  • 相关阅读:
    Floppy Disk Driver Primer
    王少川: 现阶段 我国没必要开发自己的操作系统
    Why does DOS use 100% CPU under Virtual PC?
    “情感计算”的危机与哲学错误
    [转载] 国产OS? 中文CPU?
    理想与现实的关系思考
    在Virtual PC 中安 装ms dos 6.22 的方法
    How Microsoft Lost the API War.
    svn 功能概览
    as3里的regex不需要转义
  • 原文地址:https://www.cnblogs.com/37yan/p/8340880.html
Copyright © 2011-2022 走看看