stackhpc.libvirt-vm

Libvirt VM

この役割はKVMハイパーバイザー上でVMを設定および作成(または削除)します。

要件

ホストには仮想化技術(VT)が有効になっており、libvirt/KVMが事前に設定されている必要があります。

役割変数

  • libvirt_vm_default_console_log_dir: VM固有のログファイルパスが指定されない場合にVMコンソールログを保存するためのデフォルトディレクトリ。デフォルトは"/var/log/libvirt-consoles"です。

  • libvirt_vm_default_uuid_deterministic: UUIDをVM名をハッシュ化して計算するかどうか。指定しない場合、VMが定義されるときにlibvirtによってランダムに生成されます。デフォルトはFalseです。

  • libvirt_vm_image_cache_path: ダウンロードしたイメージをキャッシュするディレクトリ。デフォルトは"/tmp/"です。

  • libvirt_volume_default_images_path: インスタンスイメージが保存されるディレクトリ。デフォルトは'/var/lib/libvirt/images'です。

  • libvirt_volume_default_type: インスタンスが使用するバックボリュームのタイプ。デフォルトはvolumeです。オプションにはblockfilenetworkおよびvolumeが含まれます。

  • libvirt_volume_default_format: 役割によって作成されるボリュームのフォーマット。デフォルトはqcow2です。オプションにはrawqcow2vmdkが含まれます。詳細はman virshを参照してください。

  • libvirt_volume_default_device: ゲストOSでのデバイスの表示方法を制御します。デフォルトはdiskです。オプションにはcdromdiskがあります。

  • libvirt_vm_engine: 仮想化エンジン。設定されていない場合、役割は使用する最適なエンジンを自動検出しようとします。

  • libvirt_vm_emulator: エミュレータバイナリへのパス。設定されていない場合、役割は正しいエミュレータを自動検出しようとします。

  • libvirt_cpu_mode_default: libvirt_cpu_modeまたはvm.cpu_modeが未定義の場合のデフォルトCPUモード。

  • libvirt_vm_arch: CPUアーキテクチャ、デフォルトはx86_64です。

  • libvirt_vm_uri: libvirt接続URIをオーバーライドします。詳細についてはlibvirt docsを参照してください。

  • libvirt_vm_virsh_default_env: この辞書に含まれる変数は、virshコマンドを実行する際に使用される環境に追加されます。

  • libvirt_vm_clock_offset: 定義されている場合、インスタンスの時計オフセットが指定された値に設定されます。未定義の場合は、同期がlocaltimeに設定されます。

  • libvirt_vm_trust_guest_rx_filters: ゲスト受信フィルタを信頼するかどうか。これはVMインターフェイスのtrustGuestRxFilters属性にマッピングされます。デフォルトはfalseです。

  • libvirt_vms: 作成/削除するVMのリスト。各VMには以下の属性が含まれます。

    • state: VMを作成するためにpresentに設定するか、削除するためにabsentに設定します。デフォルトはpresentです。

    • name: VMに割り当てる名前。

    • uuid: VMに手動で割り当てるUUID。指定された場合、uuid_deterministicまたはlibvirt_vm_default_uuid_deterministicは使用されません。

    • uuid_deterministic: libvirt_vm_default_uuid_deterministicで設定されたデフォルトをオーバーライドします。

    • memory_mb: VMに割り当てるメモリ、メガバイト単位。

    • vcpus: VMに割り当てるVCPUコアの数。

    • machine: 仮想マシンタイプ。libvirt_vm_enginekvmの場合はデフォルトでNone、それ以外の場合はpc-1.0です。

    • cpu_mode: 仮想マシンのCPUモード。libvirt_vm_enginekvmの場合はデフォルトでhost-passthrough、それ以外の場合はhost-modelです。CPUモードを設定しない場合はnoneにできます。

    • clock_offset: libvirt_vm_clock_offsetで設定されたデフォルトをオーバーライドします。

    • enable_vnc: trueの場合、VirtManagerおよび類似のツール用にlocalhostでVNCリスニングを有効にします。

    • enable_spice: trueの場合、Virtual Machine Managerおよび類似のツール用にSPICEリスニングを有効にします。

    • enable_guest_virtio: trueの場合、Qemuゲストエージェント用にゲストvirtioデバイスを有効にします。

    • volumes: VMに接続するボリュームのリスト。各ボリュームは以下の辞書で定義されます。

      • type: インスタンスが使用するバックボリュームのタイプ。libvirt_volume_default_typeのすべてのオプションがここで有効です。デフォルトはlibvirt_volume_default_typeです。
      • pool: ボリュームを割り当てるストレージプールの名前またはUUID。typevolumeの場合は必要です。
      • name: 作成されるボリュームに関連付ける名前;fileタイプのボリュームには、拡張子を含めることができます。
      • file_path: fileタイプのボリュームのイメージを配置する場所;デフォルトはlibvirt_volume_default_images_pathです。
      • device: ゲストOSでのデバイスの表示方法。すべてのオプションがlibvirt_volume_default_deviceで有効です。デフォルトはlibvirt_volume_default_typeです。
      • capacity: ボリューム容量で、ネットワークタイプの場合はk、M、G、T、P、Eなどの接尾辞が、ディスクタイプの場合はMB、GB、TBなどが必要です。(ディスクまたはネットワークタイプの場合に必要)
      • auth: 認証が必要な場合の詳細。認証が必要な場合、usernametype、およびuuidまたはusageが必要です。uuidusageは両方を指定しないでください。
      • source: networkタイプの場合、リモートボリュームがどこから来るか。protocolname、およびhosts_listが必要です。portはオプションです。
      • format: ボリュームのフォーマット。すべてのオプションがlibvirt_volume_default_formatで有効です。デフォルトはlibvirt_volume_default_formatになります。
      • image: (オプション)ボリュームが初期化されるイメージへのURL(完全コピー)。
      • checksum: (オプション)ダウンロードが不要な場合のためにimageのチェックサム。
      • backing_image: (オプション)すでに同じプールにあると想定されるバックボリュームの名前(コピー・オン・ライト)。
      • imagebacking_imageは相互排他的オプションです。
      • target: (オプション)ボリュームのタイプと順序に手動で影響を与えます。
      • dev: (オプション)タイプがblockの場合のブロックデバイスパス。
      • remote_src: (オプション)タイプがfileまたはblockの場合、imageがリモートファイルを指しているか(true)ローカルファイルを指しているか(false)を指定します。デフォルトはtrueです。
    • usb_devices: ホストからVMに提示するUSBデバイスのリスト。

      各USBデバイスは以下の辞書で定義されます:

      • vendor: USBデバイスのベンダーID。
      • product: USBデバイスのプロダクトID。

      注意 - VMがプロビジョニングされてUSBデバイスが接続されていない場合、Libvirtはエラーになります。

      ホスト上でsudo / rootとして実行し、USBデバイスが接続されている状態でベンダーIDとプロダクトIDを取得するにはlsusb -vを実行します。以下は、ベンダーIDが0x0781、プロダクトIDが0x5567のSandisk USBメモリスティックが接続されている例です。

      lsusb -v | grep -A4 -i sandisk
      
        idVendor           0x0781 SanDisk Corp.
        idProduct          0x5567 Cruzer Blade
        bcdDevice            1.00
        iManufacturer           1 
        iProduct                2 
      
    • interfaces: VMに接続するネットワークインターフェイスのリスト。 各ネットワークインターフェイスは以下の辞書で定義されます:

      • type: インターフェイスのタイプ。可能な値:

        • network: 名前付きLibvirt仮想ネットワークにインターフェイスを接続します。これはデフォルト値です。
        • direct: ホストの物理インターフェイスの1つにインターフェイスを直接接続します。macvtapドライバを使用します。
      • network: インターフェイスを接続するネットワークの名前。インターフェイスのtypenetworkのときにのみ指定する必要があります。

      • mac: 仮想インスタンスの「ハードウェア」アドレス。指定されていない場合は作成されます。

      • source: このVMインターフェイスが接続されるホストインターフェイスを定義する辞書。インターフェイスのtypedirectの場合にのみ指定する必要があります。以下の属性が含まれます:

        • dev: このVMインターフェイスが接続されるホストインターフェイスの名前。
        • mode: オプションにはvepabridgeprivate、およびpassthroughが含まれます。詳細はman virshを参照してください。デフォルトはvepaです。
      • trust_guest_rx_filters: ゲスト受信フィルタを信頼するかどうか。これはVMインターフェイスのtrustGuestRxFilters属性にマッピングされます。デフォルトはlibvirt_vm_trust_guest_rx_filtersです。

      • model: インターフェイスモデルの名前。例えば、e1000ne2k_pciなど、未定義の場合はデフォルトでvirtioです。

      • alias: オプションのインターフェイスエイリアス。これは特定のネットワーク設定を永続的なネットワークデバイスに名前で結びつけるために使用できます。ユーザー定義のエイリアスには常にua-がプレフィックスとして付与されます(ua-なしのエイリアスはlibvirtによって無視されます)。未定義の場合はlibvirt管理のvnetXがデフォルトです。

    • 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: 定義後にVMをすぐに起動するかどうか。デフォルトはtrueです。

    • autostart: ホスト起動時にVMを起動するかどうか。デフォルトはtrueです。

    • boot_firmware: biosまたはefiのいずれか。デフォルトはbiosです。

    • 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_interfacesおよびlibvirt_vm_console_log_pathlibvirt_vms変数が未設定の場合、そのデフォルト値はこれらの非推奨変数を使用したVM仕様を持つシングルトンリストになります。

依存関係

qcow2フォーマットのドライブを使用する場合は、qemu-img(qemu-utilsパッケージ内)が必要です。

例としてのPlaybook

---
- name: VMsを作成する
  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バス上の最初のデバイス
            - name: 'networkfs'
              type: 'network'
              format: 'raw'
              capacity: '50G'
              auth:
                username: 'admin'
                type: 'ceph'
                usage: 'rbd-pool'
              source:
                protocol: 'rbd'
                name: 'rbd/volume'
                hosts_list:
                  - 'mon1.example.org'
                  - 'mon2.example.org'
                  - 'mon3.example.org'
            - type: 'block'
              format: 'raw'
              dev: '/dev/sda'

          interfaces:
            - network: 'br-datacentre'
          
          usb_devices:
            - vendor: '0x0781'
              product: '0x5567'

        - 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 stackhpc.libvirt-vm
ライセンス
Unknown
ダウンロード
380.3k
所有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.