| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 1 | input: { |
| 2 | name: string @name(Hostname) |
| 3 | username: string @name(Username) |
| gio | 29f6b87 | 2024-09-08 16:14:58 +0400 | [diff] [blame] | 4 | authKey?: string @name(Auth Key) @role(VPNAuthKey) @usernameField(username) @enabledField(vpnEnabled) |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 5 | cpuCores: int | *1 @name(CPU Cores) |
| 6 | memory: string | *"2Gi" @name(Memory) |
| gio | 29f6b87 | 2024-09-08 16:14:58 +0400 | [diff] [blame] | 7 | vpnEnabled: bool @name(Enable VPN) |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 8 | } |
| 9 | |
| 10 | name: "Virutal Machine" |
| 11 | namespace: "app-vm" |
| 12 | readme: "Virtual Machine" |
| 13 | description: "Virtual Machine" |
| 14 | icon: """ |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 15 | <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 2048 2048"><path fill="currentColor" d="M1280 384H640V256h640zm0 1024H640v-128h640zm0 256H640v-128h640zM1408 0q27 0 50 10t40 27t28 41t10 50v1792H384V128q0-27 10-50t27-40t41-28t50-10zm0 128H512v1664h896z"/></svg>""" |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 16 | |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 17 | out: { |
| 18 | vm: { |
| 19 | "\(input.name)": { |
| 20 | username: input.username |
| 21 | domain: global.domain |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 22 | cpuCores: input.cpuCores |
| 23 | memory: input.memory |
| gio | 29f6b87 | 2024-09-08 16:14:58 +0400 | [diff] [blame] | 24 | if !input.vpnEnabled { |
| 25 | vpn: enabled: false |
| 26 | } |
| 27 | if input.vpnEnabled { |
| 28 | vpn: { |
| 29 | enabled: true |
| 30 | loginServer: "https://headscale.\(global.domain)" |
| 31 | authKey: input.authKey |
| 32 | } |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 33 | } |
| gio | 36b23b3 | 2024-08-25 12:20:54 +0400 | [diff] [blame] | 34 | } |
| 35 | } |
| 36 | } |