138 lines
4.9 KiB
Plaintext
138 lines
4.9 KiB
Plaintext
|
|
# Nested Provisioning Contracts
|
||
|
|
#
|
||
|
|
# Type definitions for nested VM provisioning
|
||
|
|
# Migrated from provisioning/kcl/nested_provisioning.k
|
||
|
|
|
||
|
|
{
|
||
|
|
VolumeConfig = {
|
||
|
|
name | String,
|
||
|
|
description | String | optional,
|
||
|
|
type | [| 'local, 'nfs, 'cifs, 'cloud, 'host |] | default = 'local,
|
||
|
|
size_gb | Number | optional,
|
||
|
|
mount_path | String,
|
||
|
|
readonly | Bool | optional | default = false,
|
||
|
|
mount_mode | String | optional | default = "755",
|
||
|
|
host | String | optional,
|
||
|
|
path | String | optional,
|
||
|
|
username | String | optional,
|
||
|
|
password | String | optional,
|
||
|
|
bucket | String | optional,
|
||
|
|
provider | [| 'aws, 'azure, 'gcp, 'minio |] | optional | default = 'aws,
|
||
|
|
region | String | optional,
|
||
|
|
iops | Number | optional,
|
||
|
|
throughput_mbps | Number | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
NetworkConfig = {
|
||
|
|
name | String,
|
||
|
|
description | String | optional,
|
||
|
|
type | [| 'bridge, 'overlay, 'host, 'vlan |] | default = 'bridge,
|
||
|
|
vlan_id | Number | optional,
|
||
|
|
subnet | String,
|
||
|
|
gateway | String | optional,
|
||
|
|
dns_servers | Array String | optional,
|
||
|
|
mtu | Number | optional | default = 1500,
|
||
|
|
dhcp_enabled | Bool | optional | default = true,
|
||
|
|
dhcp_start | String | optional,
|
||
|
|
dhcp_end | String | optional,
|
||
|
|
allow_outbound | Bool | optional | default = true,
|
||
|
|
allow_inbound | Bool | optional | default = false,
|
||
|
|
rules | Array { _ | String } | optional,
|
||
|
|
bandwidth_limit_mbps | Number | optional,
|
||
|
|
latency_ms | Number | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
NestedVmConfig = {
|
||
|
|
name | String,
|
||
|
|
description | String | optional,
|
||
|
|
parent_vm | String,
|
||
|
|
cpu | Number | default = 2,
|
||
|
|
memory_mb | Number | default = 2048,
|
||
|
|
disk_gb | Number | default = 20,
|
||
|
|
nested_virt | Bool | optional | default = true,
|
||
|
|
base_image | String | optional | default = "ubuntu-22.04",
|
||
|
|
from_golden_image | String | optional,
|
||
|
|
networks | Array String,
|
||
|
|
static_ip | String | optional,
|
||
|
|
dns | Array String | optional,
|
||
|
|
volumes | Array String | optional,
|
||
|
|
extra_disks | Array { _ | Number } | optional,
|
||
|
|
auto_start | Bool | optional | default = false,
|
||
|
|
start_order | Number | optional | default = 100,
|
||
|
|
restart_policy | [| 'no, 'always, 'on_failure |] | optional | default = 'always,
|
||
|
|
},
|
||
|
|
|
||
|
|
ContainerConfig = {
|
||
|
|
name | String,
|
||
|
|
image | String,
|
||
|
|
tag | String | optional | default = "latest",
|
||
|
|
parent_vm | String,
|
||
|
|
runtime | [| 'docker, 'podman, 'containerd |] | default = 'containerd,
|
||
|
|
cpu_millicores | Number | optional | default = 1000,
|
||
|
|
memory_mb | Number | optional | default = 512,
|
||
|
|
disk_gb | Number | optional | default = 10,
|
||
|
|
networks | Array String | optional,
|
||
|
|
expose_ports | Array { _ | Number } | optional,
|
||
|
|
environment | { _ | String } | optional,
|
||
|
|
volumes | Array { _ | String } | optional,
|
||
|
|
tmpfs | Number | optional,
|
||
|
|
auto_start | Bool | optional | default = false,
|
||
|
|
restart_policy | [| 'no, 'unless_stopped, 'always |] | optional | default = 'unless_stopped,
|
||
|
|
health_check | { _ | String } | optional,
|
||
|
|
},
|
||
|
|
|
||
|
|
MultiTierDeployment = {
|
||
|
|
name | String,
|
||
|
|
version | String | optional | default = "1.0.0",
|
||
|
|
description | String | optional,
|
||
|
|
networks | Array NetworkConfig,
|
||
|
|
volumes | Array VolumeConfig,
|
||
|
|
parent_vms | Array String,
|
||
|
|
nested_vms | Array NestedVmConfig,
|
||
|
|
containers | Array ContainerConfig,
|
||
|
|
replicas | Number | optional | default = 1,
|
||
|
|
strategy | [| 'rolling, 'blue_green, 'canary |] | optional | default = 'rolling,
|
||
|
|
health_check_interval | Number | optional | default = 30,
|
||
|
|
},
|
||
|
|
|
||
|
|
NetworkPolicy = {
|
||
|
|
name | String,
|
||
|
|
description | String | optional,
|
||
|
|
direction | [| 'inbound, 'outbound, 'both |] | default = 'both,
|
||
|
|
protocol | [| 'tcp, 'udp, 'icmp, 'all |] | default = 'all,
|
||
|
|
source | String | optional,
|
||
|
|
destination | String | optional,
|
||
|
|
port_range | String | optional,
|
||
|
|
action | [| 'allow, 'deny, 'log |] | default = 'allow,
|
||
|
|
priority | Number | optional | default = 100,
|
||
|
|
},
|
||
|
|
|
||
|
|
VolumeSnapshot = {
|
||
|
|
name | String,
|
||
|
|
volume_name | String,
|
||
|
|
created_at | String,
|
||
|
|
size_gb | Number,
|
||
|
|
checksum | String,
|
||
|
|
description | String | optional,
|
||
|
|
retention_days | Number | optional | default = 30,
|
||
|
|
auto_delete | Bool | optional | default = true,
|
||
|
|
},
|
||
|
|
|
||
|
|
NestedProvisioningPolicy = {
|
||
|
|
max_nesting_depth | Number | default = 3,
|
||
|
|
max_vms_per_parent | Number | default = 10,
|
||
|
|
max_containers_per_vm | Number | default = 50,
|
||
|
|
max_cpu_per_vm | Number | default = 16,
|
||
|
|
max_memory_per_vm | Number | default = 32768,
|
||
|
|
max_disk_per_vm | Number | default = 500,
|
||
|
|
default_network_type | String | default = "bridge",
|
||
|
|
enable_ipv6 | Bool | optional | default = false,
|
||
|
|
enable_vlan_tagging | Bool | optional | default = false,
|
||
|
|
default_volume_type | String | default = "local",
|
||
|
|
snapshot_retention_days | Number | default = 30,
|
||
|
|
enable_security_hardening | Bool | optional | default = true,
|
||
|
|
enable_network_isolation | Bool | optional | default = true,
|
||
|
|
require_auth_between_tiers | Bool | optional | default = false,
|
||
|
|
},
|
||
|
|
}
|