serverbee.virt_guest_manage

仮想ゲスト管理ロール

このロールは、公式のAnsible Virtモジュールを使用して、RHELベースの仮想マシンを管理します。ハイパーバイザーとしては KVMを使用します。デフォルトでは、RHELのフォークであるAlmaLinuxを使用します。グループ変数(group_vars)やホスト変数(host_vars)の設定を通じて、すべてのVMを直接制御できます。このロールの主な機能は、virt_guest_listに設定されたすべての仮想マシンを並行してインストールすることです。

始めるには

仮想マシンレベルでサポートされるディストリビューションバージョン
  • CentOS el6(最新のロールバージョンでは未テスト)
  • CentOS el7
  • AlmaLinux el8
  • AlmaLinux el9
デフォルト値の更新

まず最初に、virt_guest_init_passwdを更新してカスタムパスワードを設定する必要があります。次に、RHELベースのインストーラーのすべてのコンポーネントをダウンロードするために、最寄りのミラーを特定して設定する必要があります。

このロールの範囲外

このロールはVMのLVMベースの仮想ディスクを管理できますが、使用する前に物理ボリューム(PVS)とボリュームグループ(VGS)を作成する必要があります。また、VMの仮想ネットワークインターフェースには2つの異なるオプションがあります。1つ目は既存のLinuxブリッジを使用すること、2つ目はlibvirtネットワーキングを使用することです。いずれにしても、最後のオプションはこのロールから直接virt_network_listで管理できます。

変数

