近年来,运维人员最大的变化可能是公有云的出现。我相信很多小伙伴的公司业务可能会在公有云上运行, ?由于公司的业务关系,我很早就接触到了公共云。大约12年后,我开始使用亚马逊云。后来,我逐渐接触到了中国的阿里巴巴和腾讯云。随着公司业务在中国的发展,近年来我们也使用了许多国内公共云制造商,因此,我在云运维方面也积累了一些经验。从传统的物理机器到公共云运维,我个人认为最大的问题是你是否可以思考公共云的想法,以实现一个安全、稳定、可伸缩和经济的商业框架。
云运维不同于传统的运维。例如,了解公共云的人都知道安全组的概念。安全组的功能与防火墙非常相似。我的机器是设置iptables还是安全组?iptables是否设置了安全组?他们有什么区别?我相信很多人对此感到困惑。根据我个人的经验(因为我在接触亚马逊后从未为云主机配置过iptables),我的建议是,如果我能使用安全组,我就不需要iptables来管理机器,因为它们有本质的区别:
首先,安全组在宿主上拦截,iptables在系统层面拦截,也就是说,如果有人想攻击你,你使用安全组,攻击包根本不能到达你的机器。
第二,iptables的配置是一个复杂的项目。如果你粗心大意,后果是毁灭性的。我猜如果你有2年的操作和维护经验,你应该有把自己关在主机外面的经验。如果使用安全组,这方面是可控的。即使有问题,你基本上也能很快恢复。
立即学习“Python免费学习笔记(深入);
第三,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。这里介绍脚本。欢迎留言交流。
以上是Python如何批量为云主机配置安全组?详情请关注其他相关文章!
如何批量为云主机配置Python安全组?-LINUX
谷歌网页内容受限?破解复制难题!
使用Cream 提高 Vim 用户友好技能-LINUX
内容保护升级,禁止复制至外部应用!
windows update在哪里找到-Windows系列
远程计算机无踪影,任务计划难执行!
windows update禁用后自动打开怎么办?Windows系列
使用Cream 提高 Vim 用户友好技能-LINUX
windows update在哪里找到-Windows系列
windows update禁用后自动打开怎么办?Windows系列
windows update已完成35%-Windows系列
windowsupdate拒绝访问如何解决-windows系列
windows update有什么用?Windows系列
努比亚红魔9S Pro系列真机曝光:屏幕前摄像头和纯玻璃背板抢眼-IT行业
基于文本的开源操作系统 FreeDOS 迎来 30 生日还活跃在复古游戏领域——IT行业
当训练数据集与测试数据集分布相同时,机器学习模型可以表现出优越的性能。但在开放的世界环境中,模型经常会遇到分布外的情况(out-of-distribution, ood,下称“ood“)样本,ood样本可能导致模型不可预测的行为,错误的后果可能是致命的,特别是在自动驾驶等高风险场景中 [1, 2]。因此,ood检测对于确保机器学习模型在实际部署中的可靠性至关重要。
大多数OOOOOD检测方法 [1, 3] 训练有素的分布可以基于训练有素的分布
努比亚红魔9S Pro的新亮相:继续真正的全屏和纯平背设计-IT行业
华为MatePad SE新产品预售,1299元起享受11英寸护眼享受-IT行业
特斯拉推出了五年零利率政策,Model 3日供只需85元起!-IT行业