Conclusa prima implementazione container su PVE.
This commit is contained in:
parent
fbf68c67b9
commit
2ed3e17ecd
@ -3,4 +3,4 @@ name: ${PROJECT}
|
||||
description: ${DESCRIPTION}
|
||||
runtime: python
|
||||
template:
|
||||
description: A ProxmoxVE VM template with Python
|
||||
description: Template for an LXC container over ProxmoxVE
|
61
pct/__main__.py
Normal file
61
pct/__main__.py
Normal file
@ -0,0 +1,61 @@
|
||||
"""A ProxmoxVE Container template with Python"""
|
||||
|
||||
import yaml
|
||||
from dotmap import DotMap
|
||||
import pulumi
|
||||
import pulumi_proxmoxve as proxmox
|
||||
|
||||
conf=DotMap(yaml.safe_load(open("input.yaml").read()))
|
||||
config = pulumi.Config()
|
||||
|
||||
provider=proxmox.Provider("proxmoxve",
|
||||
endpoint=conf.pve.url,
|
||||
insecure=conf.pve.insecure,
|
||||
username=conf.pve.username,
|
||||
password=config.require_secret("password")
|
||||
)
|
||||
|
||||
ct=proxmox.ct.Container(conf.ct.name,
|
||||
console=proxmox.ct.ContainerConsoleArgs(enabled=True),
|
||||
cpu=proxmox.ct.ContainerCpuArgs(cores=conf.ct.cores),
|
||||
disk=proxmox.ct.ContainerDiskArgs(
|
||||
datastore_id=conf.ct.storage,
|
||||
size=conf.ct.disksize
|
||||
),
|
||||
initialization=proxmox.ct.ContainerInitializationArgs(
|
||||
hostname=conf.ct.name,
|
||||
ip_configs=[
|
||||
proxmox.ct.ContainerInitializationIpConfigArgs(
|
||||
ipv4=proxmox.ct.ContainerInitializationIpConfigIpv4Args(
|
||||
address="dhcp"
|
||||
)
|
||||
)
|
||||
],
|
||||
user_account=proxmox.ct.ContainerInitializationUserAccountArgs(
|
||||
password=conf.ct.password,
|
||||
keys=conf.ct.sshkeys
|
||||
),
|
||||
),
|
||||
memory=proxmox.ct.ContainerMemoryArgs(
|
||||
dedicated=conf.ct.ram,
|
||||
swap=conf.ct.ram
|
||||
),
|
||||
network_interfaces=[
|
||||
proxmox.ct.ContainerNetworkInterfaceArgs(
|
||||
name="eth0",
|
||||
bridge="vmbr0",
|
||||
enabled=True
|
||||
)
|
||||
],
|
||||
node_name=conf.pve.nodename,
|
||||
operating_system=proxmox.ct.ContainerOperatingSystemArgs(
|
||||
template_file_id=f"local:vztmpl/{conf.ct.template}",
|
||||
type=conf.ct.template_type
|
||||
),
|
||||
started=True,
|
||||
opts=pulumi.ResourceOptions(
|
||||
provider=provider
|
||||
)
|
||||
)
|
||||
|
||||
pulumi.export("id", pulumi.Output.all(ct.id).apply(lambda x: x[0]))
|
@ -4,16 +4,17 @@ pve:
|
||||
insecure: true
|
||||
username: root@pam
|
||||
nodename: pve
|
||||
storage: local
|
||||
|
||||
# Basic VM configuration
|
||||
ct:
|
||||
name: virtual-machine
|
||||
clone: 802
|
||||
sockets: 1
|
||||
name: container
|
||||
storage: local-lvm
|
||||
template: debian-12-standard_12.2-1_amd64.tar.zst
|
||||
template_type: debian
|
||||
cores: 1
|
||||
ram: 2048
|
||||
disksize: 20
|
||||
ram: 512
|
||||
swap: 512
|
||||
disksize: 8
|
||||
password: cicciopasticcio
|
||||
sshkeys:
|
||||
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFioHkaV1NhX6NCqsJakJw8EVBOcDHm1MEbpY499CPtG syntaxerrormmm@fisso"
|
@ -1,70 +0,0 @@
|
||||
"""A ProxmoxVE VM template with Python"""
|
||||
|
||||
import yaml
|
||||
from dotmap import DotMap
|
||||
import pulumi
|
||||
import pulumi_proxmoxve as proxmox
|
||||
|
||||
conf = DotMap(yaml.safe_load(open("input.yaml").read()))
|
||||
config = pulumi.Config()
|
||||
|
||||
provider = proxmox.Provider("proxmoxve",
|
||||
virtual_environment = {
|
||||
"endpoint": conf.pve.url,
|
||||
"insecure": conf.pve.insecure,
|
||||
"username": conf.pve.username,
|
||||
"password": config.require_secret("password")
|
||||
}
|
||||
)
|
||||
|
||||
ct = proxmox.ct.Container(conf.ct.name,
|
||||
clone = proxmox.ct.ContainerCloneArgs(
|
||||
vm_id = conf.ct.clone,
|
||||
full = True
|
||||
),
|
||||
console = proxmox.ct.ConsoleArgs(
|
||||
type = "serial",
|
||||
tty_count = 1,
|
||||
enabled = True
|
||||
),
|
||||
cpu = proxmox.ct.ContainerCpuArgs(cores = conf.ct.cores),
|
||||
disk = proxmox.ct.ContainerDiskArgs(datastore_id = conf.pve.storage),
|
||||
initialization = proxmox.ct.ContainerInitializationArgs(
|
||||
hostname = conf.ct.name,
|
||||
ip_configs = [
|
||||
proxmox.ct.ContainerInitializationIpConfigArgs(
|
||||
ipv4 = proxmox.ct.ContainerInitializationIpConfigIpv4Args(
|
||||
address = "dhcp"
|
||||
)
|
||||
)
|
||||
],
|
||||
user_account = proxmox.ct.ContainerInitializationUserAccountArgs(
|
||||
password = conf.ct.password,
|
||||
keys = conf.ct.sshkeys
|
||||
),
|
||||
),
|
||||
memory = proxmox.ct.ContainerMemoryArgs(
|
||||
dedicated = conf.ct.ram,
|
||||
swap = conf.ct.ram
|
||||
),
|
||||
network_interfaces = [
|
||||
proxmox.ct.ContainerNetworkInterfaceArgs("mynic",
|
||||
bridge = "vmbr0",
|
||||
enabled = True
|
||||
)
|
||||
],
|
||||
node_name = conf.pve.nodename,
|
||||
operating_system = proxmox.ct.ContainerOperatingSystemArgs(
|
||||
template_file_id = "debian-11-standard_11.3-1_amd64.tar.zst"
|
||||
),
|
||||
started = True,
|
||||
opts = pulumi.ResourceOptions(
|
||||
provider = provider
|
||||
)
|
||||
)
|
||||
|
||||
# Getting local IP
|
||||
# First item of the ipv4_addresses is of the loopback interface (so the usual 127.0.0.1). Let's get the second and grab only the text.
|
||||
lanip = ct.initialization["ip_configs"]["ipv4"]["address"][0]
|
||||
|
||||
pulumi.export("ip", lanip)
|
Loading…
Reference in New Issue
Block a user