Skip to content

Instantly share code, notes, and snippets.

@JTarasovic
Last active November 17, 2020 19:56
Show Gist options
  • Save JTarasovic/1d1411008674ef62d479110cfad68719 to your computer and use it in GitHub Desktop.
Save JTarasovic/1d1411008674ef62d479110cfad68719 to your computer and use it in GitHub Desktop.
#!/bin/bash
models=(tpm-tis tpm-crb)
backends=(emulator passthrough)
versions=("1.2" "2.0")
__build_tpm_string() {
local model="$1"
local backend="$2"
local version="$3"
str="model=$model,backend.type=$backend,backend.version=$version"
[[ "$backend" == "passthrough" ]] && str="${str},backend.device.path=/dev/tpm0"
echo "$str"
}
get_tpm_xml() {
local uuid="$1"
local model="$2"
local backend="$3"
local version="$4"
sudo virt-xml vagrant-libvirt_default --edit --metadata name="$uuid",uuid="$uuid" --print-xml \
| virt-xml --edit --tpm clearxml --print-xml \
| virt-xml --edit --tpm "$(__build_tpm_string "$model" "$backend" "$version")" --print-xml
}
echo "configuration,error" > tpm.csv
for model in "${models[@]}";
do
for backend in "${backends[@]}";
do
for version in "${versions[@]}";
do
valid=1
starts=1
uuid=$(uuid)
name="$model-$backend-$version"
xml=$(get_tpm_xml "$uuid" "$model" "$backend" "$version")
echo "$xml" > "$name.xml"
e=$(sudo virsh define "$name.xml" 2>&1 > /dev/null) || valid=-1
if [ "$valid" == 1 ]; then
e=$(sudo virsh start "$uuid" 2>&1 > /dev/null) || starts=-1
if [ "$starts" == 1 ]; then
sudo virsh destroy "$uuid" &> /dev/null
fi
fi
sudo virsh undefine "$uuid" &> /dev/null
echo "$name,$(echo "$e" | tr -d '\n')" >> tpm.csv
done
done
done
configuration error
tpm-tis-emulator-1.2
tpm-tis-emulator-2.0
tpm-tis-passthrough-1.2
tpm-tis-passthrough-2.0
tpm-crb-emulator-1.2 error: Failed to define domain from tpm-crb-emulator-1.2.xmlerror: unsupported configuration: Unsupported interface tpm-crb for TPM 1.2
tpm-crb-emulator-2.0
tpm-crb-passthrough-1.2
tpm-crb-passthrough-2.0
<domain type="kvm">
<name>d5565e34-290d-11eb-8b61-b42e99cdafb1</name>
<uuid>d5565e34-290d-11eb-8b61-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-crb">
<backend type="emulator" version="1.2">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d57c1d22-290d-11eb-a720-b42e99cdafb1</name>
<uuid>d57c1d22-290d-11eb-a720-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-crb">
<backend type="emulator" version="2.0">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d624d750-290d-11eb-ae2f-b42e99cdafb1</name>
<uuid>d624d750-290d-11eb-ae2f-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-crb">
<backend type="passthrough" version="1.2">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d69e7de4-290d-11eb-8e93-b42e99cdafb1</name>
<uuid>d69e7de4-290d-11eb-8e93-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-crb">
<backend type="passthrough" version="2.0">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d2eca536-290d-11eb-b740-b42e99cdafb1</name>
<uuid>d2eca536-290d-11eb-b740-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-tis">
<backend type="emulator" version="1.2">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d3b0d668-290d-11eb-a54d-b42e99cdafb1</name>
<uuid>d3b0d668-290d-11eb-a54d-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-tis">
<backend type="emulator" version="2.0">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d46a3644-290d-11eb-8cb0-b42e99cdafb1</name>
<uuid>d46a3644-290d-11eb-8cb0-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-tis">
<backend type="passthrough" version="1.2">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
<domain type="kvm">
<name>d4e3c734-290d-11eb-9916-b42e99cdafb1</name>
<uuid>d4e3c734-290d-11eb-9916-b42e99cdafb1</uuid>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="x86_64" machine="pc-i440fx-4.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode="host-model" check="partial"/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vagrant-libvirt_default.img"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</disk>
<controller type="usb" index="0" model="piix3-uhci">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pci-root"/>
<interface type="network">
<mac address="52:54:00:13:1f:a5"/>
<source network="vagrant-libvirt"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-tis">
<backend type="passthrough" version="2.0">
<device path="/dev/tpm0"/>
</backend>
</tpm>
<graphics type="vnc" port="-1" autoport="yes" listen="127.0.0.1" keymap="en-us">
<listen type="address" address="127.0.0.1"/>
</graphics>
<video>
<model type="cirrus" vram="256" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
</video>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</memballoon>
</devices>
</domain>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment