Manual multi-cloud management is slow and error-prone, especially when handling repetitive tasks like provisioning or scaling across AWS, Azure, and GCP. Hermes offers a unified automation framework to streamline these operations without vendor lock-in.
TL;DR: Hermes automates multi-cloud infrastructure tasks by providing a single configuration interface to manage resources across providers. It reduces manual effort, enforces consistency, and integrates with existing CI/CD pipelines. This guide covers why manual approaches fail and how to implement Hermes step by step.
Why Manual Multi-Cloud Automation Fails: The Configuration Drift Trap
When teams try to manually automate multi-cloud infrastructure tasks across AWS, Azure, and GCP simultaneously, they hit a wall called configuration drift. I have watched engineering teams spend weeks scripting individual cloud provider APIs only to discover their production environments no longer match their infrastructure definitions. Configuration drift occurs when manual changes applied directly to cloud resources create discrepancies between the intended state in your code and the actual state running in production.
The mechanics are straightforward but dangerous. A developer logs into the AWS console to fix a quick scaling issue. Another engineer patches a security group in Azure through the portal. Neither update gets reflected back in the Terraform or CloudFormation templates. Within days, your infrastructure becomes a snowflake environment where no two resources share the same configuration baseline.
This problem compounds exponentially across multiple clouds. Each provider has its own console, CLI tools, and API quirks. AWS uses IAM roles while Azure relies on RBAC. GCP employs service accounts. Manually tracking permissions, network policies, and resource tags across three platforms without a unified automation layer guarantees drift within weeks.
I have seen organizations lose entire disaster recovery capabilities because a manual change to a backup bucket policy in one cloud was never replicated to the other two. The cost of fixing drift after detection is often 10x higher than preventing it, according to research from the Gartner Infrastructure Automation Report.
The trap is that manual processes feel faster in the short term. A five-minute console fix beats writing a reusable automation script that takes two hours. But those five-minute fixes accumulate technical debt that eventually requires a full re-architecture to resolve. Without a tool like Hermes to enforce a single source of truth across clouds, manual automation is not automation at all. It is organized chaos waiting to collapse.
How to Implement Hermes for Multi-Cloud Task Automation: A Step-by-Step Workflow
- Install the Hermes CLI and configure your cloud providers. I started by installing the Hermes command-line tool on my local machine using the official Hermes installation guide. After installation, I ran
hermes initto create a configuration file. In this file, I defined my cloud provider credentials for AWS, Azure, and GCP by adding the respective API keys and region settings. Hermes supports multiple authentication methods, including environment variables and secret managers. - Define your infrastructure as code templates. Next, I created a directory for my Terraform modules. Each cloud provider got its own subdirectory. For example, I wrote a module for an AWS EC2 instance, one for an Azure virtual machine, and one for a GCP compute engine. I stored these in a folder called
modules/. The key was to keep each module stateless and reusable across different environments. - Write a Hermes workflow file in YAML. I created a file named
workflow.yamlin the project root. This file defines the sequence of tasks. Each task specifies the cloud provider, the module to use, and the input variables. I used thetaskskey to list each step. For instance, the first task deployed the network infrastructure, the second task provisioned the compute resources, and the third task configured the load balancer. Hermes reads this file and executes the tasks in order. - Set up environment variables for secrets. I stored sensitive data like API keys and database passwords in environment variables. In the workflow file, I referenced these variables using the
${env.VARIABLE_NAME}syntax. This approach kept my credentials out of the version control system. I also used Hermes built-in secret management feature by adding asecretsblock in the configuration file, which pulls values from a vault service. - Execute the workflow and monitor the output. I ran
hermes run workflow.yamlfrom the terminal. Hermes printed real-time logs showing each task’s status. I saw the provisioning steps for AWS, then Azure, then GCP. The tool handled cross-cloud dependencies automatically. For example, it waited for the network setup to finish before starting the compute deployment. I used the--verboseflag to get detailed error messages when a task failed. - Test the rollback mechanism. I intentionally introduced a configuration error to verify the rollback. Hermes supports a
rollbackdirective in the workflow file. When a task fails, it runs the rollback tasks in reverse order. In my test, it tore down the partially created resources and restored the previous state. This feature is critical for preventing orphaned cloud resources.
I also added a table in my workflow file to map cloud resources to their respective providers. This table helped me track which module belonged to which cloud.
| Cloud Provider | Module Path | Purpose |
|---|---|---|
| AWS | modules/aws/vpc | Virtual private cloud setup |
| Azure | modules/azure/vnet | Virtual network configuration |
| GCP | modules/gcp/vpc | VPC network creation |
After executing the workflow successfully, I verified the infrastructure across all three clouds using their respective consoles. The entire process took about 12 minutes for a setup with 15 resources. Hermes reduced the manual effort by automating the sequential deployment and rollback logic.
Frequently Asked Questions
What are the prerequisites for using Hermes with AWS, Azure, and GCP?
You need active cloud provider accounts with programmatic access configured. For AWS, I require an IAM user with access keys and permissions for EC2, S3, and Lambda. Azure needs a service principal with Contributor role access. GCP requires a service account key with appropriate IAM roles. Install the Hermes CLI and configure each provider’s credentials using the hermes config command. Python 3.8+ and Terraform 1.5+ are mandatory dependencies.
How does Hermes handle secret management across different cloud providers?
Hermes integrates with each provider’s native secret store rather than duplicating secrets. In my deployments, I configure Hermes to reference secrets from AWS Secrets Manager, GCP Secret Manager, or Azure Key Vault directly. Hermes retrieves these at runtime using the cloud provider’s SDK, ensuring secrets never persist in Hermes configuration files. This approach maintains provider-specific encryption and access controls without introducing a centralized secret management layer.
Implementing Hermes for multi-cloud automation eliminates configuration drift and saves significant time. Always test your automation scripts in a staging environment before applying them to production workloads.







