Normalize the Inputs, Not the Clouds: Schema-Validated Profile Generation and Collision-Free Address Planning for Multi-Cloud Infrastructure as Code
Abstract
A platform that runs on several public clouds must decide where to absorb the differences between them. A common resource model across providers tends to reduce each cloud to the features all of them share, while separate per-cloud code leaves operators with a different procedure, input format, and address plan for every provider. This paper presents an arrangement summarized as normalize the inputs, not the clouds, designed by the author for a multi-tenant enterprise SaaS platform on Amazon Web Services (AWS), Microsoft Azure, Google Cloud, and a fourth, regional cloud provider. Provider-specific Terraform modules use each cloud’s native mechanisms, such as OpenID Connect federation for pod identity on AWS, managed identities on Azure, and Workload Identity Federation on Google Cloud. Above them, a provider-neutral generator with per-cloud subcommands validates operator inputs against JSON Schema, plans address space with a recursive CIDR splitting algorithm and a shared reservation ledger that prevents overlaps when environments are provisioned concurrently, and renders Terragrunt profiles from Jinja2 templates. A converter brings legacy Ansible-managed environments into the same form by reading current sizes, network settings, and cost tags from live cloud APIs, and a pipeline runs generated profiles in plan and apply modes with per-build workspace isolation. We describe the design, its production use and lessons, and a methodology for evaluating it.
Article Information
Journal |
International Journal of Emerging Trends in Engineering and Management Research |
|---|---|
Volume (Issue) |
Vol. 9 No. 4 (2024): International Journal of Emerging Trends in Engineering and Management Research (IJETEMR) |
DOI |
|
Pages |
16116-16123 |
Published |
July 18, 2024 |
| Copyright |
All rights reserved |
Open Access |
This work is licensed under a Creative Commons Attribution 4.0 International License. |
How to Cite |
Ramakrishna Kommineni (%2024). Normalize the Inputs, Not the Clouds: Schema-Validated Profile Generation and Collision-Free Address Planning for Multi-Cloud Infrastructure as Code. International Journal of Emerging Trends in Engineering and Management Research , Vol. 9 No. 4 (2024): International Journal of Emerging Trends in Engineering and Management Research (IJETEMR) , pp. 16116-16123. https://doi.org/10.15662/ijetemr.2024.0904005 |
References
[2] A. Rahman, R. Mahdavi-Hezaveh, and L. Williams, “A systematic mapping study of infrastructure as code research,” Inf. Softw. Technol., vol. 108, pp. 65–77, 2019.
[3] M. Guerriero, M. Garriga, D. A. Tamburri, and F. Palomba, “Adoption, support, and challenges of infrastructure-as-code: Insights from industry,” in Proc. IEEE Int. Conf. Softw. Maintenance Evol. (ICSME), 2019, pp. 580–589.
[4] HashiCorp, “Modules overview,” Terraform documentation. [Online]. Available: https://developer.hashicorp.com/terraform/language/modules
[5] HashiCorp, “Use input variables to add module arguments,” Terraform documentation. [Online]. Available: https://developer.hashicorp.com/terraform/language/values/variables
[6] Gruntwork, “Units,” Terragrunt documentation. [Online]. Available: https://docs.terragrunt.com/features/units/
[7] HashiCorp, “terraform plan command reference,” Terraform documentation. [Online]. Available: https://developer.hashicorp.com/terraform/cli/commands/plan
[8] HashiCorp, “State locking,” Terraform documentation. [Online]. Available: https://developer.hashicorp.com/terraform/language/state/locking
[9] Pulumi, “Components,” Pulumi documentation. [Online]. Available: https://www.pulumi.com/docs/iac/concepts/resources/components/
[10] Crossplane Authors, “Compositions,” Crossplane documentation. [Online]. Available: https://docs.crossplane.io/latest/composition/compositions/
[11] A. Wright, H. Andrews, B. Hutton, and G. Dennis, “JSON Schema: A media type for describing JSON documents,” IETF Internet-Draft draft-bhutton-json-schema-01, 2022. [Online]. Available: https://json-schema.org/draft/2020-12/json-schema-core
[12] Pallets Projects, “Template designer documentation,” Jinja documentation. [Online]. Available: https://jinja.palletsprojects.com/en/stable/templates/
[13] Y. Rekhter, B. Moskowitz, D. Karrenberg, G. J. de Groot, and E. Lear, “Address allocation for private internets,” IETF RFC 1918 (BCP 5), 1996.
[14] V. Fuller and T. Li, “Classless inter-domain routing (CIDR): The Internet address assignment and aggregation plan,” IETF RFC 4632 (BCP 122), 2006.
[15] Amazon Web Services, “What is IPAM?,” Amazon VPC IP Address Manager User Guide. [Online]. Available: https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html
[16] Microsoft, “What is IP address management (IPAM) in Azure Virtual Network Manager?,” Microsoft Learn. [Online]. Available: https://learn.microsoft.com/en-us/azure/virtual-network-manager/concept-ip-address-management
[17] HashiCorp, “Import resources overview,” Terraform documentation. [Online]. Available: https://developer.hashicorp.com/terraform/language/import
[18] Google Cloud Platform, “Terraformer,” GitHub repository. [Online]. Available: https://github.com/GoogleCloudPlatform/terraformer
[19] Amazon Web Services, “IAM roles for service accounts,” Amazon EKS User Guide. [Online]. Available: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
[20] Microsoft, “Managed identities for Azure resources,” Microsoft Learn. [Online]. Available: https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview
[21] Microsoft, “What is Azure Firewall?,” Microsoft Learn. [Online]. Available: https://learn.microsoft.com/en-us/azure/firewall/overview
[22] Google Cloud, “About Workload Identity Federation for GKE,” Google Kubernetes Engine documentation. [Online]. Available: https://docs.cloud.google.com/kubernetes-engine/docs/concepts/workload-identity
[23] Google Cloud, “VPC firewall rules,” Cloud Next Generation Firewall documentation. [Online]. Available: https://docs.cloud.google.com/firewall/docs/firewalls
[24] Amazon Web Services, “Working with items and attributes in DynamoDB,” Amazon DynamoDB Developer Guide. [Online]. Available: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html