t2d.ansible_role_libvirt_vm
Libvirt VM
この役割はKVMハイパーバイザー上でVMを設定・作成(または破棄)します。
要件
ホストは仮想化技術(VT)が有効になっている必要があり、libvirt/KVMが事前に設定されている必要があります。
役割の変数
libvirt_vm_default_console_log_dir: VM専用のログファイルのパスが指定されない場合にVMコンソールログを保存するデフォルトのディレクトリ。デフォルトは"/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: ゲストOSにおけるデバイスの表示方法を制御します。デフォルトはdiskです。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のドキュメントを参照してください。libvirt_vm_virsh_default_env: この辞書に含まれる変数は、virshコマンドを実行する際の環境に追加されます。libvirt_vm_clock_offset: 定義されている場合、インスタンスの時計オフセットが提供された値に設定されます。未定義の場合、同期はlocaltimeに設定されます。libvirt_vms: 作成または破棄するVMのリスト。各VMには次の属性があります:state: VMを作成するにはpresent、破棄するにはabsentに設定します。デフォルトはpresentです。name: VMに割り当てる名前。memory_mb: VMに割り当てるメモリ(メガバイト単位)。vcpus: VMに割り当てるVCPUコアの数。machine: 仮想マシンのタイプ。デフォルトは、libvirt_vm_engineがkvmの場合はNone、それ以外の場合はpc-1.0です。cpu_mode: 仮想マシンのCPUモード。デフォルトは、libvirt_vm_engineがkvmの場合はhost-passthrough、それ以外の場合はhost-modelです。CPUモードを設定しないにはnoneと設定できます。clock_offset:libvirt_vm_clock_offsetで設定されたデフォルトを上書きします。enable_vnc: trueの場合、VirtManagerや同様のツールで使用するためにlocalhostでVNCをリスニングできます。volumes: VMに接続するボリュームのリスト。各ボリュームは次の辞書で定義されます:pool: ボリュームが割り当てられるストレージプールの名前またはUUID。name: 作成されるボリュームに関連付ける名前。fileタイプのボリュームには、拡張子を含めるときがある。file_path:fileタイプのボリュームのイメージを配置する場所。デフォルトはlibvirt_volume_default_images_pathです。device:diskまたはcdromcapacity: ボリュームの容量(M、G、T、またはMB、GB、TBなどの接尾辞が付けられます)(diskタイプのときは必須です)。format: オプションにはraw、qcow2、vmdkがあります。詳細についてはman virshを参照してください。デフォルトはqcow2です。image: (オプション)ボリュームが初期化されるイメージへのURL(フルコピー)。backing_image: (オプション)同じプールに既に存在するバックボリュームの名前(コピーオン書き込み)。imageとbacking_imageは排他的なオプションです。target: (オプション)ボリュームのタイプと順序に手動で影響を与える。
interfaces: VMに接続するネットワークインターフェースのリスト。各ネットワークインターフェースは次の辞書で定義されます:type: インターフェースの種類。可能な値:network: 名前付きLibvirt仮想ネットワークにインターフェースを接続します。これはデフォルト値です。direct:macvtapドライバーを使用して、ホストの物理インターフェースの1つにインターフェースを直接接続します。
network: インターフェースが接続されるネットワークの名前。インターフェースのtypeがnetworkの場合、指定する必要があります。mac: 仮想インスタンスの「ハードウェア」アドレス。存在しない場合は作成されます。source: このVMインターフェースが接続されるホストインターフェースを定義する辞書。インターフェースのtypeがdirectの場合に、指定する必要があります。以下の属性が含まれます:dev: このVMインターフェースが接続されるホストインターフェースの名前。mode: オプションにはvepa、bridge、private、passthroughがあります。詳細については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: 定義後にVMを即時に開始するかどうか。デフォルトはtrueです。autostart: ホストが起動したときにVMを起動するかどうか。デフォルトはtrueです。xml_file: 必要に応じて修正したXMLテンプレートを提供します。デフォルトのvm.xml.j2テンプレートに基づいてカスタマイズし、役割が使用する予想されるjinja式を含めるようにします。
注:以下の変数は非推奨です:libvirt_vm_state、libvirt_vm_name、libvirt_vm_memory_mb、libvirt_vm_vcpus、libvirt_vm_engine、libvirt_vm_machine、libvirt_vm_cpu_mode、libvirt_vm_volumes、libvirt_vm_interfacesおよびlibvirt_vm_console_log_path。変数libvirt_vmsが未設定の場合、そのデフォルト値はこれらの非推奨変数を使用したVM仕様のシングルトンリストになります。
依存関係
qcow2形式のドライブを使用する場合、qemu-img(qemu-utilsパッケージに含まれています)が必要です。
例のプレイブック
---
- 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バスの最初のデバイス
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'
著者情報
- マーク・ゴダード (mark@stackhpc.com)
