Skip to content

Commit f6f9f34

Browse files
authored
Merge pull request #1 from igor-pinchuk/feature/misc_improvements
Misc improvements
2 parents dd73c54 + fc364e7 commit f6f9f34

File tree

3 files changed

+72
-6
lines changed

3 files changed

+72
-6
lines changed

main.tf

+8-5
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,14 @@ resource "libvirt_domain" "virt-machine" {
7676
"date"
7777
]
7878
connection {
79-
type = "ssh"
80-
user = var.ssh_admin
81-
host = self.network_interface[0].addresses[0]
82-
private_key = var.ssh_private_key != null ? file(var.ssh_private_key) : null
83-
timeout = "2m"
79+
type = "ssh"
80+
user = var.ssh_admin
81+
host = self.network_interface[0].addresses[0]
82+
private_key = try(file(var.ssh_private_key), var.ssh_private_key, null)
83+
timeout = "2m"
84+
bastion_host = var.bastion_host
85+
bastion_user = var.bastion_user
86+
bastion_private_key = try(file(var.bastion_ssh_private_key), var.bastion_ssh_private_key, null)
8487
}
8588
}
8689
}

variables.tf

+41-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,16 @@ variable "xml_override" {
7070
vendor = string
7171
product = string
7272
}))
73+
pci_devices_passthrough = list(object({
74+
src_domain = string
75+
src_bus = string
76+
src_slot = string
77+
src_func = string
78+
dst_domain = string
79+
dst_bus = string
80+
dst_slot = string
81+
dst_func = string
82+
}))
7383
})
7484
default = {
7585

@@ -86,6 +96,18 @@ variable "xml_override" {
8696
# vendor = "0x0123",
8797
# product = "0xabcd"
8898
# }
99+
],
100+
pci_devices_passthrough = [
101+
#{
102+
# src_domain = "0x0000",
103+
# src_bus = "0xc1",
104+
# src_slot = "0x00",
105+
# src_func = "0x0",
106+
# dst_domain = "0x0000",
107+
# dst_bus = "0x00",
108+
# dst_slot = "0x08"
109+
# dst_func = "0x0"
110+
#}
89111
]
90112
}
91113

@@ -185,7 +207,7 @@ variable "time_zone" {
185207
}
186208

187209
variable "ssh_private_key" {
188-
description = "Private key for SSH connection test"
210+
description = "Private key for SSH connection test (either path to file or key content)"
189211
type = string
190212
default = null
191213
}
@@ -211,3 +233,21 @@ variable "graphics" {
211233
error_message = "Graphics type not supported. Only 'spice' or 'vnc' are valid options."
212234
}
213235
}
236+
237+
variable "bastion_host" {
238+
description = "Bastion host"
239+
type = string
240+
default = null
241+
}
242+
243+
variable "bastion_user" {
244+
description = "Bastion ssh user"
245+
type = string
246+
default = null
247+
}
248+
249+
variable "bastion_ssh_private_key" {
250+
description = "Bastion private key for SSH connection test (either path to file or key content)"
251+
type = string
252+
default = null
253+
}

xslt/template.tftpl

+23
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,29 @@
4444
<xsl:attribute name="model">${usb_controller.model}</xsl:attribute>
4545
</xsl:element>
4646
%{ endfor ~}
47+
%{if pci_devices_passthrough != [] ~}
48+
%{ for pci_devices in pci_devices_passthrough ~}
49+
<xsl:element name="hostdev">
50+
<xsl:attribute name="type">pci</xsl:attribute>
51+
<xsl:attribute name="managed">yes</xsl:attribute>
52+
<xsl:element name="source">
53+
<xsl:element name="address">
54+
<xsl:attribute name="domain">${pci_devices.src_domain}</xsl:attribute>
55+
<xsl:attribute name="bus">${pci_devices.src_bus}</xsl:attribute>
56+
<xsl:attribute name="slot">${pci_devices.src_slot}</xsl:attribute>
57+
<xsl:attribute name="function">${pci_devices.src_func}</xsl:attribute>
58+
</xsl:element>
59+
</xsl:element>
60+
<xsl:element name="address">
61+
<xsl:attribute name="type">pci</xsl:attribute>
62+
<xsl:attribute name="domain">${pci_devices.dst_domain}</xsl:attribute>
63+
<xsl:attribute name="bus">${pci_devices.dst_bus}</xsl:attribute>
64+
<xsl:attribute name="slot">${pci_devices.dst_slot}</xsl:attribute>
65+
<xsl:attribute name="function">${pci_devices.dst_func}</xsl:attribute>
66+
</xsl:element>
67+
</xsl:element>
68+
%{ endfor ~}
69+
%{ endif ~}
4770
</xsl:copy>
4871
</xsl:template>
4972
</xsl:stylesheet>

0 commit comments

Comments
 (0)