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:
- 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 thatpycloudlib
does not lock users into resources which are gated by the cloud provider. - 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 utilizingpycloudlib
's framework.