7386de86d7
Makes it work with the same cloudinit code on Ubuntu 20.04 by mounting it from a custom ISO as CD-ROM
58 lines
1.3 KiB
Ruby
58 lines
1.3 KiB
Ruby
#
|
|
# Cookbook:: kosmos_kvm
|
|
# Recipe:: host
|
|
#
|
|
|
|
package %w(virtinst libvirt-daemon-system libvirt-clients)
|
|
|
|
# Required on legacy hosts (Ubuntu 20.04) to build the NoCloud seed ISO
|
|
# via cloud-localds. Modern virt-install (>= 4.0.0, Ubuntu >= 22.04)
|
|
# handles cloud-init natively via --cloud-init and does not need it.
|
|
package "cloud-image-utils" if node["platform_version"].to_f < 22.04
|
|
|
|
directory "/var/lib/libvirt/images/base" do
|
|
recursive true
|
|
owner "libvirt-qemu"
|
|
group "kvm"
|
|
mode "0750"
|
|
end
|
|
|
|
# Base VM image
|
|
remote_file node["kosmos_kvm"]["host"]["qemu_base_image"]["path"] do
|
|
source node["kosmos_kvm"]["host"]["qemu_base_image"]["url"]
|
|
checksum node["kosmos_kvm"]["host"]["qemu_base_image"]["checksum"]
|
|
owner "libvirt-qemu"
|
|
group "kvm"
|
|
mode "0640"
|
|
end
|
|
|
|
template "/usr/local/sbin/create_vm" do
|
|
source "create_vm.erb"
|
|
mode "0750"
|
|
variables(
|
|
base_image_path: node["kosmos_kvm"]["host"]["qemu_base_image"]["path"],
|
|
modern_virt_install: node["platform_version"].to_f >= 22.04
|
|
)
|
|
end
|
|
|
|
firewall_rule 'ssh-alt-port' do
|
|
port [2222]
|
|
protocol :tcp
|
|
command :allow
|
|
end
|
|
|
|
%w{
|
|
10.0.0.0/8
|
|
172.16.0.0/12
|
|
192.168.0.0/16
|
|
100.64.0.0/10
|
|
}.each do |ip|
|
|
firewall_rule "unauthorized-private-network-#{ip}" do
|
|
interface "enp35s0"
|
|
destination ip
|
|
direction :out
|
|
protocol :none
|
|
command :deny
|
|
end
|
|
end
|