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
またはcdrom
capacity
: ボリュームの容量(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)