伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

python批量给云主机配置安全组

来源:本站原创 浏览:110次 时间:2022-08-28

这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上,  因为公司业务关系,我个人接触公有云非常的早,大概在12年左右就是开始使用亚马逊云,后来逐渐接触到国内的阿里,腾讯云等,随着公司业务往国内发展,这几年我们也使用了很多国内的公有云厂商,所以在云运维方面也积累了一些经验,从传统的物理机到公有云运维,我个人认为最大的问题就是你能不能用公有云的思路去思考去实现一个安全稳定、可伸缩和经济的业务构架,云运维是有别与传统运维的,比如说了解公有云的都知道安全组的概念,安全组跟防火墙功能很相似,那我的机器是要设置iptables还是要设置安全组呢?设置了安全组还要设置iptables吗?他们有什么区别?我相信很多人对这些有些困惑,以我个人经验(因为我接触亚马逊后就再也没有给云主机配置过iptables了),我给的建议是如果可以用安全组就不用iptables来管理机器,因为它们有本质的区别:

第一,安全组是在宿主上面的拦截,iptables是在系统层面的拦截,也就是说如果有人想***你,你采用的是安全组方式,这个***包根本就到不了你机器上。

第二,配置iptables是项复杂的工程,如果稍有不慎,后果是毁灭性的,我猜测有过2年运维经验小伙伴应该有把自己关在主机外面的经历,如果采用安全组这方面是可控的,即使有问题,你基本上也可以快速恢复。

第三,iptables是在每台服务器上写大量的重复规则,而且不可以分层去管理这些规则,安全组是按层来管理机器的安全配置,只需调整你需要改动的部分就可以实现批量去管理机器。

ok,概念就介绍到这里,接下来我们要上干货了,因为给几百台机器配置不同的安全组也是个大工程,如果你在控制台去操作,我想你会疯掉,所以这就说到如何去批量管理和操作这些安全组,这里用到了公有云提供的API,因为公有云j基本都有自己的API接口,所以调用他们的API来实现一些自动化操作我认为是每个使用公有云来构架自己业务的运维必须要学会的,今天我就分享下如何批量给大量机器添加和移除安全组,脚本本身是在qcloudcli的基础上封装了一层,脚本如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*- 


import subprocess

import json

import sys

import argparse


def R(s):

    return "%s[31;2m%s%s[0m"%(chr(27), s, chr(27))


def get_present_sgid(vmid):

    descmd = '/usr/bin/qcloudcli dfw  DescribeSecurityGroups --instanceId ' + vmid.strip()

    p = subprocess.Popen(descmd, shell=True, stdout=subprocess.PIPE)  

    output = p.communicate()[0]

    res = json.loads(output)

    sgid = []

    for d in res['data']:

        sid = d['sgId']

        sgid.append(str(sid))

    return sgid


def make_json(vmid,sgid):

    pdata = {}

    pdata["instanceId"] = vmid

    pdata["sgIds"] = sgid

    pjson = json.dumps(pdata)

    return pjson


def add_sgid(vmfile,newsid):

    fi = open(vmfile)

    for v in fi:

        v = v.strip()

        res = get_present_sgid(v)

        print res

        res.append(newsid)

        pjson = make_json(v,res)

        modcmd = 'qcloudcli dfw ModifySecurityGroupsOfInstance --instanceSet ' + "'[" + pjson+ "]'"

        p = subprocess.Popen(modcmd, shell=True, stdout=subprocess.PIPE)

        output = p.communicate()[0]

        print output


def remove_sgid(vmfile,newsid):

    fi = open(vmfile)

    for v in fi:

        v = v.strip()

        res = get_present_sgid(v)

        res.remove(newsid)

        pjson = make_json(v,res)

        modcmd = 'qcloudcli dfw ModifySecurityGroupsOfInstance --instanceSet ' + "'[" + pjson+ "]'"

        p = subprocess.Popen(modcmd, shell=True, stdout=subprocess.PIPE)

        output = p.communicate()[0]

        #print output



if __name__ == "__main__":

    parser=argparse.ArgumentParser(description='change sgid', usage='%(prog)s [options]')

    parser.add_argument('-f','--file', nargs='?', dest='filehost', help='vmidfile')

    parser.add_argument('-g','--sgid', nargs='?', dest='sgid', help='sgid')

    parser.add_argument('-m','--method', nargs='?', dest='method', help='Methods only support to add or remove')

    if len(sys.argv)==1:

        parser.print_help()

    else:

        args=parser.parse_args()

        if args.filehost is not None and args.sgid is not None and args.method is not None:

            if args.method == 'add':

                add_sgid(args.filehost, args.sgid)

            elif args.method == 'remove':

                remove_sgid(args.filehost, args.sgid)

            else:

                print R('Methods only support to add or remove')

        else:

            print R('Error format, please see the usage:')

            parser.print_help()


这个脚本支持批量增加和删除某个安全组,-f后面接一个文件,写入实例的id的列表,-g后面是要增加和删除的安全组Id,-m后面支持add 和remove操作,就是增加或删除,脚本整体思路是先找出实例的安全组列表,然后将新的安全组Id在列表中加入或移除,脚本就介绍到这里,欢迎小伙伴们留言交流。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net