I am thinking of exposing a simple YAML file where only the required data is needed to be provided. Implementation level details will not be exposed to the user, unless they want to over-ride the defaults that work for most cases. Is this a good idea? Is there a better idea?
Using a simple YAML file to collect the required data for server provisioning while hiding the implementation details is a good idea. This approach provides a clean and straightforward user experience by abstracting away the complexity of the underlying tools and infrastructure. Users can quickly get started with minimal learning curve, and the YAML file format is human-readable and easy to understand.
Here are some additional suggestions to enhance the user experience:
Provide clear documentation: Include clear documentation with examples to help users understand the YAML file format and the available options. This will make it easier for them to provide the correct information and minimize errors.
Validate user input: Implement input validation to catch any errors in the YAML file before starting the provisioning process. This can help reduce the likelihood of issues caused by incorrect or missing data.
Offer customization options: While the default settings should work for most cases, provide a way for users to customize and override the defaults if needed. This allows more advanced users to fine-tune the provisioning process to fit their specific requirements.
Progressive disclosure: You can also consider a "progressive disclosure" approach, where users are initially presented with only the most critical options. As they become more familiar with the tool or need more advanced features, they can access additional options and settings.
Overall, the idea of using a simple YAML file to collect user input and hide implementation details is a solid approach to providing a user-friendly experience. By ensuring clear documentation, input validation, customization options, and progressive disclosure, you can create an even better user experience that caters to both beginners and advanced users.