the existing infrastructure
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: Blueprint
|
||||
metadata:
|
||||
name: linux-vm
|
||||
title: Linux virtual machine
|
||||
description: A VM in the Terraform repository, sized from t-shirt sizes. The vRA classic, now a pull request.
|
||||
icon: server
|
||||
category: Compute
|
||||
version: 2.0.0
|
||||
owners: [team:platform]
|
||||
tags: [terraform, vm]
|
||||
spec:
|
||||
inputs:
|
||||
type: object
|
||||
required: [environment, name, os, size]
|
||||
additionalProperties: false
|
||||
properties:
|
||||
environment: { type: string, title: Environment, enum: [dev, test, prod], default: dev }
|
||||
name: { type: string, title: VM name, pattern: "^[a-z][a-z0-9-]{1,30}$" }
|
||||
os:
|
||||
type: string
|
||||
title: Operating system
|
||||
enum: [ubuntu-24.04, rhel-9]
|
||||
default: ubuntu-24.04
|
||||
size:
|
||||
type: string
|
||||
title: Size
|
||||
description: small = 2 vCPU / 4 GB, medium = 4 / 16, large = 16 / 64
|
||||
enum: [small, medium, large]
|
||||
default: small
|
||||
diskGb: { type: integer, title: System disk (GB), minimum: 20, maximum: 2048, default: 50 }
|
||||
vlan: { type: integer, title: VLAN, enum: [110, 120, 130], default: 110 }
|
||||
ui:
|
||||
order: [environment, name, os, size, diskGb, vlan]
|
||||
fields:
|
||||
os: { immutable: true }
|
||||
resources:
|
||||
- id: vm
|
||||
type: { name: vm } # a type in this repository
|
||||
params:
|
||||
env: ${{ inputs.environment }}
|
||||
name: ${{ inputs.name }}
|
||||
values:
|
||||
template: ${{ inputs.os }}
|
||||
cpu: "${{ inputs.size == 'small' ? 2 : inputs.size == 'medium' ? 4 : 16 }}"
|
||||
memory_gb: "${{ inputs.size == 'small' ? 4 : inputs.size == 'medium' ? 16 : 64 }}"
|
||||
disks: [{ size_gb: "${{ inputs.diskGb }}", tier: standard }]
|
||||
network: { vlan: "${{ inputs.vlan }}" }
|
||||
backup: ${{ inputs.environment == 'prod' }}
|
||||
approval:
|
||||
rules:
|
||||
- name: large-vm-cost
|
||||
when: inputs.size == 'large'
|
||||
approvers: [group:finops]
|
||||
actions:
|
||||
- name: resize
|
||||
title: Resize
|
||||
icon: maximize
|
||||
description: Change the VM size. The VM restarts to apply it.
|
||||
inputs:
|
||||
- { name: size, title: New size, type: enum, options: [small, medium, large], required: true }
|
||||
apply:
|
||||
vm:
|
||||
values:
|
||||
cpu: "${{ action.size == 'small' ? 2 : action.size == 'medium' ? 4 : 16 }}"
|
||||
memory_gb: "${{ action.size == 'small' ? 4 : action.size == 'medium' ? 16 : 64 }}"
|
||||
Reference in New Issue
Block a user