首页 文章 精选 留言 我的

精选列表

搜索[参考文献管理],共10000篇文章
优秀的个人博客,低调大师

用python(pyvmomi)管理vmware ESXi/vCenter

环境 开发环境:Ubuntu 18.04 + python3.7以下环境经过测试都可以使用:centos 6/7 + python3.4/3.6/3.7 和windows 7/2016 +python3.4/3.6/3.7 安装必要模块pyvmomi pip install pyvmomi 如果是linux系统有pip2和pip3 两个版本,需要使用 pip3 install pyvmomi 代码 host='ESXi 机器ip' user='root' password='密码' port=443#端口 context = None if hasattr(ssl, '_create_unverified_context'): context = ssl._create_unverified_context() si = SmartConnect(host=host,user=user,pwd=password,port=port,sslContext=context) if not si: print("帐号密码有问题") atexit.register(Disconnect, si) ################################################################################################### def WaitForTasks(tasks, si):#任务 pc = si.content.propertyCollector taskList = [str(task) for task in tasks] objSpecs = [vmodl.query.PropertyCollector.ObjectSpec(obj=task) for task in tasks] propSpec = vmodl.query.PropertyCollector.PropertySpec(type=vim.Task,pathSet=[], all=True) filterSpec = vmodl.query.PropertyCollector.FilterSpec() filterSpec.objectSet = objSpecs filterSpec.propSet = [propSpec] filter = pc.CreateFilter(filterSpec, True) try: version, state = None, None while len(taskList): update = pc.WaitForUpdates(version) for filterSet in update.filterSet: for objSet in filterSet.objectSet: task = objSet.obj for change in objSet.changeSet: if change.name == 'info': state = change.val.state elif change.name == 'info.state': state = change.val else: continue if not str(task) in taskList: continue if state == vim.TaskInfo.State.success: taskList.remove(str(task)) elif state == vim.TaskInfo.State.error: raise task.info.error version = update.version finally: if filter: filter.Destroy() def getvmname():#打印所有虚拟机名 content = si.RetrieveContent() for child in content.rootFolder.childEntity: if hasattr(child, 'vmFolder'): datacenter = child vmFolder = datacenter.vmFolder vmList = vmFolder.childEntity for vm in vmList: print(vm.summary.config.name) print(vm.name) def getvmstatus(vm_name):#获取虚拟机状态 content = si.RetrieveContent() for child in content.rootFolder.childEntity: if hasattr(child, 'vmFolder'): datacenter = child vmFolder = datacenter.vmFolder vmList = vmFolder.childEntity for vm in vmList: if vm.summary.config.name == vm_name : print(vm.summary.runtime.powerState) def poweronvm(vm_name):#打开虚拟机 content = si.content objView = content.viewManager.CreateContainerView(content.rootFolder,[vim.VirtualMachine],True) vmList = objView.view objView.Destroy() tasks = [vm.PowerOn() for vm in vmList if vm.name in vm_name] print(tasks) WaitForTasks(tasks, si) print("虚拟机启动成功") def get_vmsnapshotinfo(vm_name):#查看快照信息 content = si.RetrieveContent() container = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True) for c in container.view: if c.name == vm_name: snapshots = c.snapshot.rootSnapshotList return snapshots def get_vmlist():#获取虚拟机列表 content = si.RetrieveContent() for child in content.rootFolder.childEntity: if hasattr(child, 'vmFolder'): datacenter = child vmFolder = datacenter.vmFolder vmList = vmFolder.childEntity return vmList def re_snapshot(vm_name,snapshot_name):##恢复快照 for vm in get_vmlist(): pass #print(vm.name) if vm.name == vm_name: snapshots = vm.snapshot.rootSnapshotList for snapshot in snapshots: print(snapshot.name) if snapshot_name == snapshot.name: snap_obj = snapshot.snapshot print ("恢复快照", snapshot.name) task = [snap_obj.RevertToSnapshot_Task()] WaitForTasks(task, si) #re_snapshot("虚拟机名","快照名") #恢复快照 #print(get_vmsnapshotinfo("虚拟机名")) #获取虚拟机快照信息 #print(get_vmsnapshotinfo("虚拟机名"))#查看虚拟机快照 #poweronvm("虚拟机名") #打开虚拟机 其它功能我闲了就增加如果有其它着急需求或者使用方法可以回帖寻求帮助

