canonical/pycloudlib

Azure: network/non-compute overrides

Closed this issue · 0 comments

Summary

The pycloudlib.azure interfaces and implementation set many defaults for deployment, but with no means of customizing deployments outside of of the vm_params kwarg for the launch() method (and this only applies to the compute deployment). Issue #298 already identifies a VM deployment configuration which should be explicitly enumerated into the launch() interface; this issue applies to the configuration of any and all deployment resources which users currently have no access to, specifically:

  • NIC
  • Virtual Network
  • IP Address
  • Network Security Group
  • The underlying resource group, which is implicitly created upon client instantiation

pycloudlib should set sane defaults - but offer a certain degree of configurability such that users are not locked into hard-coded defaults with no means of circumventing short of forking the library.

Motivation

In addition to the common-sense option for users to have the means of overriding defaults, there are real Azure-specific constraints which cannot easily be overcome within the current deployment implementation:

  1. Resource Quotas - As an example, pycloudlib is configured to deploy "Standard" Azure IP Addresses for VM deployments, where "Standard" is actually the premium IP Address resource, and thus has a lower default quota compared to the "Basic" IP Address. Increasing quotas in Azure when dealing with larger deployments can be difficult (not guaranteed to be approved, especially with premium resources), so it is only logical that pycloudlib does not lock users into resources which are gated by the cloud provider.
  2. Resource Efficiency - in a similar vein to the first point, the default deployment scheme can actually be quite wasteful (full set-up and tear-down of all requisite resources for a given deployment cycle). While I do not suggest we re-implement Terraform/ARM Templates etc. for highly customized VM deployments, offering a means similar to vm_params for default overrides will enable users to customize deployments to their liking while still utilizing pycloudlib's framework.