There are several options for customers to declaratively specify provisioning requirements in a simple and easy-to-use manner. Here are some of the popular approaches:
YAML or JSON configuration files: Many provisioning tools use YAML or JSON files as a human-readable way to specify the infrastructure requirements. These formats are easy to read and write, and they can be easily processed by the tool to create or manage infrastructure resources.
Domain-Specific Language (DSL): A DSL can be designed specifically for infrastructure provisioning, with a syntax and structure that's tailored to describe the resources and their relationships. This can make it easier for users to express their requirements without dealing with the complexity of a general-purpose language.
Predefined templates: Offer a library of predefined templates for common infrastructure setups that customers can customize to fit their needs. This can help users quickly get started with their infrastructure without having to write configurations from scratch.
Graphical User Interface (GUI): A GUI can provide a visual, drag-and-drop interface for users to design their infrastructure. This approach can be more intuitive and accessible, especially for users who are not familiar with coding or scripting.
Infrastructure as Code (IaC) frameworks: Leverage existing IaC frameworks like Terraform, CloudFormation, or Pulumi, which provide high-level languages to describe infrastructure resources. These frameworks are designed to simplify the provisioning process and can be extended with custom modules or resources.
Visual programming languages: Create a visual programming language that allows users to define their infrastructure requirements through flowcharts or block-based programming. This can make it easy for users with little to no coding experience to create their desired infrastructure.
When selecting an approach, consider the target audience and their familiarity with coding, scripting, and infrastructure management. The goal is to strike a balance between simplicity, expressiveness, and ease of use while still providing the flexibility and power needed to manage complex infrastructure requirements.