优秀的个人博客,低调大师

docker管理神器—kubernetes—直接路由篇

一般情况下,两个node之间并不能通信,现在使用直连路由加Quagga的方式实现不同Node节点间的pod互联。 4.1、修改docker0的ip地址 在minion1上 #ifconfig docker0 10.1.10.1/24 修改docker配置文件 vi/etc/sysconfig/docker 添加: OPTIONS='--bip=10.1.10.1/24' 重启 systemctl restart docker 在centos-minion01上添加到centos-minion2的路由 route add -net 10.1.20.0 netmask 255.255.255.0 gw 192.168.137.100 在centos-minion02上, 添加到centos-minion01路由 route add -net 10.1.10.0 netmask 255.255.255.0 gw 192.168.137.101 (我这里因为只用了一个minion,所以直接使用master测试) 4.2、使用Quagga动态添加路由 为了减少手工添加路由,可以使用Quagga实现路由规则的动态添加。为简单起见,我们使用docker镜像。 #docker pull index.alauda.cn/georce/router 在每个node上启动容器 Quagga需要以–privileged特权模式运行,并且指定–net=host,表示直接使用物理机的网络。 #docker run -itd --name=router --privileged --net=host index.alauda.cn/georce/router 启动成功后,Quagga会相互学习来完成到其他机器的docker0路由规则的添加。 # route -n 测试: # ping 10.1.10.1 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860298,如需转载请自行联系原作者

优秀的个人博客,低调大师

docker管理神器—kubernetes—flannel网络篇

5.1、flannel介绍 flannel 是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络 (overlay network) 工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。Kubernetes 会为每一个 POD 分配一个独立的 IP 地址,这样便于同一个 POD 中的 Containers 彼此连接,flannel通过在集群中创建一个覆盖网格网络 (overlay mesh network) 为主机设定一个子网。 5.2、etcd设置 5.2.1、设置fannel网络段 # etcdctl set /coreos.com/network/config '{"Network":"10.2.0.0/16"}' 5.2.2、修改配置文件 把/etc/etcd/etcd.conf里的ETCD_LISTEN_CLIENT_URLS=”http://localhost:2379″中的locahost改为0.0.0.0 5.3、flannel安装配置(所有node节点都需要安装) 5.3.1、wgethttps://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz 5.3.2、tar -xzvf flannel-0.5.5-linux-amd64.tar.gz 5.3.3、安装 直接复制解压出来的两个文件到可执行目录就可以 #cp flannel-0.5.5/flanneld /usr/bin #cp flannel-0.5.5/mk-docker-opts.sh /usr/bin 5.3.4、配置 vi/etc/sysconfig/flanneld 添加: # Flanneld configuration options # etcd url location FLANNEL_ETCD="http://centos-master:2379" # etcs config key FLANNEL_ETCD_KEY="/coreos.com/network" # Any additonal options #FLANNEL_OPTIONS= 5.3.5、编辑服务文件/usr/lib/systemd/system/flanneld.service 添加: [Unit] Description=Flanneld overlay address etcd agent After=network.target Before=docker.service [Service] Type=notify EnvironmentFile=-/etc/sysconfig/flanneld EnvironmentFile=-/etc/sysconfig/docker-network ExecStart=/usr/bin/flanneld \ -etcd-endpoints=${FLANNEL_ETCD} \ $FLANNEL_OPTIONS [Install] RequiredBy=docker.service WantedBy=multi-user.target 或者直接启动: flanneld -iface=eno16777736 -etcd-endpoints=http://centos-master:2379& (绑定一个正常工作的网卡) 5.4、暂停docker服务 #systemctl stop docker 5.6、执行脚本(修改一下docker) #systemctl start flanneld #mk-docker-opts.sh -i #source /run/flannel/subnet.env #ifconfig docker0 ${FLANNEL_SUBNET} #systemctl start docker 5.7、测试 在centos-minion上ip a查看可以看到flannel0的网卡信息 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860301,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册