Aria Automation Orchestrator (vRO) offers three distinct methodologies for integrating Polyglot scripting capabilities into automation workflows and actions: Zip Bundles, Script Environments, and Native Libraries. Each approach caters to specific operational requirements, dependency management strategies, and infrastructure constraints.
Orchestrator supports 3 languages called Runtimes: Python, Node.js and PowerShell (+ PowerCLI which comes with extra VMware Modules). Note that steps may slightly change for each runtime like installation command for modules, using environment variable etc.
This blog highlights the architectural nuances, use cases, and practical considerations for these methodologies.
1. Zip Bundles: Legacy Dependency Management
Overview
Zip Bundles represent the legacy approach for incorporating custom Python modules into vRO workflows, primarily used in pre-vRO 8.8 environments or air-gapped deployments lacking internet access. This method involves manually bundling third-party libraries into a ZIP archive with a predefined directory structure.
Implementation Steps
- Directory Preparation: Create a working directory (e.g.,
vro-python) with a mandatorylibsubfolder.
mkdir vro-python
cd /vro-python
mkdir lib- Dependency Installation: For Python, use
pip install --target=<lib_path>to install modules (e.g.,datetime) into thelibdirectory.
pip install --target=<lib_path> <module_name>- Script Integration: Develop a single Python (/Node.js/PowerShell) script outside the
libfolder, ensuring imports reference the bundled modules. - ZIP Creation: Compress the entire directory using tools like 7-Zip and import it into vRO as a Python (/Node.js/PowerShell) action and call it based on
fileName.functionName.
Strengths and Limitations
- Strengths:
- Operates without internet connectivity, ideal for restricted environments.
- Compatible with older vRO versions (pre-8.8).
- Limitations:
- Manual dependency resolution increases setup complexity.
- No native version control, risking dependency conflicts.
2. Script Environments: Modern Dependency Automation
Overview
Introduced in vRO 8.8, Script Environments streamline dependency management by enabling direct integration with package repositories like PyPI, PowerShell Gallery and npm. This approach eliminates manual bundling and supports version-controlled module installations.
Implementation Workflow
- Environment Creation: Navigate to Assets > Environments in the vRO client and define a new environment.
- Dependency Specification: Declare required packages (e.g.,
momentfor Node.js) and versions via the UI. - Memory Allocation: Adjust memory limits (128 MB to 1024 MB) based on module size, critical for PowerShell-heavy workflows.
- Script Assignment: Associate the environment with workflows or actions, enabling automatic module resolution at runtime.
Strengths and Limitations
- Strengths:
- Automated dependency retrieval reduces maintenance overhead.
- Supports environment variables (e.g.,
process.env.TIMEZONE_IN) for dynamic configuration. - Integrated with vROโs version control and export tools.
- Support using in-house libraries.
- Limitations:
- Requires internet access for package downloads.
- Limited to vRO 8.8 and newer deployments.
3. Native Libraries: Built-In Module Utilization
Overview
Native Libraries leverage preinstalled Python (/Node.js/PowerShell) modules within vROโs runtime (e.g., http, xml), eliminating external dependencies. This approach is optimal for simple tasks requiring minimal external integration.
Implementation Workflow
- Module Identification: Reference vROโs native Python 3.7 (/Node.js/PowerShell) modules, such as
sslfor certificate validation orxmlfor parsing. - Script Development: Directly import modules without external installations (e.g.,
import http.client).
Strengths and Limitations
- Strengths:
- Zero dependency management overhead.
- Ideal for lightweight scripts leveraging built-in capabilities.
- Test Postman Code instantly as shown here.
- Limitations:
- Restricted to modules available in vROโs default Runtimes.
- Limited scalability for complex integrations requiring third-party libraries.
Comparative Analysis
| Aspect | Zip Bundles | Script Environments | Native Libraries |
|---|---|---|---|
| Dependency Source | Manually bundled modules | Direct from package repositories | Preinstalled in vRO |
| Internet Requirement inside vRO | No | Yes (and No if used internal repos) | No |
| Setup Complexity | High (manual ZIP creation) | Low (UI-driven) | None |
| Version Control | Manual | Integrated with vRO | Yes |
| Use Case | Air-gapped environments. | Where External modules are a necessity | Simple scripts with built-in modules |
| Version supported | 8.0+ | 8.8+ | 8.0+ |
Operational Recommendations
When to Use Zip Bundles
- Older versions: Organizations using vRO versions older than 8.8.
- Offline Deployments: Environments without internet access, such as secure government projects.
- Minimize unwanted code changes: External dependencies can make changes that may break your code. With zip bundle, you can lock your dependencies forever.
When to Use Script Environments
- Modern Workflows: Teams prioritizing automation and maintainability in vRO 8.8+.
- Collaborative Development: Scenarios requiring reproducible environments across deployments.
- In-house Libraries: Teams developing in-house libraries can be easily tested with script environments.
When to Use Native Libraries
- Rapid Prototyping: Quick scripts utilizing vROโs built-in modules (e.g., REST calls with
http.client). - Minimalist Design: Tasks where external dependencies introduce unnecessary complexity.
Conclusion
vROโs Polyglot methodologies offer flexible solutions tailored to diverse operational needs. Zip Bundles remain indispensable for legacy and offline use cases, while Script Environments modernize dependency management for cloud-native workflows. Native Libraries provide a no-frills approach for lightweight automation. By aligning methodological choices with infrastructure constraints and project requirements, organizations can optimize their vRO deployments for scalability, maintainability, and performance.
For implementation details, refer to:
- Zip Bundles: Run a Custom Python Script in vRO.
- Script Environments: vRO Script Environments Guide.
- Native Libraries: Python Native Modules Example.
Citations:
- https://cloudblogger.co.in/2022/07/20/getting-started-vrealize-orchestrator-script-environments-cb10098/
- https://cloudblogger.co.in/2023/02/18/run-a-simple-custom-python-script-in-vro-cb10106/
- https://cloudblogger.co.in/2023/08/16/working-with-orchestrator-python-action-with-just-native-libraries/
- https://blogs.vmware.com/management/2022/02/cr-vro-aws-eks.html
- https://cloudblogger.co.in/2023/06/05/run-postman-code-directly-into-orchestrator/
Discover more from Cloud Blogger
Subscribe to get the latest posts sent to your email.










