Compare commits

...

2 Commits

7 changed files with 60 additions and 10 deletions

2
linode/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.pyc
venv/

5
linode/Pulumi.yaml Normal file
View File

@ -0,0 +1,5 @@
name: ${PROJECT}
description: ${DESCRIPTION}
runtime: python
template:
description: A Pulumi deployment with Linode cloud and Python

25
linode/__main__.py Normal file
View File

@ -0,0 +1,25 @@
"""A Linode Python Pulumi program"""
import pulumi
import pulumi_linode
import yaml
from dotmap import DotMap
conf = DotMap(yaml.safe_load(open("input.yaml").read()))
config = pulumi.Config()
# Create a Linode resource (Linode Instance)
instance = pulumi_linode.Instance('my-instance',
type=config.linode.type,
region=config.linode.region,
image=config.linode.image,
label=config.vm.name,
root_pass=config.vm.root_password,
authorized_keys=config.vm.sshkeys
opts=pulumi.ResourceOptions(
custom_timeouts=pulumi.CustomTimeouts(create="2m")
)
)
# Export the Instance label of the instance
pulumi.export('ip_address', instance.ip_address)

14
linode/input.yaml Normal file
View File

@ -0,0 +1,14 @@
---
linode:
type: g6-nanode-1
region: eu-central
image: linode/debian12
# Basic VM configuration
vm:
name: linode-test
root_password: cicciopasticcio
sshkeys:
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFioHkaV1NhX6NCqsJakJw8EVBOcDHm1MEbpY499CPtG syntaxerrormmm@fisso"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILu91hBh8pNRt4eE1pug0Y4jCHZDCcMJ+vj3CiF5EQHV syntaxerrormmm@syntaxxps"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILH5q/ObtC4VhNT88gebezP/svpvCoQLoZCh4DvUn4xq syntaxerrormmm@taz"

4
linode/requirements.txt Normal file
View File

@ -0,0 +1,4 @@
pulumi>=3.0.0,<4.0.0
pulumi-linode>=4.0.0,<5.0.0
pyyaml>=6.0
dotmap>=1.3.30

View File

@ -14,12 +14,10 @@ i.close()
config = pulumi.Config() config = pulumi.Config()
provider = proxmox.Provider("proxmoxve", provider = proxmox.Provider("proxmoxve",
virtual_environment = { endpoint=input_['pve']['url'],
"endpoint": input_['pve']['url'], insecure=input_['pve']['insecure'],
"insecure": input_['pve']['insecure'], username=input_['pve']['username'],
"username": input_['pve']['username'], password=config.require_secret("password")
"password": config.require_secret("password")
}
) )
vm_name = input_['vm']['name'] vm_name = input_['vm']['name']
@ -75,7 +73,8 @@ vm = proxmox.vm.VirtualMachine("vm",
) )
), ),
opts = pulumi.ResourceOptions( opts = pulumi.ResourceOptions(
provider = provider provider = provider,
custom_timeouts=pulumi.CustomTimeouts(create="3m")
) )
) )

View File

@ -1,9 +1,9 @@
"""A ProxmoxVE VM template with Python""" """A ProxmoxVE VM template with Python"""
import yaml
from dotmap import DotMap
import pulumi import pulumi
import pulumi_proxmoxve as proxmox import pulumi_proxmoxve as proxmox
import yaml
from dotmap import DotMap
conf = DotMap(yaml.safe_load(open("input.yaml").read())) conf = DotMap(yaml.safe_load(open("input.yaml").read()))
config = pulumi.Config() config = pulumi.Config()
@ -63,7 +63,8 @@ vm = proxmox.vm.VirtualMachine(conf.vm.name,
) )
), ),
opts = pulumi.ResourceOptions( opts = pulumi.ResourceOptions(
provider = provider provider = provider,
custom_timeouts=pulumi.CustomTimeouts(create="3m")
) )
) )