一般的な変数
  • virt_guest_dependency_qemu_kvm_role: [オプション、デフォルト true]: qemu-kvmの依存ロールを有効にするかどうか
  • virt_guest_mirror: [デフォルト: http://repo.almalinux.org]: OSインストールに使用するAlmaLinuxミラー
  • virt_guest_os_location: [デフォルト: {{ virt_guest_mirror }}/almalinux/9/BaseOS/x86_64/os]: AlmaLinux OSコンポーネントが保存されている場所
  • virt_guest_kickstart_config_dir: [デフォルト: /tmp/kickstart]: Kickstartファイルが作成されるパス
  • virt_guest_kickstart_config_port: [デフォルト: 8000]: インストール中のKickstart構成をダウンロードするためのポート
  • virt_guest_kickstart_config_url: [デフォルト: ハイパーバイザーのIP]: インストール中のKickstart構成をダウンロードするためのURL
  • virt_guest_kickstart_config_serve_timeout: [デフォルト: 90]: Kickstartファイルを提供するのにかかる時間(秒)
  • virt_guest_kickstart_installation_timeout: [デフォルト: 480]: Kickstartインストールを完了するのにかかる時間(秒)
  • virt_guest_init_passwd: [必須]: 初回ログイン時に使用するrootユーザーのパスワード
  • virt_guest_init_hostname: [デフォルト: fresh-installed.local]: 仮想マシンOSレベルでの最初のホスト名
仮想ネットワークリストとその設定
  • virt_network_list: [必須、デフォルト: {}]: 仮想ネットワークの宣言
  • virt_network_list.key: [必須]: 仮想ネットワークの名前(例: br-nat0:
  • virt_network_list.key.router: [必須]: 仮想ルーターのIPアドレス(例: 192.168.2.1
  • virt_network_list.key.netmask: [必須]: 仮想ネットワークのネットマスク(例: 255.255.255.0
  • virt_network_list.key.start: [必須]: 仮想ネットワーク範囲の最初のIP(例: 192.168.2.1
  • virt_network_list.key.end: [必須]: 仮想ネットワーク範囲の最後のIP(例: 192.168.2.254
仮想ゲストリストとその設定
  • virt_guest_list: [必須、デフォルト: {}]: 仮想ゲストの宣言
  • virt_guest_list.key: [必須]: 仮想マシンの名前(例: example-vm:
  • virt_guest_list.key.autostart: [オプション、デフォルト true]: 仮想マシンの自動起動を有効にするかどうか
  • virt_guest_list.key.uuid: [必須]: 仮想マシンのユニバーサリー一意識別子(例: ad852ffe-07d9-43ec-9f5a-ced644f9a7a5
  • virt_guest_list.key.cpu: [オプション、デフォルト 1]: CPUコアの制限を設定
  • virt_guest_list.key.ram: [オプション、デフォルト 2]: RAMの制限を設定。この値はGiB単位で設定されます。
  • virt_guest_list.key.disk: [必須]: 仮想ゲストのディスク宣言
  • virt_guest_list.key.disk.[s|v]d[a-z]: [必須]: 仮想マシン内の仮想ディスクの名前(例: sda, sdb, sdcなど、またはvda, vdb, vdcなど)
  • virt_guest_list.key.disk.[s|v]d[a-z].type: [オプション、デフォルト block]: 仮想ディスクのタイプ(例: block, file
  • virt_guest_list.key.disk.[s|v]d[a-z].name: [.type: fileの場合のみ必須]: 仮想QEMUディスクファイルの名前
  • virt_guest_list.key.disk.[s|v]d[a-z].format: [オプション、デフォルト raw]: 仮想ディスクのQEMUフォーマットタイプ(例: raw, qcow2
  • virt_guest_list.key.disk.[s|v]d[a-z].format_options: [オプション、デフォルト preallocation=off]: QEMUディスクフォーマットオプション(例: preallocation=metadata
  • virt_guest_list.key.disk.[s|v]d[a-z].vg: [.type: blockの場合のみ必須]: LVMボリュームグループの名前
  • virt_guest_list.key.disk.[s|v]d[a-z].lv: [.type: blockの場合のみ必須]: LVMロジックボリュームの名前
  • virt_guest_list.key.disk.[s|v]d[a-z].size: [必須、物理ドライブを使用する場合を除く]: 仮想ディスクのサイズ(例: 2048M, 10G, 1T、またはLVMベースのディスクには20%VGやその等価物が使用できます)
  • virt_guest_list.key.disk.[s|v]d[a-z].device: [物理ドライブの場合のみ必須]: ハイパーバイザー上の物理ドライブへの完全なパス(例: /dev/sdb, /dev/nvme0n1など)
  • virt_guest_list.key.disk.[s|v]da.fstype: [オプション、デフォルト xfs]: 仮想ディスク内のすべてのパーティションのファイルシステムタイプ(例: ext4, ext3など)
  • virt_guest_list.key.network: [必須]: 仮想ゲストネットワークの宣言
  • virt_guest_list.key.network.eth[0-9]: [必須]: 仮想マシンのネットワークインターフェースの名前(例: eth0, eth1など)
  • virt_guest_list.key.network.eth[0-9].mac: [必須]: 仮想ネットワークインターフェースのMACアドレス(例: 52:54:00:16:01:bcなど)
  • virt_guest_list.key.network.eth[0-9].bridge: [必須]: vnetインターフェースが含まれるブリッジインターフェースの名前(例: br0, bridge1など)
  • virt_guest_list.key.network.eth[0-9].model: [オプション、デフォルト virtio]: 仮想ネットワークインターフェースのQEMUモデル(例: virtio, e1000, rtl8139など)
  • virt_guest_list.key.network.eth0.ip: [オプション]: メインネットワークインターフェースの静的IPアドレス
  • virt_guest_list.key.network.eth0.netmask: [オプション]: メインネットワークインターフェースのネットマスク
  • virt_guest_list.key.network.eth0.gateway: [オプション]: メインネットワークインターフェースのゲートウェイのIPアドレス
  • virt_guest_list.key.network.eth0.dns: [オプション]: プライマリーDNSサーバー。このオプションはDNSサーバーを1つだけサポートします。
  • virt_guest_list.key.vnc_enable: [オプション、デフォルト false]: 仮想マシンにアクセスするためのQEMU-KVM側のVNCサーバーを有効にする

依存関係

serverbee.qemu_kvmロール

簡単な例
---
- hosts: localhost 
  roles:
    - serverbee.virt_guest_manage
  vars:
    virt_guest_list:
      example-vm:
        uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
        disk:
          sda:
            vg: vg_local
            lv: lv_vm_example
            size: 10G
        network:
          eth0:
            mac: 52:54:00:16:01:bc
            bridge: br0
完全なオプションの例
---
- hosts: localhost 
  roles:
    - serverbee.virt_guest_manage
  vars:
    virt_network_list:
      br-nat0:
        router: 192.168.2.1
        netmask: 255.255.255.0
        start: 192.168.2.2
        end: 192.168.2.254

    virt_guest_list:
      example-vm:
        autostart: false
        uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
        cpu: 2 # コア
        ram: 4 # GiB
        disk:
          sda:
            type: block
            format: raw
            vg: vg_local
            lv: lv_vm_example-first
            size: 20%VG
            fstype: ext4
          vdb:
            type: file
            format: qcow2
            format_options: preallocation=metadata
            name: example-second-drive
            size: 5G
          sdc:
            device: /dev/nvme0n1
        network:
          eth0:
            mac: 52:54:00:16:01:bc
            bridge: br0
            model: virtio
            ip: 172.16.2.2
            netmask: 255.255.255.248
            gateway: 172.16.2.1
            dns: 172.16.2.1
          eth1:
            mac: 52:54:00:16:02:ba
            network: br-nat0
            model: e1000
        vnc_enable: true

それ以外に?

VMのインストール進捗を確認する

まず、VMがpingリクエストに応答するかどうかを確認できます。応答しない場合は、virsh CLIツールを使用して、すべてのVMのリストを確認し、各インストールの進捗を確認できます。このロールの依存関係として自動的にインストールされるコマンドです。consoleオプションを使って監視できます。

$ virsh list --all
$ virsh console example-vm
インストールを完了するまでのタイムアウト

virt_guest_kickstart_installation_timeoutという変数があり、デフォルトでは480秒に設定されています。インストールを終了する前にVMをシャットダウンする際に問題がある場合は、タイムアウトを延ばす必要があります。また、ホスティングプロバイダーと同じ国に近いミラーを設定すると、ダウンロード速度を向上させることができます。これにはvirt_guest_mirrorvirt_guest_os_location変数を変更します。

単一VMを管理するための追加変数

多くの仮想マシンがある場合でも、そのうちの1つだけを管理したい場合に非常に便利なオプションです。Ansibleプレイブックをより速く実行し、他の仮想マシンに対して何かを適用せずに済みます。これを行うには、プレイブックを適用するときにvmという追加の変数を設定します:

$ ansible-playbook virt-guest-manage.yml --extra-vars vm=example-vm

同時に1つの仮想マシンの名前のみを渡すことができます。

VMのインストールを再実行する

以前に何かを試していて、再度インストールを実行したい場合は、まずすべての既存の部分を手動で削除する必要があります:

$ virsh list --all
$ virsh destroy example-vm
$ virsh undefine example-vm
$ lvremove vg_local/lv_vm_example

このロールは、既存および必要なデータを誤って削除しないように、VMの自動再インストールをサポートしていません。

ライセンス

GPLv3ライセンス

作者情報

Vitaly Yakovenko

プロジェクトについて

Role to install and manage KVM VMs.

インストール
ansible-galaxy install serverbee.virt_guest_manage
ライセンス
Unknown
ダウンロード
76
所有者