设为首页 收藏本站
查看: 1556|回复: 0

[经验分享] saltstack之virt模块创建虚拟机分析之二

[复制链接]

尚未签到

发表于 2018-8-1 09:30:42 | 显示全部楼层 |阅读模式
  那今天说下第2种,命令执行格式如下:
  salt 'kvm.tiancity.com' virt.init web20 4 512 nic=nics disk=system
  在这里,我们需要注意下对与kvm/qemu不允许使用profile,我们需要将virt.py改下代码:
DSC0000.jpg

  这样,就允许我的试验环境了。
  我的想法是,我的虚拟机镜像文件被存储在
  /var/lib/libvirt/images/web20/system.raw,看下我如何构造磁盘的数据结构呢.
  diskp=[{'system':{'size':'8192','format':'raw','model':'virtio','pool':'/var/lib/libvirt/images'}}]
  从分析代码中,
  default = [
  {'system':
  {'size': '8192'}
  }
  ]
  elif hypervisor in ['qemu', 'kvm']:
  overlay = {'format': 'qcow2',
  'model': 'virtio',
  'pool': __salt__['config.option']('virt.images')
  }
  disklist = __salt__['config.get']('virt:disk', {}).get(profile, default)
  看出来没,在没有提供disk的profile的情况下,我们使用的是default的数据,再使用
  for key, val in overlay.items():
  for i, disks in enumerate(disklist):
  for disk in disks:
  if key not in disks[disk]:
  disklist[disk][key] = val
  就会获取到disklist=
  [{'system': {'format': 'qcow2',
  'model': 'virtio',
  'pool': '/srv/salt-images',
  'size': '8192'}}]
  在这里我需要改变pool,那么我咋整呢?我可以用grains,pillar来设置.
  root@saltstack:/srv/salt/_grains# more virt_disk_nic.py
  def disk_profile():
  grains = {}
  grains['virt']={'disk':{}}
  grains['virt']['disk']['system']={}
  grains['virt']['disk']['system']=[{'system':{'format':'raw','pool':'/var/lib/libvirt/images'}}]
  return grains
  同步grains
  root@saltstack:/srv/salt/_grains# salt 'kvm.tiancity.com' saltutil.sync_all
  kvm.tiancity.com:
  ----------
  grains:
  - grains.virt_disk_nic
  modules:
  outputters:
  renderers:
  returners:
  states:
  测试:
  root@saltstack:/srv/salt/_grains# salt 'kvm.tiancity.com' config.get virt:disk --output=json
  {
  "kvm.tiancity.com": {
  "system": [
  {
  "system": {
  "pool": "/var/lib/libvirt/images",
  "format": "raw"
  }
  }
  ]
  }
  }
  那么对应的profile名字是system,所以,如果你想使用另类的profile名字,你仅需要修改的
  grains['virt']['disk']['system(profile名字)']={}
  接下来,我们再来构造网卡的构造
  default = [{'eth0': {}}]
  kvm_overlay = {'type': 'bridge', 'source': 'br0', 'model': 'virtio'}
  config_data = __salt__['config.get']('virt:nic', {}).get(
  profile_name, default
  )
  interfaces=[]
  elif isinstance(config_data, list):
  for interface in config_data:
  if isinstance(interface, dict):
  if len(interface.keys()) == 1:
  append_dict_profile_to_interface_list(interface)
  else:
  interfaces.append(interface)
  以上几处便是将interface网卡相关属性信息添加到interfaces列表中的
  interfaces=[{'name':'eth0','type':'bridge','source':'br0','mac':'AC:DE:48:5D:9C:B4','model': 'virtio'}]
  那么网卡和磁盘的构造:
  def disk_nic():
  grains = {}
  grains['virt']={'disk':{},'nic':{}}
  grains['virt']['disk']['system']={}
  grains['virt']['nic']['nics']=[{'eth0':{'bridge':'br0'}}]
  grains['virt']['disk']['system']=[{'system':{'format':'raw','pool':'/var/lib/libvirt/images'}}]
  return grains
  测试:
  root@saltstack:/srv/salt/_grains# salt 'kvm.tiancity.com' config.get virt:nic --output=json
  {
  "kvm.tiancity.com": {
  "nics": [
  {
  "eth0": {
  "bridge": "br0"
  }
  }
  ]
  }
  }
  好了,我们所有的东西都构造好了,那么我们来执行下,看看能不能正常启动我的虚拟机web20,当然镜像文件已经放置好到/var/lib/libvirt/images/web20/system.raw
  开始执行吧...
DSC0001.jpg

  秒开....
DSC0002.jpg

DSC0003.jpg

  哈哈。下次,我再尝试下,添加一块数据盘和添加一块网卡。
  到时再看看能不能正常启动。
  如果想了解更多,请关注我们的公众号
  公众号ID:opdevos
  扫码关注
DSC0004.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544544-1-1.html 上篇帖子: saltstack之virt模块创建虚拟机分析 下篇帖子: saltstack之virt模块创建虚拟机分析之三
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表