Proxmox Virtual Environment (Proxmox VE) v2.5.0, Mar 14 23
Proxmox Virtual Environment (Proxmox VE)
The Proxmox Virtual Environment (Proxmox VE) provider for Pulumi can be used to provision virtual machines and containers using Proxmox VE.
Example
const proxmox = require("@muhlba91/pulumi-proxmoxve")
const virtualMachine = new proxmox.vm.VirtualMachine('vm', {
nodeName: 'pve1',
agent: {
enabled: false, // toggles checking for ip addresses through qemu-guest-agent
trim: true,
type: 'virtio',
},
bios: 'seabios',
cpu: {
cores: 1,
sockets: 1,
},
clone: {
nodeName: 'pve1',
vmId: 9000,
full: true,
},
disks: [
{
interface: 'scsi0',
datastoreId: 'local-lvm',
size: 32,
fileFormat: 'qcow2',
},
],
memory: {
dedicated: 1024,
},
name: 'proxmox-vm',
networkDevices: [
{
bridge: 'vmbr0',
model: 'virtio',
},
],
onBoot: true,
operatingSystem: {
type: 'l26',
},
initialization: {
type: 'nocloud',
datastoreId: 'local-lvm',
dns: {
domain: 'example.com',
server: '1.1.1.1 1.0.0.1',
},
ipConfigs: [
{
ipv4: {
address: '10.0.0.10/24',
gateway: '10.0.0.1',
},
ipv6: {
address: 'fd91:0812:a17f:6194::10/64',
gateway: 'fd91:0812:a17f:6194::1',
},
},
],
userAccount: {
username: 'proxmox',
password: 'password',
keys: ['SSH_PUBLIC_KEY'],
},
},
})
import * as proxmox from "@muhlba91/pulumi-proxmoxve";
const virtualMachine = new proxmox.vm.VirtualMachine('vm', {
nodeName: 'pve1',
agent: {
enabled: false, // toggles checking for ip addresses through qemu-guest-agent
trim: true,
type: 'virtio',
},
bios: 'seabios',
cpu: {
cores: 1,
sockets: 1,
},
clone: {
nodeName: 'pve1',
vmId: 9000,
full: true,
},
disks: [
{
interface: 'scsi0',
datastoreId: 'local-lvm',
size: 32,
fileFormat: 'qcow2',
},
],
memory: {
dedicated: 1024,
},
name: 'proxmox-vm',
networkDevices: [
{
bridge: 'vmbr0',
model: 'virtio',
},
],
onBoot: true,
operatingSystem: {
type: 'l26',
},
initialization: {
type: 'nocloud',
datastoreId: 'local-lvm',
dns: {
domain: 'example.com',
server: '1.1.1.1 1.0.0.1',
},
ipConfigs: [
{
ipv4: {
address: '10.0.0.10/24',
gateway: '10.0.0.1',
},
ipv6: {
address: 'fd91:0812:a17f:6194::10/64',
gateway: 'fd91:0812:a17f:6194::1',
},
},
],
userAccount: {
username: 'proxmox',
password: 'password',
keys: ['SSH_PUBLIC_KEY'],
},
},
})
import pulumi_proxmoxve as proxmox
virtual_machine = proxmox.vm.VirtualMachine(
resource_name="vm",
node_name="pve1",
agent=proxmox.vm.VirtualMachineAgentArgs(
enabled=False, # toggles checking for ip addresses through qemu-guest-agent
trim=True,
type="virtio"
),
bios="seabios",
cpu=proxmox.vm.VirtualMachineCpuArgs(
cores=1,
sockets=1
),
clone=proxmox.vm.VirtualMachineCloneArgs(
node_name="pve1",
vm_id=9000,
full=True
),
disks=[
proxmox.vm.VirtualMachineDiskArgs(
interface="scsi0",
datastore_id="local-lvm",
size=32,
file_format="qcow2"
)
],
memory=proxmox.vm.VirtualMachineMemoryArgs(
dedicated=1024
),
name="proxmox-vm",
network_devices=[
proxmox.vm.VirtualMachineNetworkDeviceArgs(
bridge="vmbr0",
model="virtio"
)
],
on_boot=True,
operating_system=proxmox.vm.VirtualMachineOperatingSystemArgs(type="l26"),
initialization=proxmox.vm.VirtualMachineInitializationArgs(
type="nocloud",
datastore_id="local-lvm",
dns=proxmox.vm.VirtualMachineInitializationDnsArgs(
domain="example.com",
server="1.1.1.1 1.0.0.1"
),
ip_configs=[
proxmox.vm.VirtualMachineInitializationIpConfigArgs(
ipv4=proxmox.vm.VirtualMachineInitializationIpConfigIpv4Args(
address="10.0.0.10/24",
gateway="10.0.0.1"
),
ipv6=proxmox.vm.VirtualMachineInitializationIpConfigIpv6Args(
address="fd91:0812:a17f:6194::10/64",
gateway="fd91:0812:a17f:6194::1"
)
)
],
user_account=proxmox.vm.VirtualMachineInitializationUserAccountArgs(
username="proxmox",
password="password",
keys=["SSH_PUBLIC_KEY"]
)
)
)
using System.Collections.Generic;
using System.Threading.Tasks;
using Pulumi;
using Pulumi.ProxmoxVE.VM;
using Pulumi.ProxmoxVE.VM.Inputs;
class Program
{
static Task Main() =>
Deployment.Run(() => {
var virtualMachine = new VirtualMachine("vm", new VirtualMachineArgs
{
NodeName="pve1",
Agent=new VirtualMachineAgentArgs{
enabled=false, // toggles checking for ip addresses through qemu-guest-agent
trim=true,
type="virtio"
},
Bios="seabios",
Cpu=new VirtualMachineCpuArgs{
Cores=1,
Sockets=1
},
Clone=new VirtualMachineCloneArgs{
NodeName="pve1",
VmId=9000,
Full=true
},
Disks: [
new VirtualMachineDiskArgs{
Interface="scsi0",
DatastoreId="local-lvm",
Size=32,
FileFormat="qcow2"
}
],
Memory: new VirtualMachineMemoryArgs{
Dedicated=1024
},
Name="proxmox-vm",
NetworkDevices: [
new VirtualMachineNetworkDeviceArgs{
Bridge="vmbr0",
Model="virtio"
}
],
OnBoot=true,
OperatingSystem=new VirtualMachineOperatingSystemArgs{
type="l26"
},
Initialization=new VirtualMachineInitializationArgs{
Type="nocloud",
DatastoreId="local-lvm",
Dns: new VirtualMachineInitializationDnsArgs{
Domain="example.com",
Server="1.1.1.1 1.0.0.1"
},
IpConfigs: [
new VirtualMachineInitializationIpConfigArgs{
Ipv4=new VirtualMachineInitializationIpConfigIpv4Args{
Address="10.0.0.10/24",
Gateway="10.0.0.1"
},
Ipv6=new VirtualMachineInitializationIpConfigIpv6Args{
Address="fd91:0812:a17f:6194::10/64",
Gateway="fd91:0812:a17f:6194::1"
}
}
],
UserAccount: new VirtualMachineInitializationUserAccountArgs{
Username="proxmox",
Password="password",
Keys=["SSH_PUBLIC_KEY"]
}
}
});
});
}