t2d.ansible_role_libvirt_vm

Libvirt 虚拟机

该角色在 KVM 虚拟机监控器上配置和创建(或销毁)虚拟机。

要求

主机应启用虚拟化技术(VT),并应预先配置 libvirt/KVM。

角色变量

  • libvirt_vm_default_console_log_dir:存储虚拟机控制台日志的默认目录,如果未指定虚拟机特定的日志文件路径。默认值为 "/var/log/libvirt/qemu/"。

  • libvirt_vm_image_cache_path:缓存下载图像的目录。默认值为 "/tmp/"。

  • libvirt_volume_default_images_path:存储实例图像的目录。默认值为 '/var/lib/libvirt/images'。

  • libvirt_volume_default_type:实例使用的后备卷的类型。默认值为 volume

  • libvirt_volume_default_format:角色创建的卷的格式,默认值为 qcow2

  • libvirt_volume_default_device:控制设备在客户操作系统中的显示方式。默认值为 disk

  • libvirt_vm_engine:虚拟化引擎。如果未设置,角色将尝试自动检测要使用的最佳引擎。

  • libvirt_vm_emulator:模拟器二进制文件的路径。如果未设置,角色将尝试自动检测要使用的正确模拟器。

  • libvirt_cpu_mode_default:如果 libvirt_cpu_modevm.cpu_mode 未定义,则为默认 CPU 模式。

  • libvirt_vm_arch:CPU架构,默认值为 x86_64

  • libvirt_vm_uri:覆盖 libvirt 连接 URI。有关更多细节,请参见 libvirt 文档

  • libvirt_vm_virsh_default_env:包含在此字典中的变量会在执行 virsh 命令时添加到环境中。

  • libvirt_vm_clock_offset:如果定义,实例的时钟偏移设置为提供的值。当未定义时,同步设置为 localtime

  • libvirt_vms:要创建/销毁的虚拟机列表。每台虚拟机可以有以下属性:

    • state:设置为 present 以创建或 absent 以销毁虚拟机。默认值为 present

    • name:要分配给虚拟机的名称。

    • memory_mb:分配给虚拟机的内存,以兆字节为单位。

    • vcpus:分配给虚拟机的虚拟 CPU 核心数量。

    • machine:虚拟机类型。如果 libvirt_vm_enginekvm,默认值为 None,否则为 pc-1.0

    • cpu_mode:虚拟机 CPU 模式。如果 libvirt_vm_enginekvm,默认值为 host-passthrough,否则为 host-model。可以设置为 none 不配置 CPU 模式。

    • clock_offset:覆盖在 libvirt_vm_clock_offset 中设置的默认值。

    • enable_vnc:如果为 true,则在本地主机上启用 VNC 监听,以便与 VirtManager 和类似工具配合使用。

    • volumes:附加到虚拟机的卷列表。每个卷通过以下字典定义:

      • pool:应分配卷的存储池的名称或 UUID。
      • name:与要创建的卷关联的名称;对于 file 类型的卷,如果希望创建的卷有扩展名,请包含扩展名。
      • file_pathfile 类型卷的图像应放置的位置;默认为 libvirt_volume_default_images_path
      • devicediskcdrom
      • capacity:卷容量(可以以 M,G,T 或 MB,GB,TB 等为后缀)(当类型为 disk 时必需)。
      • format:选项包括 rawqcow2vmdk。有关完整范围,请参见 man virsh。默认值为 qcow2
      • image:(可选)用于初始化卷的图像的 URL(完整拷贝)。
      • backing_image:(可选)假定已经在同一池中的后备卷的名称(写时复制)。
      • imagebacking_image 是互斥选项。
      • target:(可选)手动影响卷的类型和顺序。
    • interfaces:附加到虚拟机的网络接口列表。每个网络接口通过以下字典定义:

      • type:接口类型。可能的值:
        • network:将接口连接到命名的 Libvirt 虚拟网络。这是默认值。
        • direct:将接口直接连接到主机的一个物理接口,使用 macvtap 驱动程序。
      • network:接口应连接到的网络名称。如果和仅当接口 typenetwork 时,必须指定。
      • mac:虚拟实例的“硬件”地址,如果缺失,则创建一个。
      • source:定义此虚拟机接口应连接到的主机接口的字典。如果和仅当接口 typedirect 时,必须指定。包括以下属性:
        • dev:此虚拟机接口应连接到的主机接口的名称。
        • mode:选项包括 vepabridgeprivatepassthrough。有关更多细节,请参见 man virsh。默认值为 vepa
    • console_log_enabled:如果为 true,则将控制台输出记录到 console_log_path 指定的文件,而不是记录到 PTY。如果为 false,则将终端输出定向到串行端口 0 上的 PTY。默认值为 false

    • console_log_path:控制台日志文件的路径。默认值为 {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log

    • start:定义后是否立即启动虚拟机。默认值为 true

    • autostart:主机启动时是否启动虚拟机。默认值为 true

    • xml_file:可选提供修改的 XML 模板。基于默认的 vm.xml.j2 模板进行定制,以包括角色使用的预期 jinja 表达式。

注意:以下变量已弃用:libvirt_vm_statelibvirt_vm_namelibvirt_vm_memory_mblibvirt_vm_vcpuslibvirt_vm_enginelibvirt_vm_machinelibvirt_vm_cpu_modelibvirt_vm_volumeslibvirt_vm_interfaceslibvirt_vm_console_log_path。如果变量 libvirt_vms 未设置,其默认值将是一个包含使用这些弃用变量的虚拟机规范的单例列表。

依赖关系

如果使用 qcow2 格式的驱动程序,必需使用 qemu-img(在 qemu-utils 包中)。

示例剧本

---
- name: 创建虚拟机
  hosts: hypervisor
  roles:
    - role: stackhpc.libvirt-vm
      libvirt_vms:
        - state: present
          name: 'vm1'
          memory_mb: 512
          vcpus: 2
          volumes:
            - name: 'data1'
              device: 'disk'
              format: 'qcow2'
              capacity: '400GB'
              pool: 'my-pool'
            - name: 'debian-10.2.0-amd64-netinst.iso'
              type: 'file'
              device: 'cdrom'
              format: 'raw'
              target: 'hda'  # ide总线上的第一个设备
          interfaces:
            - network: 'br-datacentre'

        - state: present
          name: 'vm2'
          memory_mb: 1024
          vcpus: 1
          volumes:
            - name: 'data2'
              device: 'disk'
              format: 'qcow2'
              capacity: '200GB'
              pool: 'my-pool'
            - name: 'filestore'
              type: 'file'
              file_path: '/srv/cloud/images'
              capacity: '900GB'
          interfaces:
            - type: 'direct'
              source:
                dev: 'eth123'
                mode: 'private'
            - type: 'bridge'
              source:
                dev: 'br-datacentre'

作者信息

关于项目

Role to configure and create VMs on a Libvirt/KVM hypervisor

安装
ansible-galaxy install t2d.ansible_role_libvirt_vm
许可证
Unknown
下载
83
拥有者