Pages

Friday, July 11, 2025

Aria Project Unicorn: Cloud template to deploy elastic vm on new dynamically allocated network

🧪 Rapid-Provisioning with Aria Assembler: Disposable Infrastructure at Scale

A few months back, I found myself with some rare downtime—so naturally, I returned to experimenting with Aria Assembler’s more advanced provisioning capabilities. There’s something elegant about temporary infrastructure that fulfills its purpose and then disappears. The concept: build what’s needed, let it serve, and allow Aria to automate its own teardown.

🎯 Use Case

My first goal was to develop a disposable environment that end-users could spin up at will and retire just as easily. By letting Aria handle both provisioning and decommissioning, we eliminate orphaned resources and ensure clean exits.

⚙️ What This Template Does

  • Creates a new /28 subnet for isolation (approx. 14 usable IPs)
  • Deploys a Windows virtual machine with elastic scaling configured
  • Places a load balancer in front of the VM for basic traffic distribution

This ephemeral environment lives for the duration of its TTL (time-to-live). Once expired, Aria deletes all associated components without human intervention.

🧱 Prerequisites

  • AWS Cloud Account and Project: Ready and authorized for resource deployment.
  • Custom Network Profile: Tagged for unique network constraints:
    project:projectname and network:Dynamic28
    • Isolation Policy: On-demand network
    • Network Domain: AWS default VPC
    • External Subnet: selected from a /20 block
    • Subnet Size: /28
  • Image and Flavor Profiles: Configured to deploy a Windows-based VM

🛠️ Suggestions for Making It Functional

This is a concept template, but here’s how it could evolve:

  • Add Security Groups: Ensure appropriate access controls and network protection.
  • Add Inputs: Introduce dynamic variables (e.g., project name, image type) for repeatable deployments.
  • Auto-Tag Resources: Help with auditability and lifecycle tracking.
  • Lifecycle Hooks: Optional alerts or logic before deletion.

🚀 Why Disposable Infrastructure Matters

Ephemeral environments like these promote resource efficiency, sandbox agility, and cleaner cloud hygiene. With Aria handling both launch and sunset operations, teams can iterate rapidly while maintaining control and governance.

Thinking about scaling this concept further? I’ve got a few ideas, maybe a series around intelligent disposability, runtime flexibility, and audit-forward automation.


<code>

'formatVersion': 1
inputs: {}
resources:
  front-end-load_balancer1:
    type: Cloud.LoadBalancer
    properties:
      internetFacing: false
      network: ${resource.dynamic-network.id}
      instances: ${resource["web_vm"].id}
      routes:
        - protocol: HTTP
          port: '80'
          instanceProtocol: HTTP
          instancePort: '80'
          healthCheckConfiguration:
            protocol: HTTP
            port: '80'
            urlPath: /index.pl
            intervalSeconds: 60
            timeoutSeconds: 30
            unhealthyThreshold: 5
            healthyThreshold: 2
  web_vm:
    type: Cloud.Machine
    properties:
      image: Windows 2022
      flavor: t3.small
      constraints: # tags define multiple projects, might break if associated with both.
        - tag: project:MyAriaProject
        - tag: az:a
      autoScaleConfiguration:
        policy: Metric
        minSize: 1
        maxSize: 10
        desiredCapacity: 1
        metricScaleRules:
          - action:
              type: ChangeCount
              value: -2
              cooldown: 60
            trigger:
              metric: CPUUtilization
              period: 60
              operator: LessThan
              statistic: Average
              threshold: 3
              evaluationPeriods: 1
          - action:
              type: ChangeCount
              value: 2
              cooldown: 60
            trigger:
              metric: CPUUtilization
              period: 60
              operator: GreaterThan
              statistic: Average
              threshold: 1
              evaluationPeriods: 3
      networks:
        - network: ${resource.dynamic-network.id}
          securityGroups: []
  dynamic-network: # network profile will create a /28 subnet, see profile for where.
    type: Cloud.Network
    properties:
      networkType: private
      name: esw-dyna-app
      tags:
        - key: placement
          value: new-dynaNetwork
        - key: deployment
          value: ${env.deploymentName}
      constraints:
        - tag: project:MyAriaProject
        - tag: network:Dynamic28
</code>

 

No comments:

Post a Comment