Title: | Virtual Machines in 'Azure' |
---|---|
Description: | Functionality for working with virtual machines (VMs) in Microsoft's 'Azure' cloud: <https://azure.microsoft.com/en-us/services/virtual-machines/>. Includes facilities to deploy, startup, shutdown, and cleanly delete VMs and VM clusters. Deployment configurations can be highly customised, and can make use of existing resources as well as creating new ones. A selection of predefined configurations is provided to allow easy deployment of commonly used Linux and Windows images, including Data Science Virtual Machines. With a running VM, execute scripts and install optional extensions. Part of the 'AzureR' family of packages. |
Authors: | Hong Ooi [aut, cre], Microsoft [cph] |
Maintainer: | Hong Ooi <[email protected]> |
License: | MIT + file LICENSE |
Version: | 2.2.2.9000 |
Built: | 2024-11-20 03:04:10 UTC |
Source: | https://github.com/azure/azurevm |
Autoscaler configuration
autoscaler_config(profiles = list(autoscaler_profile()), ...) autoscaler_profile(name = "Profile", minsize = 1, maxsize = NA, default = NA, scale_out = 0.75, scale_in = 0.25, interval = "PT1M", window = "PT5M")
autoscaler_config(profiles = list(autoscaler_profile()), ...) autoscaler_profile(name = "Profile", minsize = 1, maxsize = NA, default = NA, scale_out = 0.75, scale_in = 0.25, interval = "PT1M", window = "PT5M")
profiles |
A list of autoscaling profiles, each obtained via a call to |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
minsize , maxsize , default
|
For |
scale_out , scale_in
|
For |
interval |
For |
window |
For |
create_vm_scaleset, vmss_config
autoscaler_config() autoscaler_config(list( autoscaler_profile(minsize=2, maxsize=50, scale_out=0.9, scale_in=0.1) ))
autoscaler_config() autoscaler_config(list( autoscaler_profile(minsize=2, maxsize=50, scale_out=0.9, scale_in=0.1) ))
Class representing a virtual machine resource. In general, the methods in this class should not be called directly, nor should objects be directly instantiated from it. Use the az_vm_template
class for interacting with VMs instead.
An R6 object of class az_vm_resource
, inheriting from AzureRMR::az_resource
.
The following methods are available, in addition to those provided by the AzureRMR::az_resource class:
start(wait=TRUE)
: Start the VM. By default, wait until the startup process is complete.
stop(deallocate=TRUE, wait=FALSE)
: Stop the VM. By default, deallocate it as well.
restart(wait=TRUE)
: Restart the VM.
run_deployed_command(command, parameters, script)
: Run a PowerShell command on the VM.
run_script(script, parameters)
: Run a script on the VM. For a Linux VM, this will be a shell script; for a Windows VM, a PowerShell script. Pass the script as a character vector.
sync_vm_status()
: Check the status of the VM.
resize(size, deallocate=FALSE, wait=FALSE)
: Resize the VM. Optionally stop and deallocate it first (may sometimes be necessary).
redeploy()
: Redeploy the VM.
reimage()
: Reimage the VM.
get_public_ip_address(nic=1, config=1)
: Get the public IP address of the VM. Returns NA if the VM is shut down, or is not publicly accessible.
get_private_ip_address(nic=1, config=1)
: Get the private IP address of the VM.
get_public_ip_resource(nic=1, config=1)
: Get the Azure resource for the VM's public IP address.
get_nic(nic=1)
: Get the VM's network interface resource.
get_vnet(nic=1, config=1)
: Get the VM's virtual network resource.
get_nsg(nic=1, config=1)
: Get the VM's network security group resource. Note that an NSG can be attached to either the VM's network interface or to its virtual network subnet; if there is an NSG attached to both, this method returns a list containing the two NSG resource objects.
get_disk(disk="os")
: Get a managed disk resource attached to the VM. The disk
argument can be "os" for the OS disk, or a number indicating the LUN of a data disk. AzureVM only supports managed disks.
add_extension(publisher, type, version, settings=list(), protected_settings=list(), key_vault_settings=list())
: Add an extension to the VM.
do_vm_operation(...)
: Carry out an arbitrary operation on the VM resource. See the do_operation
method of the AzureRMR::az_resource class for more details.
AzureRMR::az_resource, get_vm_resource, az_vm_template
Class representing a virtual machine deployment template. This class keeps track of all resources that are created as part of deploying a VM, and exposes methods for managing them.
An R6 object of class az_vm_template
, inheriting from AzureRMR::az_template
.
A single virtual machine in Azure is actually a collection of resources, including any and all of the following.
Network interface (Azure resource type Microsoft.Network/networkInterfaces
)
Network security group (Azure resource type Microsoft.Network/networkSecurityGroups
)
Virtual network (Azure resource type Microsoft.Network/virtualNetworks
)
Public IP address (Azure resource type Microsoft.Network/publicIPAddresses
)
The VM itself (Azure resource type Microsoft.Compute/virtualMachines
)
By wrapping the deployment template used to create these resources, the az_vm_template
class allows managing them all as a single entity.
The following fields are exposed, in addition to those provided by the AzureRMR::az_template class.
dns_name
: The DNS name for the VM. Will be NULL if the VM is not publicly visible, or doesn't have a domain name assigned to its public IP address.
identity
: The managed identity details for the VM. Will be NULL if the VM doesn't have an identity assigned.
The following methods are available, in addition to those provided by the AzureRMR::az_template class.
start(wait=TRUE)
: Start the VM. By default, wait until the startup process is complete.
stop(deallocate=TRUE, wait=FALSE)
: Stop the VM. By default, deallocate it as well.
restart(wait=TRUE)
: Restart the VM.
run_deployed_command(command, parameters, script)
: Run a PowerShell command on the VM.
run_script(script, parameters)
: Run a script on the VM. For a Linux VM, this will be a shell script; for a Windows VM, a PowerShell script. Pass the script as a character vector.
sync_vm_status()
: Check the status of the VM.
resize(size, deallocate=FALSE, wait=FALSE)
: Resize the VM. Optionally stop and deallocate it first (may sometimes be necessary).
redeploy()
: Redeploy the VM.
reimage()
: Reimage the VM.
get_public_ip_address(nic=1, config=1)
: Get the public IP address of the VM. Returns NA if the VM is stopped, or is not publicly accessible.
get_private_ip_address(nic=1, config=1)
: Get the private IP address of the VM.
get_public_ip_resource(nic=1, config=1)
: Get the Azure resource for the VM's public IP address.
get_nic(nic=1)
: Get the VM's network interface resource.
get_vnet(nic=1, config=1)
: Get the VM's virtual network resource.
get_nsg(nic=1, config=1)
: Get the VM's network security group resource. Note that an NSG can be attached to either the VM's network interface or to its virtual network subnet; if there is an NSG attached to both, this method returns a list containing the two NSG resource objects.
get_disk(disk="os")
: Get a managed disk resource attached to the VM. The disk
argument can be "os" for the OS disk, or a number indicating the LUN of a data disk. AzureVM only supports managed disks.
add_extension(publisher, type, version, settings=list(), protected_settings=list(), key_vault_settings=list())
: Add an extension to the VM.
do_vm_operation(...)
: Carries out an arbitrary operation on the VM resource. See the do_operation
method of the AzureRMR::az_resource class for more details.
Many of these methods are actually provided by the az_vm_resource class, and propagated to the template as active bindings.
AzureRMR::az_template, create_vm, get_vm, delete_vm
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") vm <- sub$get_vm("myvm") vm$identity vm$start() vm$get_private_ip_address() vm$get_public_ip_address() vm$run_script("echo hello world! > /tmp/hello.txt") vm$stop() vm$get_private_ip_address() vm$get_public_ip_address() # NA, assuming VM has a dynamic IP address vm$resize("Standard_DS13_v2") vm$sync_vm_status() ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") vm <- sub$get_vm("myvm") vm$identity vm$start() vm$get_private_ip_address() vm$get_public_ip_address() vm$run_script("echo hello world! > /tmp/hello.txt") vm$stop() vm$get_private_ip_address() vm$get_public_ip_address() # NA, assuming VM has a dynamic IP address vm$resize("Standard_DS13_v2") vm$sync_vm_status() ## End(Not run)
Class representing a virtual machine scaleset resource. In general, the methods in this class should not be called directly, nor should objects be directly instantiated from it. Use the az_vmss_template
class for interacting with scalesets instead.
An R6 object of class az_vmss_resource
, inheriting from AzureRMR::az_resource
.
A single virtual machine scaleset in Azure is actually a collection of resources, including any and all of the following.
Network security group (Azure resource type Microsoft.Network/networkSecurityGroups
)
Virtual network (Azure resource type Microsoft.Network/virtualNetworks
)
Load balancer (Azure resource type Microsoft.Network/loadBalancers
)
Public IP address (Azure resource type Microsoft.Network/publicIPAddresses
)
Autoscaler (Azure resource type Microsoft.Insights/autoscaleSettings
)
The scaleset itself (Azure resource type Microsoft.Compute/virtualMachineScaleSets
)
By wrapping the deployment template used to create these resources, the az_vmss_template
class allows managing them all as a single entity.
The following methods are available, in addition to those provided by the AzureRMR::az_template class.
sync_vmss_status
: Check the status of the scaleset.
list_instances()
: Return a list of az_vm_resource objects, one for each VM instance in the scaleset. Note that if the scaleset has a load balancer attached, the number of instances will vary depending on the load.
get_instance(id)
: Return a specific VM instance in the scaleset.
start(id=NULL, wait=FALSE)
: Start the scaleset. In this and the other methods listed here, id
can be an optional character vector of instance IDs; if supplied, only carry out the operation for those instances.
restart(id=NULL, wait=FALSE)
: Restart the scaleset.
stop(deallocate=TRUE, id=NULL, wait=FALSE)
: Stop the scaleset.
get_public_ip_address()
: Get the public IP address of the scaleset (technically, of the load balancer). If the scaleset doesn't have a load balancer attached, returns NA.
get_vm_public_ip_addresses(id=NULL, nic=1, config=1)
: Get the public IP addresses for the instances in the scaleset. Returns NA for the instances that are stopped or not publicly accessible.
get_vm_private_ip_addresses(id=NULL, nic=1, config=1)
: Get the private IP addresses for the instances in the scaleset.
get_vnet(nic=1, config=1)
: Get the scaleset's virtual network resource.
get_nsg(nic=1, config=1)
: Get the scaleset's network security group resource.
run_deployed_command(command, parameters=NULL, script=NULL, id=NULL)
: Run a PowerShell command on the instances in the scaleset.
run_script(script, parameters=NULL, id=NULL)
: Run a script on the VM. For a Linux VM, this will be a shell script; for a Windows VM, a PowerShell script. Pass the script as a character vector.
reimage(id=NULL, datadisks=FALSE)
: Reimage the instances in the scaleset. If datadisks
is TRUE, reimage any attached data disks as well.
redeploy(id=NULL)
: Redeploy the instances in the scaleset.
mapped_vm_operation(..., id=NULL)
: Carry out an arbitrary operation on the instances in the scaleset. See the do_operation
method of the AzureRMR::az_resource class for more details.
add_extension(publisher, type, version, settings=list(), protected_settings=list(), key_vault_settings=list())
: Add an extension to the scaleset.
do_vmss_operation(...)
Carry out an arbitrary operation on the scaleset resource (as opposed to the instances in the scaleset).
AzureVM has the ability to parallelise scaleset instance operations using a background process pool provided by AzureRMR. This can lead to significant speedups when working with scalesets with high instance counts. The pool is created automatically the first time that it is required, and remains persistent for the session. You can control the size of the process pool with the azure_vm_minpoolsize
and azure_vm_maxpoolsize
options, which have default values 2 and 10 respectively.
The id
argument lets you specify a subset of instances on which to carry out an operation. This can be a character vector of instance IDs; a list of instance objects such as returned by list_instances
; or a single instance object. The default (NULL) is to carry out the operation on all instances.
AzureRMR::az_resource, get_vm_scaleset_resource, az_vmss_template, AzureRMR::init_pool
Class representing a virtual machine scaleset deployment template. This class keeps track of all resources that are created as part of deploying a scaleset, and exposes methods for managing them.
An R6 object of class az_vmss_template
, inheriting from AzureRMR::az_template
.
A virtual machine scaleset in Azure is actually a collection of resources, including any and all of the following.
Network security group (Azure resource type Microsoft.Network/networkSecurityGroups
)
Virtual network (Azure resource type Microsoft.Network/virtualNetworks
)
Load balancer (Azure resource type Microsoft.Network/loadBalancers
)
Public IP address (Azure resource type Microsoft.Network/publicIPAddresses
)
Autoscaler (Azure resource type Microsoft.Insights/autoscaleSettings
)
The scaleset itself (Azure resource type Microsoft.Compute/virtualMachineScaleSets
)
By wrapping the deployment template used to create these resources, the az_vmss_template
class allows managing them all as a single entity.
The following fields are exposed, in addition to those provided by the AzureRMR::az_template class.
dns_name
: The DNS name for the scaleset (technically, the name for its load balancer). Will be NULL if the scaleset is not publicly visible, or doesn't have a load balancer attached.
identity
: The managed identity details for the scaleset. Will be NULL if the scaleset doesn't have an identity assigned.
The following methods are available, in addition to those provided by the AzureRMR::az_template class.
sync_vmss_status
: Check the status of the scaleset.
list_instances()
: Return a list of az_vm_resource objects, one for each VM instance in the scaleset. Note that if the scaleset has an autoscaler attached, the number of instances will vary depending on the load.
get_instance(id)
: Return a specific VM instance in the scaleset.
start(id=NULL, wait=FALSE)
: Start the scaleset. In this and the other methods listed here, id
can be an optional character vector of instance IDs; if supplied, only carry out the operation for those instances.
restart(id=NULL, wait=FALSE)
: Restart the scaleset.
stop(deallocate=TRUE, id=NULL, wait=FALSE)
: Stop the scaleset.
get_public_ip_address()
: Get the public IP address of the scaleset (technically, of the load balancer). If the scaleset doesn't have a load balancer attached, returns NA.
get_vm_public_ip_addresses(id=NULL, nic=1, config=1)
: Get the public IP addresses for the instances in the scaleset. Returns NA for the instances that are stopped or not publicly accessible.
get_vm_private_ip_addresses(id=NULL, nic=1, config=1)
: Get the private IP addresses for the instances in the scaleset.
get_public_ip_resource()
: Get the Azure resource for the load balancer's public IP address.
get_vnet(nic=1, config=1)
: Get the scaleset's virtual network resource.
get_nsg(nic=1, config=1)
: Get the scaleset's network security group resource.
get_load_balancer()
: Get the scaleset's load balancer resource.
get_autoscaler()
: Get the scaleset's autoscaler resource.
run_deployed_command(command, parameters=NULL, script=NULL, id=NULL)
: Run a PowerShell command on the instances in the scaleset.
run_script(script, parameters=NULL, id=NULL)
: Run a script on the VM. For a Linux VM, this will be a shell script; for a Windows VM, a PowerShell script. Pass the script as a character vector.
reimage(id=NULL, datadisks=FALSE)
: Reimage the instances in the scaleset. If datadisks
is TRUE, reimage any attached data disks as well.
redeploy(id=NULL)
: Redeploy the instances in the scaleset.
mapped_vm_operation(..., id=NULL)
: Carry out an arbitrary operation on the instances in the scaleset. See the do_operation
method of the AzureRMR::az_resource class for more details.
add_extension(publisher, type, version, settings=list(), protected_settings=list(), key_vault_settings=list())
: Add an extension to the scaleset.
do_vmss_operation(...)
Carry out an arbitrary operation on the scaleset resource (as opposed to the instances in the scaleset).
Many of these methods are actually provided by the az_vmss_resource class, and propagated to the template as active bindings.
AzureVM has the ability to parallelise scaleset instance operations using a background process pool provided by AzureRMR. This can lead to significant speedups when working with scalesets with high instance counts. The pool is created automatically the first time that it is required, and remains persistent for the session. You can control the size of the process pool with the azure_vm_minpoolsize
and azure_vm_maxpoolsize
options, which have default values 2 and 10 respectively.
The id
argument lets you specify a subset of instances on which to carry out an operation. This can be a character vector of instance IDs; a list of instance objects such as returned by list_instances
; or a single instance object. The default (NULL) is to carry out the operation on all instances.
AzureRMR::az_template, create_vm_scaleset, get_vm_scaleset, delete_vm_scaleset, AzureRMR::init_pool
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") vmss <- sub$get_vm_scaleset("myscaleset") vmss$identity vmss$get_public_ip_address() # NA if the scaleset doesn't have a load balancer vmss$start() vmss$get_vm_private_ip_addresses() vmss$get_vm_public_ip_addresses() # NA if scaleset nodes are not publicly visible instances <- vmss$list_instances() first <- instances[1] vmss$run_script("echo hello world! > /tmp/hello.txt", id=first) vmss$stop(id=first) vmss$reimage(id=first) vmss$sync_vmss_status() ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") vmss <- sub$get_vm_scaleset("myscaleset") vmss$identity vmss$get_public_ip_address() # NA if the scaleset doesn't have a load balancer vmss$start() vmss$get_vm_private_ip_addresses() vmss$get_vm_public_ip_addresses() # NA if scaleset nodes are not publicly visible instances <- vmss$list_instances() first <- instances[1] vmss$run_script("echo hello world! > /tmp/hello.txt", id=first) vmss$stop(id=first) vmss$reimage(id=first) vmss$sync_vmss_status() ## End(Not run)
Build template definition and parameters
## S3 method for class 'vm_config' build_template_definition(config, ...) ## S3 method for class 'vmss_config' build_template_definition(config, ...) ## S3 method for class 'vm_config' build_template_parameters(config, name, login_user, size, ...) ## S3 method for class 'vmss_config' build_template_parameters(config, name, login_user, size, instances, ...)
## S3 method for class 'vm_config' build_template_definition(config, ...) ## S3 method for class 'vmss_config' build_template_definition(config, ...) ## S3 method for class 'vm_config' build_template_parameters(config, name, login_user, size, ...) ## S3 method for class 'vmss_config' build_template_parameters(config, name, login_user, size, instances, ...)
config |
An object of class |
... |
Unused. |
name |
The VM or scaleset name. Will also be used for the domain name label, if a public IP address is included in the deployment. |
login_user |
An object of class |
size |
The VM (instance) size. |
instances |
For |
These are methods for the generics defined in the AzureRMR package.
Objects of class json
, which are JSON character strings representing the deployment template and its parameters.
create_vm, vm_config, vmss_config
vm <- ubuntu_18.04() build_template_definition(vm) build_template_parameters(vm, "myubuntuvm", user_config("username", "~/.ssh/id_rsa.pub"), "Standard_DS3_v2")
vm <- ubuntu_18.04() build_template_definition(vm) build_template_parameters(vm, "myubuntuvm", user_config("username", "~/.ssh/id_rsa.pub"), "Standard_DS3_v2")
VM configuration functions
centos_7.5(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) centos_7.6(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) centos_8.1(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_8_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_9_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_10_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_10_backports_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_dsvm(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), ...) ubuntu_dsvm_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), ...) windows_dsvm(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) rhel_7.6(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.1(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.1_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.2_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_16.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_18.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_20.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_20.04_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) windows_2016(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) windows_2019(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) windows_2019_gen2(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) vm_config(image, keylogin, managed_identity = TRUE, os_disk_type = c("Premium_LRS", "StandardSSD_LRS", "Standard_LRS"), datadisks = numeric(0), nsg = nsg_config(), ip = ip_config(), vnet = vnet_config(), nic = nic_config(), other_resources = list(), variables = list(), ...)
centos_7.5(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) centos_7.6(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) centos_8.1(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_8_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_9_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_10_backports(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) debian_10_backports_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_dsvm(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), ...) ubuntu_dsvm_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), ...) windows_dsvm(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) rhel_7.6(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.1(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.1_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) rhel_8.2_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_16.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_18.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_20.04(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) ubuntu_20.04_gen2(keylogin = TRUE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), ...) windows_2016(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) windows_2019(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) windows_2019_gen2(keylogin = FALSE, managed_identity = TRUE, datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), ...) vm_config(image, keylogin, managed_identity = TRUE, os_disk_type = c("Premium_LRS", "StandardSSD_LRS", "Standard_LRS"), datadisks = numeric(0), nsg = nsg_config(), ip = ip_config(), vnet = vnet_config(), nic = nic_config(), other_resources = list(), variables = list(), ...)
keylogin |
Whether to use an SSH public key to login (TRUE) or a password (FALSE). Note that Windows does not support SSH key logins. |
managed_identity |
Whether to provide a managed system identity for the VM. |
datadisks |
The data disks to attach to the VM. Specify this as either a vector of numeric disk sizes in GB, or a list of |
nsg |
The network security group for the VM. Can be a call to |
... |
For the specific VM configurations, other customisation arguments to be passed to |
image |
For |
os_disk_type |
The type of primary disk for the VM. Can be "Premium_LRS" (the default), "StandardSSD_LRS", or "Standard_LRS". Of these, "Standard_LRS" uses hard disks and the others use SSDs as the underlying hardware. Change this to "StandardSSD_LRS" or "Standard_LRS" if the VM size doesn't support premium storage. |
ip |
The public IP address for the VM. Can be a call to |
vnet |
The virtual network for the VM. Can be a call to |
nic |
The network interface for the VM. Can be a call to |
other_resources |
An optional list of other resources to include in the deployment. |
variables |
An optional named list of variables to add to the template. |
These functions are for specifying the details of a new virtual machine deployment: the VM image and related options, along with the Azure resources that the VM may need. These include the datadisks, network security group, public IP address (if the VM is to be accessible from outside its subnet), virtual network, and network interface. vm_config
is the base configuration function, and the others call it to create VMs with specific operating systems and other image details.
ubuntu_dsvm
: Data Science Virtual Machine, based on Ubuntu 18.04
windows_dsvm
: Data Science Virtual Machine, based on Windows Server 2019
ubuntu_16.04
, ubuntu_18.04
, ubuntu_20.04
, ubuntu_20.04_gen2
: Ubuntu LTS
windows_2016
, windows_2019
: Windows Server Datacenter edition
rhel_7.6
, rhel_8
, rhel_8.1
, rhel_8.1_gen2
, rhel_8.2
, “rhel_8.2_gen2: Red Hat Enterprise Linux
centos_7.5
, centos_7.6
, centos_8.1
: CentOS
debian_8_backports
, debian_9_backports
, debian_10_backports
, debian_10_backports_gen2
: Debian with backports
The VM configurations with gen2
in the name are generation 2 VMs, which feature several technical improvements over the earlier generation 1. Consider using these for greater efficiency, however note that gen2 VMs are only available for select images and do not support all possible VM sizes.
Each resource can be specified in a number of ways:
To create a new resource as part of the deployment, call the corresponding *_config
function.
To use an existing resource, supply either an AzureRMR::az_resource
object (recommended) or a string containing the resource ID.
If the resource is not needed, specify it as NULL.
For the other_resources
argument, supply a list of resources, each of which should be a list of resource fields (name, type, properties, sku, etc).
A VM configuration defines the following template variables by default, depending on its resources. If a particular resource is created, the corresponding *Name
, *Id
and *Ref
variables will be available. If a resource is referred to but not created, the *Name*
and *Id
variables will be available. Other variables can be defined via the variables
argument.
Variable name | Contents | Description |
location |
[resourceGroup().location] |
Region to deploy resources |
vmId |
[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))] |
VM resource ID |
vmRef |
[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))] |
VM template reference |
nsgName |
[concat(parameters('vmName'), '-nsg')] |
Network security group resource name |
nsgId |
[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))] |
NSG resource ID |
nsgRef |
[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))] |
NSG template reference |
ipName |
[concat(parameters('vmName'), '-ip')] |
Public IP address resource name |
ipId |
[resourceId('Microsoft.Network/publicIPAddresses', variables('ipName'))] |
IP resource ID |
ipRef |
[concat('Microsoft.Network/publicIPAddresses/', variables('ipName'))] |
IP template reference |
vnetName |
[concat(parameters('vmName'), '-vnet')] |
Virtual network resource name |
vnetId |
[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))] |
Vnet resource ID |
vnetRef |
[concat('Microsoft.Network/virtualNetworks/', variables('vnetName'))] |
Vnet template reference |
subnet |
subnet |
Subnet name. Only defined if a Vnet was created or supplied as an az_resource object. |
subnetId |
[concat(variables('vnetId'), '/subnets/', variables('subnet'))] |
Subnet resource ID. Only defined if a Vnet was created or supplied as an az_resource object. |
nicName |
[concat(parameters('vmName'), '-nic')] |
Network interface resource name |
nicId |
[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))] |
NIC resource ID |
nicRef |
[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))] |
NIC template reference |
Thus, for example, if you are creating a VM named "myvm" along with all its associated resources, the NSG is named "myvm-nsg", the public IP address is "myvm-ip", the virtual network is "myvm-vnet", and the network interface is "myvm-nic".
An object of S3 class vm_config
, that can be used by the create_vm
method.
image_config, user_config, datadisk_config for options relating to the VM resource itself
nsg_config, ip_config, vnet_config, nic_config for other resource configs
build_template for template builder methods
vmss_config for configuring a virtual machine scaleset
# basic Linux (Ubuntu) and Windows configs ubuntu_18.04() windows_2019() # Windows DSVM with 500GB data disk, no public IP address windows_dsvm(datadisks=500, ip=NULL) # RHEL VM exposing ports 80 (HTTP) and 443 (HTTPS) rhel_8(nsg=nsg_config(nsg_rule_allow_http, nsg_rule_allow_https)) # exposing no ports externally, spot (low) priority rhel_8(nsg=nsg_config(list()), properties=list(priority="spot")) # deploying an extra resource: storage account ubuntu_18.04( variables=list(storName="[concat(parameters('vmName'), 'stor')]"), other_resources=list( list( type="Microsoft.Storage/storageAccounts", name="[variables('storName')]", apiVersion="2018-07-01", location="[variables('location')]", properties=list(supportsHttpsTrafficOnly=TRUE), sku=list(name="Standard_LRS"), kind="Storage" ) ) ) ## custom VM configuration: Windows 10 Pro 1903 with data disks ## this assumes you have a valid Win10 desktop license user <- user_config("myname", password="Use-strong-passwords!") image <- image_config( publisher="MicrosoftWindowsDesktop", offer="Windows-10", sku="19h1-pro" ) datadisks <- list( datadisk_config(250, type="Premium_LRS"), datadisk_config(1000, type="Standard_LRS") ) nsg <- nsg_config( list(nsg_rule_allow_rdp) ) vm_config( image=image, keylogin=FALSE, datadisks=datadisks, nsg=nsg, properties=list(licenseType="Windows_Client") ) ## Not run: # reusing existing resources: placing multiple VMs in one vnet/subnet rg <- AzureRMR::get_azure_login()$ get_subscription("sub_id")$ get_resource_group("rgname") vnet <- rg$get_resource(type="Microsoft.Network/virtualNetworks", name="myvnet") # by default, the NSG is associated with the subnet, so we don't need a new NSG either vmconfig1 <- ubuntu_18.04(vnet=vnet, nsg=NULL) vmconfig2 <- debian_9_backports(vnet=vnet, nsg=NULL) vmconfig3 <- windows_2019(vnet=vnet, nsg=NULL) ## End(Not run)
# basic Linux (Ubuntu) and Windows configs ubuntu_18.04() windows_2019() # Windows DSVM with 500GB data disk, no public IP address windows_dsvm(datadisks=500, ip=NULL) # RHEL VM exposing ports 80 (HTTP) and 443 (HTTPS) rhel_8(nsg=nsg_config(nsg_rule_allow_http, nsg_rule_allow_https)) # exposing no ports externally, spot (low) priority rhel_8(nsg=nsg_config(list()), properties=list(priority="spot")) # deploying an extra resource: storage account ubuntu_18.04( variables=list(storName="[concat(parameters('vmName'), 'stor')]"), other_resources=list( list( type="Microsoft.Storage/storageAccounts", name="[variables('storName')]", apiVersion="2018-07-01", location="[variables('location')]", properties=list(supportsHttpsTrafficOnly=TRUE), sku=list(name="Standard_LRS"), kind="Storage" ) ) ) ## custom VM configuration: Windows 10 Pro 1903 with data disks ## this assumes you have a valid Win10 desktop license user <- user_config("myname", password="Use-strong-passwords!") image <- image_config( publisher="MicrosoftWindowsDesktop", offer="Windows-10", sku="19h1-pro" ) datadisks <- list( datadisk_config(250, type="Premium_LRS"), datadisk_config(1000, type="Standard_LRS") ) nsg <- nsg_config( list(nsg_rule_allow_rdp) ) vm_config( image=image, keylogin=FALSE, datadisks=datadisks, nsg=nsg, properties=list(licenseType="Windows_Client") ) ## Not run: # reusing existing resources: placing multiple VMs in one vnet/subnet rg <- AzureRMR::get_azure_login()$ get_subscription("sub_id")$ get_resource_group("rgname") vnet <- rg$get_resource(type="Microsoft.Network/virtualNetworks", name="myvnet") # by default, the NSG is associated with the subnet, so we don't need a new NSG either vmconfig1 <- ubuntu_18.04(vnet=vnet, nsg=NULL) vmconfig2 <- debian_9_backports(vnet=vnet, nsg=NULL) vmconfig3 <- windows_2019(vnet=vnet, nsg=NULL) ## End(Not run)
Virtual machine scaleset configuration functions
centos_7.5_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) centos_7.6_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) centos_8.1_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_8_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_9_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_10_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_10_backports_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_dsvm_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), load_balancer = lb_config(rules = list(lb_rule_ssh, lb_rule_jupyter, lb_rule_rstudio), probes = list(lb_probe_ssh, lb_probe_jupyter, lb_probe_rstudio)), ...) ubuntu_dsvm_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), load_balancer = lb_config(rules = list(lb_rule_ssh, lb_rule_jupyter, lb_rule_rstudio), probes = list(lb_probe_ssh, lb_probe_jupyter, lb_probe_rstudio)), ...) windows_dsvm_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) rhel_7.6_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.1_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.1_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.2_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_16.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_18.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_20.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_20.04_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) windows_2016_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) windows_2019_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) windows_2019_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) vmss_config(image, options = scaleset_options(), datadisks = numeric(0), nsg = nsg_config(), vnet = vnet_config(), load_balancer = lb_config(), load_balancer_address = ip_config(), autoscaler = autoscaler_config(), other_resources = list(), variables = list(), ...)
centos_7.5_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) centos_7.6_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) centos_8.1_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_8_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_9_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_10_backports_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) debian_10_backports_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_dsvm_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), load_balancer = lb_config(rules = list(lb_rule_ssh, lb_rule_jupyter, lb_rule_rstudio), probes = list(lb_probe_ssh, lb_probe_jupyter, lb_probe_rstudio)), ...) ubuntu_dsvm_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh, nsg_rule_allow_jupyter, nsg_rule_allow_rstudio)), load_balancer = lb_config(rules = list(lb_rule_ssh, lb_rule_jupyter, lb_rule_rstudio), probes = list(lb_probe_ssh, lb_probe_jupyter, lb_probe_rstudio)), ...) windows_dsvm_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) rhel_7.6_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.1_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.1_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) rhel_8.2_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_16.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_18.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_20.04_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) ubuntu_20.04_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_ssh)), load_balancer = lb_config(rules = list(lb_rule_ssh), probes = list(lb_probe_ssh)), ...) windows_2016_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) windows_2019_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) windows_2019_gen2_ss(datadisks = numeric(0), nsg = nsg_config(list(nsg_rule_allow_rdp)), load_balancer = lb_config(rules = list(lb_rule_rdp), probes = list(lb_probe_rdp)), options = scaleset_options(keylogin = FALSE), ...) vmss_config(image, options = scaleset_options(), datadisks = numeric(0), nsg = nsg_config(), vnet = vnet_config(), load_balancer = lb_config(), load_balancer_address = ip_config(), autoscaler = autoscaler_config(), other_resources = list(), variables = list(), ...)
datadisks |
The data disks to attach to the VM. Specify this as either a vector of numeric disk sizes in GB, or a list of |
nsg |
The network security group for the scaleset. Can be a call to |
load_balancer |
The load balancer for the scaleset. Can be a call to |
... |
For the specific VM configurations, other customisation arguments to be passed to |
options |
Scaleset options, as obtained via a call to |
image |
For |
vnet |
The virtual network for the scaleset. Can be a call to |
load_balancer_address |
The public IP address for the load balancer. Can be a call to |
autoscaler |
The autoscaler for the scaleset. Can be a call to |
other_resources |
An optional list of other resources to include in the deployment. |
variables |
An optional named list of variables to add to the template. |
These functions are for specifying the details of a new virtual machine scaleset deployment: the base VM image and related options, along with the Azure resources that the scaleset may need. These include the network security group, virtual network, load balancer and associated public IP address, and autoscaler.
Each resource can be specified in a number of ways:
To create a new resource as part of the deployment, call the corresponding *_config
function.
To use an existing resource, supply either an AzureRMR::az_resource
object (recommended) or a string containing the resource ID.
If the resource is not needed, specify it as NULL.
For the other_resources
argument, supply a list of resources, each of which should be a list of resource fields (name, type, properties, sku, etc).
The vmss_config
function is the base configuration function, and the others call it to create VM scalesets with specific operating systems and other image details.
ubuntu_dsvm_ss
: Data Science Virtual Machine, based on Ubuntu 18.04
windows_dsvm_ss
: Data Science Virtual Machine, based on Windows Server 2019
ubuntu_16.04_ss
, ubuntu_18.04_ss
, ubuntu_20.04_ss
, ubuntu_20.04_gen2_ss
: Ubuntu LTS
windows_2016_ss
, windows_2019_ss
: Windows Server Datacenter edition
rhel_7.6_ss
, rhel_8_ss
, rhel_8.1_ss
, rhel_8.1_gen2_ss
, rhel_8.2_ss
, rhel_8.2_gen2_ss
: Red Hat Enterprise Linux
centos_7.5_ss
, centos_7.6_ss
, centos_8.1_ss
: CentOS
debian_8_backports_ss
, debian_9_backports_ss
, debian_10_backports_ss
, debian_10_backports_gen2_ss
: Debian with backports
The VM scaleset configurations with gen2
in the name use generation 2 VMs, which feature several technical improvements over the earlier generation 1. Consider using these for greater efficiency, however note that gen2 VMs are only available for select images and do not support all possible VM sizes.
A VM scaleset configuration defines the following template variables by default, depending on its resources. If a particular resource is created, the corresponding *Name
, *Id
and *Ref
variables will be available. If a resource is referred to but not created, the *Name*
and *Id
variables will be available. Other variables can be defined via the variables
argument.
Variable name | Contents | Description |
location |
[resourceGroup().location] |
Region to deploy resources |
vmId |
[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))] |
VM scaleset resource ID |
vmRef |
[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))] |
Scaleset template reference |
nsgName |
[concat(parameters('vmName'), '-nsg')] |
Network security group resource name |
nsgId |
[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))] |
NSG resource ID |
nsgRef |
[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))] |
NSG template reference |
vnetName |
[concat(parameters('vmName'), '-vnet')] |
Virtual network resource name |
vnetId |
[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))] |
Vnet resource ID |
vnetRef |
[concat('Microsoft.Network/virtualNetworks/', variables('vnetName'))] |
Vnet template reference |
subnet |
subnet |
Subnet name. Only defined if a Vnet was created or supplied as an az_resource object. |
subnetId |
[concat(variables('vnetId'), '/subnets/', variables('subnet'))] |
Subnet resource ID. Only defined if a Vnet was created or supplied as an az_resource object. |
lbName |
[concat(parameters('vmName'), '-lb')] |
Load balancer resource name |
lbId |
[resourceId('Microsoft.Network/loadBalancers', variables('lbName'))] |
Load balancer resource ID |
lbRef |
[concat('Microsoft.Network/loadBalancers/', variables('lbName'))] |
Load balancer template reference |
lbFrontendName |
frontend |
Load balancer frontend IP configuration name. Only defined if a load balancer was created or supplied as an az_resource object. |
lbBackendName |
backend |
Load balancer backend address pool name. Only defined if a load balancer was created or supplied as an az_resource object. |
lbFrontendId |
[concat(variables('lbId'), '/frontendIPConfigurations/', variables('lbFrontendName'))] |
Load balancer frontend resource ID. Only defined if a load balancer was created or supplied as an az_resource object. |
lbBackendId |
[concat(variables('lbId'), '/backendAddressPools/', variables('lbBackendName'))] |
Load balancer backend resource ID. Only defined if a load balancer was created or supplied as an az_resource object. |
ipName |
[concat(parameters('vmName'), '-ip')] |
Public IP address resource name |
ipId |
[resourceId('Microsoft.Network/publicIPAddresses', variables('ipName'))] |
IP resource ID |
ipRef |
[concat('Microsoft.Network/publicIPAddresses/', variables('ipName'))] |
IP template reference |
asName |
[concat(parameters('vmName'), '-as')] |
Autoscaler resource name |
asId |
[resourceId('Microsoft.Insights/autoscaleSettings', variables('asName'))] |
Autoscaler resource ID |
asRef |
[concat('Microsoft.Insights/autoscaleSettings/', variables('asName'))] |
Autoscaler template reference |
asMaxCapacity |
[mul(int(parameters('instanceCount')), 10)] |
Maximum capacity for the autoscaler. Only defined if an autoscaler was created. |
asScaleValue |
[max(div(int(parameters('instanceCount')), 5), 1)] |
Default capacity for the autoscaler. Only defined if an autoscaler was created. |
Thus, for example, if you are creating a VM scaleset named "myvmss" along with all its associated resources, the NSG is named "myvmss-nsg", the virtual network is "myvmss-vnet", the load balancer is "myvmss-lb", the public IP address is "myvmss-ip", and the autoscaler is "myvm-as".
An object of S3 class vmss_config
, that can be used by the create_vm_scaleset
method.
scaleset_options for options relating to the scaleset resource itself
nsg_config, ip_config, vnet_config, lb_config, autoscaler_config for other resource configs
build_template for template builder methods
vm_config for configuring an individual virtual machine
# basic Linux (Ubuntu) and Windows configs ubuntu_18.04_ss() windows_2019_ss() # Windows DSVM scaleset, no load balancer and autoscaler windows_dsvm_ss(load_balancer=NULL, autoscaler=NULL) # RHEL VM exposing ports 80 (HTTP) and 443 (HTTPS) rhel_8_ss(nsg=nsg_config(nsg_rule_allow_http, nsg_rule_allow_https)) # exposing no ports externally rhel_8_ss(nsg=nsg_config(list())) # low-priority (spot) VMs, large scaleset (>100 instances allowed), no managed identity rhel_8_ss(options=scaleset_options(priority="spot", large_scaleset=TRUE, managed_identity=FALSE)) ## Not run: # reusing existing resources: placing a scaleset in an existing vnet/subnet # we don't need a new network security group either vnet <- AzureRMR::get_azure_login()$ get_subscription("sub_id")$ get_resource_group("rgname")$ get_resource(type="Microsoft.Network/virtualNetworks", name="myvnet") ubuntu_18.04_ss(vnet=vnet, nsg=NULL) ## End(Not run)
# basic Linux (Ubuntu) and Windows configs ubuntu_18.04_ss() windows_2019_ss() # Windows DSVM scaleset, no load balancer and autoscaler windows_dsvm_ss(load_balancer=NULL, autoscaler=NULL) # RHEL VM exposing ports 80 (HTTP) and 443 (HTTPS) rhel_8_ss(nsg=nsg_config(nsg_rule_allow_http, nsg_rule_allow_https)) # exposing no ports externally rhel_8_ss(nsg=nsg_config(list())) # low-priority (spot) VMs, large scaleset (>100 instances allowed), no managed identity rhel_8_ss(options=scaleset_options(priority="spot", large_scaleset=TRUE, managed_identity=FALSE)) ## Not run: # reusing existing resources: placing a scaleset in an existing vnet/subnet # we don't need a new network security group either vnet <- AzureRMR::get_azure_login()$ get_subscription("sub_id")$ get_resource_group("rgname")$ get_resource(type="Microsoft.Network/virtualNetworks", name="myvnet") ubuntu_18.04_ss(vnet=vnet, nsg=NULL) ## End(Not run)
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
## R6 method for class 'az_resource_group' create_vm(name, login_user, size = "Standard_DS3_v2", config = "ubuntu_dsvm", managed_identity = TRUE, datadisks = numeric(0), ..., template, parameters, mode = "Incremental", wait = TRUE) ## R6 method for class 'az_subscription' create_vm(name, ..., resource_group = name, location) ## R6 method for class 'az_resource_group' create_vm_scaleset(name, login_user, instances, size = "Standard_DS1_v2", config = "ubuntu_dsvm_ss", ..., template, parameters, mode = "Incremental", wait = TRUE) ## R6 method for class 'az_subscription' create_vm_scaleset(name, ..., resource_group = name, location)
name
: The name of the VM or scaleset.
location
: For the subscription methods, the location for the VM or scaleset. Use the list_locations()
method of the AzureRMR::az_subscription
class to see what locations are available.
resource_group
: For the subscription methods, the resource group in which to place the VM or scaleset. Defaults to a new resource group with the same name as the VM.
login_user
: The details for the admin login account. An object of class user_config
, obtained by a call to the user_config
function.
size
: The VM (instance) size. Use the list_vm_sizes method to see what sizes are available.
config
: The VM or scaleset configuration. See 'Details' below for how to specify this. The default is to use an Ubuntu Data Science Virtual Machine.
managed_identity
: For create_vm
, whether the VM should have a managed identity attached.
datadisks
: Any data disks to attach to the VM or scaleset. See 'Details' below.
instances
: For create_vm_scaleset
, the initial number of instances in the scaleset.
...
For the subscription methods, any of the other arguments listed here, which will be passed to the resource group method. For the resource group method, additional arguments to pass to the VM/scaleset configuration functions vm_config and vmss_config. See the examples below.
template,parameters
: The template definition and parameters to deploy. By default, these are constructed from the values of the other arguments, but you can supply your own template and/or parameters as well.
wait
: Whether to wait until the deployment is complete.
mode
: The template deployment mode. If "Complete", any existing resources in the resource group will be deleted.
These methods deploy a template to create a new virtual machine or scaleset.
The config
argument can be specified in the following ways:
As the name of a supplied VM or scaleset configuration, like "ubuntu_dsvm" or "ubuntu_dsvm_ss". AzureVM comes with a number of supplied configurations to deploy commonly used images, which can be seen at vm_config and vmss_config. Any arguments in ...
will be passed to the configuration, allowing you to customise the deployment.
As a call to the vm_config
or vmss_config
functions, to deploy a custom VM image.
As an object of class vm_config
or vmss_config
.
The data disks for the VM can be specified as either a vector of numeric disk sizes in GB, or as a list of datadisk_config
objects, created via calls to the datadisk_config
function. Currently, AzureVM only supports creating data disks at deployment time for single VMs, not scalesets.
You can also supply your own template definition and parameters for deployment, via the template
and parameters
arguments. See AzureRMR::az_template for information how to create templates.
The AzureRMR::az_subscription
methods will by default create the VM in exclusive mode, meaning a new resource group is created solely to hold the VM or scaleset. This simplifies managing the VM considerably; in particular deleting the resource group will also automatically delete all the deployed resources.
For create_vm
, an object of class az_vm_template
representing the created VM. For create_vm_scaleset
, an object of class az_vmss_template
representing the scaleset.
az_vm_template, az_vmss_template
vm_config, vmss_config, user_config, datadisk_config
AzureRMR::az_subscription, AzureRMR::az_resource_group, Data Science Virtual Machine
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") # default Ubuntu 18.04 VM: # SSH key login, Standard_DS3_v2, publicly accessible via SSH sub$create_vm("myubuntuvm", user_config("myname", "~/.ssh/id_rsa.pub"), location="australiaeast") # Windows Server 2019, with a 500GB datadisk attached, not publicly accessible sub$create_vm("mywinvm", user_config("myname", password="Use-strong-passwords!"), size="Standard_DS4_v2", config="windows_2019", datadisks=500, ip=NULL, location="australiaeast") # Ubuntu DSVM, GPU-enabled sub$create_vm("mydsvm", user_config("myname", "~/.ssh/id_rsa.pub"), size="Standard_NC12", config="ubuntu_dsvm_ss", location="australiaeast") ## custom VM configuration: Windows 10 Pro 1903 with data disks ## this assumes you have a valid Win10 desktop license user <- user_config("myname", password="Use-strong-passwords!") image <- image_config( publisher="MicrosoftWindowsDesktop", offer="Windows-10", sku="19h1-pro" ) datadisks <- list( datadisk_config(250, type="Premium_LRS"), datadisk_config(1000, type="Standard_LRS") ) nsg <- nsg_config( list(nsg_rule_allow_rdp) ) config <- vm_config( image=image, keylogin=FALSE, datadisks=datadisks, nsg=nsg, properties=list(licenseType="Windows_Client") ) sub$create_vm("mywin10vm", user, size="Standard_DS2_v2", config=config, location="australiaeast") # default Ubuntu scaleset: # load balancer and autoscaler enabled, Standard_DS1_v2 sub$create_vm_scaleset("mydsvmss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, location="australiaeast")) # Ubuntu DSVM scaleset with public GPU-enabled instances, no load balancer or autoscaler sub$create_vm_scaleset("mydsvmss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, size="Standard_NC12", config="ubuntu_dsvm_ss", options=scaleset_options(public=TRUE), load_balancer=NULL, autoscaler=NULL, location="australiaeast") # RHEL scaleset, allow http/https access sub$create_vm_scaleset("myrhelss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, config="rhel_8_ss", nsg=nsg_config(list(nsg_rule_allow_http, nsg_rule_allow_https)), location="australiaeast") # Large Debian scaleset, using low-priority (spot) VMs # need to set the instance size to something that supports low-pri sub$create_vm_scaleset("mydebss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=50, size="Standard_DS3_v2", config="debian_9_backports_ss", options=scaleset_options(priority="spot", large_scaleset=TRUE), location="australiaeast") ## VM and scaleset in the same resource group and virtual network # first, create the resgroup rg <- sub$create_resource_group("rgname", "australiaeast") # create the master rg$create_vm("mastervm", user_config("myname", "~/.ssh/id_rsa.pub")) # get the vnet resource vnet <- rg$get_resource(type="Microsoft.Network/virtualNetworks", name="mastervm-vnet") # create the scaleset rg$create_vm_scaleset("slavess", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, vnet=vnet, nsg=NULL, load_balancer=NULL, autoscaler=NULL) ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") # default Ubuntu 18.04 VM: # SSH key login, Standard_DS3_v2, publicly accessible via SSH sub$create_vm("myubuntuvm", user_config("myname", "~/.ssh/id_rsa.pub"), location="australiaeast") # Windows Server 2019, with a 500GB datadisk attached, not publicly accessible sub$create_vm("mywinvm", user_config("myname", password="Use-strong-passwords!"), size="Standard_DS4_v2", config="windows_2019", datadisks=500, ip=NULL, location="australiaeast") # Ubuntu DSVM, GPU-enabled sub$create_vm("mydsvm", user_config("myname", "~/.ssh/id_rsa.pub"), size="Standard_NC12", config="ubuntu_dsvm_ss", location="australiaeast") ## custom VM configuration: Windows 10 Pro 1903 with data disks ## this assumes you have a valid Win10 desktop license user <- user_config("myname", password="Use-strong-passwords!") image <- image_config( publisher="MicrosoftWindowsDesktop", offer="Windows-10", sku="19h1-pro" ) datadisks <- list( datadisk_config(250, type="Premium_LRS"), datadisk_config(1000, type="Standard_LRS") ) nsg <- nsg_config( list(nsg_rule_allow_rdp) ) config <- vm_config( image=image, keylogin=FALSE, datadisks=datadisks, nsg=nsg, properties=list(licenseType="Windows_Client") ) sub$create_vm("mywin10vm", user, size="Standard_DS2_v2", config=config, location="australiaeast") # default Ubuntu scaleset: # load balancer and autoscaler enabled, Standard_DS1_v2 sub$create_vm_scaleset("mydsvmss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, location="australiaeast")) # Ubuntu DSVM scaleset with public GPU-enabled instances, no load balancer or autoscaler sub$create_vm_scaleset("mydsvmss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, size="Standard_NC12", config="ubuntu_dsvm_ss", options=scaleset_options(public=TRUE), load_balancer=NULL, autoscaler=NULL, location="australiaeast") # RHEL scaleset, allow http/https access sub$create_vm_scaleset("myrhelss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, config="rhel_8_ss", nsg=nsg_config(list(nsg_rule_allow_http, nsg_rule_allow_https)), location="australiaeast") # Large Debian scaleset, using low-priority (spot) VMs # need to set the instance size to something that supports low-pri sub$create_vm_scaleset("mydebss", user_config("myname", "~/.ssh/id_rsa.pub"), instances=50, size="Standard_DS3_v2", config="debian_9_backports_ss", options=scaleset_options(priority="spot", large_scaleset=TRUE), location="australiaeast") ## VM and scaleset in the same resource group and virtual network # first, create the resgroup rg <- sub$create_resource_group("rgname", "australiaeast") # create the master rg$create_vm("mastervm", user_config("myname", "~/.ssh/id_rsa.pub")) # get the vnet resource vnet <- rg$get_resource(type="Microsoft.Network/virtualNetworks", name="mastervm-vnet") # create the scaleset rg$create_vm_scaleset("slavess", user_config("myname", "~/.ssh/id_rsa.pub"), instances=5, vnet=vnet, nsg=NULL, load_balancer=NULL, autoscaler=NULL) ## End(Not run)
Defunct methods
get_vm_cluster(...) create_vm_cluster(...) delete_vm_cluster(...)
These methods for the az_subscription
and az_resource_group
classes are defunct in AzureVM 2.0. To work with virtual machine clusters, call the get_vm_scaleset, create_vm_scaleset and delete_vm_scaleset methods instead.
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
## R6 method for class 'az_resource_group' delete_vm(name, confirm = TRUE, free_resources = TRUE) ## R6 method for class 'az_subscription' delete_vm(name, confirm = TRUE, free_resources = TRUE, resource_group = name) ## R6 method for class 'az_resource_group' delete_vm_scaleset(name, confirm = TRUE, free_resources = TRUE) ## R6 method for class 'az_subscription' delete_vm_scaleset(name, confirm = TRUE, free_resources = TRUE, resource_group = name)
name
: The name of the VM or scaleset.
confirm
: Whether to confirm the delete.
free_resources
: If this was a deployed template, whether to free all resources created during the deployment process.
resource_group
: For the AzureRMR::az_subscription
method, the resource group containing the VM or scaleset.
For the subscription methods, deleting the VM or scaleset will also delete its resource group.
create_vm, az_vm_template, az_vm_resource, AzureRMR::az_subscription, AzureRMR::az_resource_group
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") sub$delete_vm("myvm") sub$delete_vm_scaleset("myscaleset") ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") sub$delete_vm("myvm") sub$delete_vm_scaleset("myscaleset") ## End(Not run)
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
## R6 method for class 'az_subscription' get_vm(name, resource_group = name) ## R6 method for class 'az_resource_group' get_vm(name) ## R6 method for class 'az_subscription' get_vm_scaleset(name, resource_group = name) ## R6 method for class 'az_resource_group' get_vm_scaleset(name) ## R6 method for class 'az_resource_group') get_vm_resource(name) get_vm_scaleset_resource(name)
name
: The name of the VM or scaleset.
resource_group
: For the az_subscription
methods, the resource group in which get_vm()
and get_vm_scaleset()
will look for the VM or scaleset. Defaults to the VM name.
For get_vm()
, an object representing the VM deployment. This will include other resources besides the VM itself, such as the network interface, virtual network, etc.
For get_vm_scaleset()
, an object representing the scaleset deployment. Similarly to get_vm()
, this includes other resources besides the scaleset.
For get_vm_resource()
and get_vm_scaleset_resource()
, the VM or scaleset resource itself.
az_vm_template, az_vm_resource, az_vmss_template, az_vmss_resource for the methods available for working with VMs and VM scalesets.
AzureRMR::az_subscription, AzureRMR::az_resource_group
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") sub$get_vm("myvirtualmachine") sub$get_vm_scaleset("myscaleset") rg <- sub$get_resource_group("rgname") rg$get_vm("myothervirtualmachine") rg$get_vm_scaleset("myotherscaleset") ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login()$ get_subscription("subscription_id") sub$get_vm("myvirtualmachine") sub$get_vm_scaleset("myscaleset") rg <- sub$get_resource_group("rgname") rg$get_vm("myothervirtualmachine") rg$get_vm_scaleset("myotherscaleset") ## End(Not run)
Public IP address configuration
ip_config(type = NULL, dynamic = NULL, ipv6 = FALSE, domain_name = "[parameters('vmName')]", ...)
ip_config(type = NULL, dynamic = NULL, ipv6 = FALSE, domain_name = "[parameters('vmName')]", ...)
type |
The SKU of the IP address resource: "basic" or "standard". If NULL (the default), this will be determined based on the VM's configuration. |
dynamic |
Whether the IP address should be dynamically or statically allocated. Note that the standard SKU only supports standard allocation. If NULL (the default) this will be determined based on the VM's configuration. |
ipv6 |
Whether to create an IPv6 address. The default is IPv4. |
domain_name |
The domain name label to associate with the address. |
... |
Other named arguments that will be treated as resource properties. |
create_vm, vm_config, vmss_config
ip_config() ip_config(type="basic", dynamic=TRUE) # if you don't want a domain name associated with the IP address ip_config(domain_name=NULL)
ip_config() ip_config(type="basic", dynamic=TRUE) # if you don't want a domain name associated with the IP address ip_config(domain_name=NULL)
Is an object an Azure VM
is_vm(object) is_vm_template(object) is_vm_resource(object) is_vm_scaleset(object) is_vm_scaleset_template(object) is_vm_scaleset_resource(object)
is_vm(object) is_vm_template(object) is_vm_resource(object) is_vm_scaleset(object) is_vm_scaleset_template(object) is_vm_scaleset_resource(object)
object |
an R object. |
is_vm
and is_vm_template
return TRUE for an object representing a virtual machine deployment (which will include other resources besides the VM itself).
is_vm_resource
returns TRUE for an object representing the specific VM resource.
is_vm_scaleset
and is_vm_scaleset_template
return TRUE for an object representing a VM scaleset deployment.
is_vm_scaleset_resource
returns TRUE for an object representing the specific VM scaleset resource.
create_vm, create_vm_scaleset, az_vm_template, az_vm_resource, az_vmss_template, az_vmss_resource
Load balancer configuration
lb_config(type = NULL, rules = list(), probes = list(), ...) lb_probe(name, port, interval = 5, fail_on = 2, protocol = "Tcp") lb_rule(name, frontend_port, backend_port = frontend_port, protocol = "Tcp", timeout = 5, floating_ip = FALSE, probe_name)
lb_config(type = NULL, rules = list(), probes = list(), ...) lb_probe(name, port, interval = 5, fail_on = 2, protocol = "Tcp") lb_rule(name, frontend_port, backend_port = frontend_port, protocol = "Tcp", timeout = 5, floating_ip = FALSE, probe_name)
type |
The SKU of the load balancer resource: "basic" or "standard". If NULL (the default), this will be determined based on the VM scaleset's configuration. Note that the load balancer SKU must be the same as that of its public IP address. |
rules |
A list of load balancer rules, each obtained via a call to |
probes |
A list of health checking probes, each obtained via a call to |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
port |
For |
interval |
For |
fail_on |
For |
protocol |
For |
frontend_port , backend_port
|
For |
timeout |
The timeout interval for the rule. The default is 5 minutes. |
floating_ip |
Whether to use floating IP addresses (direct server return). Only needed for specific scenarios, and when the frontend and backend ports don't match. |
probe_name |
The name of the corresponding health check probe. |
create_vm_scaleset, vmss_config, lb_rules for some predefined load balancing rules and probes
lb_config() lb_config(type="basic") lb_config( rules=list(lb_rule_ssh, lb_rule_rdp), probes=list(lb_probe_ssh, lb_probe_rdp) )
lb_config() lb_config(type="basic") lb_config( rules=list(lb_rule_ssh, lb_rule_rdp), probes=list(lb_probe_ssh, lb_probe_rdp) )
Load balancing rules
lb_rule_ssh lb_rule_http lb_rule_https lb_rule_rdp lb_rule_jupyter lb_rule_rstudio lb_rule_mssql lb_rule_mssql_browser lb_probe_ssh lb_probe_http lb_probe_https lb_probe_rdp lb_probe_jupyter lb_probe_rstudio lb_probe_mssql lb_probe_mssql_browser
lb_rule_ssh lb_rule_http lb_rule_https lb_rule_rdp lb_rule_jupyter lb_rule_rstudio lb_rule_mssql lb_rule_mssql_browser lb_probe_ssh lb_probe_http lb_probe_https lb_probe_rdp lb_probe_jupyter lb_probe_rstudio lb_probe_mssql lb_probe_mssql_browser
Objects of class lb_rule
and lb_probe
.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_rule
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
An object of class lb_probe
of length 2.
Some predefined load balancing objects, for commonly used ports. Each load balancing rule comes with its own health probe.
HTTP: TCP port 80
HTTPS: TCP port 443
JupyterHub: TCP port 8000
RDP: TCP port 3389
RStudio Server: TCP port 8787
SSH: TCP port 22
SQL Server: TCP port 1433
SQL Server browser service: TCP port 1434
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
## R6 method for class 'az_subscription' list_vm_sizes(location, name_only = FALSE) ## R6 method for class 'az_resource_group' list_vm_sizes(name_only = FALSE)
location
: For the subscription class method, the location/region for which to obtain available VM sizes.
name_only
: Whether to return only a vector of names, or all information on each VM size.
If name_only
is TRUE, a character vector of names, suitable for passing to create_vm
. If FALSE, a data frame containing the following information for each VM size: the name, number of cores, OS disk size, resource disk size, memory, and maximum data disks.
## Not run: sub <- AzureRMR::get_azure_login$ get_subscription("subscription_id") sub$list_vm_sizes("australiaeast") # same output as above rg <- sub$create_resource_group("rgname", location="australiaeast") rg$list_vm_sizes() ## End(Not run)
## Not run: sub <- AzureRMR::get_azure_login$ get_subscription("subscription_id") sub$list_vm_sizes("australiaeast") # same output as above rg <- sub$create_resource_group("rgname", location="australiaeast") rg$list_vm_sizes() ## End(Not run)
Network interface configuration
nic_config(nic_ip = list(nic_ip_config()), ...) nic_ip_config(name = "ipconfig", private_alloc = "dynamic", subnet = "[variables('subnetId')]", public_address = "[variables('ipId')]", ...)
nic_config(nic_ip = list(nic_ip_config()), ...) nic_ip_config(name = "ipconfig", private_alloc = "dynamic", subnet = "[variables('subnetId')]", public_address = "[variables('ipId')]", ...)
nic_ip |
For |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
private_alloc |
For |
subnet |
For |
public_address |
For |
nic_config()
nic_config()
Network security group configuration
nsg_config(rules = list(), ...) nsg_rule(name, dest_port = "*", dest_addr = "*", dest_asgs = NULL, source_port = "*", source_addr = "*", source_asgs = NULL, access = "allow", direction = "inbound", protocol = "Tcp", priority = NULL)
nsg_config(rules = list(), ...) nsg_rule(name, dest_port = "*", dest_addr = "*", dest_asgs = NULL, source_port = "*", source_addr = "*", source_asgs = NULL, access = "allow", direction = "inbound", protocol = "Tcp", priority = NULL)
rules |
for |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
dest_port , dest_addr , dest_asgs
|
For |
source_port , source_addr , source_asgs
|
For |
access |
For |
direction |
For |
protocol |
For |
priority |
For |
create_vm, vm_config, vmss_config, nsg_rules for some predefined security rules
nsg_config() nsg_config(list(nsg_rule_allow_ssh)) # for Linux nsg_config(list(nsg_rule_allow_rdp)) # for Windows nsg_config(list(nsg_rule_allow_http, nsg_rule_allow_https)) # a custom rule nsg_config(list( nsg_rule( name="whitelist", source_addr="114.198.100.0/24", access="allow", protocol="*" ) ))
nsg_config() nsg_config(list(nsg_rule_allow_ssh)) # for Linux nsg_config(list(nsg_rule_allow_rdp)) # for Windows nsg_config(list(nsg_rule_allow_http, nsg_rule_allow_https)) # a custom rule nsg_config(list( nsg_rule( name="whitelist", source_addr="114.198.100.0/24", access="allow", protocol="*" ) ))
Network security rules
nsg_rule_allow_ssh nsg_rule_allow_http nsg_rule_allow_https nsg_rule_allow_rdp nsg_rule_allow_jupyter nsg_rule_allow_rstudio nsg_rule_allow_mssql nsg_rule_allow_mssql_browser
nsg_rule_allow_ssh nsg_rule_allow_http nsg_rule_allow_https nsg_rule_allow_rdp nsg_rule_allow_jupyter nsg_rule_allow_rstudio nsg_rule_allow_mssql nsg_rule_allow_mssql_browser
Objects of class nsg_rule
.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
An object of class nsg_rule
of length 2.
Some predefined network security rule objects, to unblock commonly used ports.
HTTP: TCP port 80
HTTPS: TCP port 443
JupyterHub: TCP port 8000
RDP: TCP port 3389
RStudio Server: TCP port 8787
SSH: TCP port 22
SQL Server: TCP port 1433
SQL Server browser service: TCP port 1434
Virtual machine scaleset options
scaleset_options(keylogin = TRUE, managed_identity = TRUE, public = FALSE, priority = c("regular", "spot"), delete_on_evict = FALSE, network_accel = FALSE, large_scaleset = FALSE, overprovision = TRUE, upgrade_policy = list(mode = "manual"), os_disk_type = c("Premium_LRS", "StandardSSD_LRS", "Standard_LRS"))
scaleset_options(keylogin = TRUE, managed_identity = TRUE, public = FALSE, priority = c("regular", "spot"), delete_on_evict = FALSE, network_accel = FALSE, large_scaleset = FALSE, overprovision = TRUE, upgrade_policy = list(mode = "manual"), os_disk_type = c("Premium_LRS", "StandardSSD_LRS", "Standard_LRS"))
keylogin |
Whether to use an SSH public key to login (TRUE) or a password (FALSE). Note that Windows does not support SSH key logins. |
managed_identity |
Whether to provide a managed system identity for the VM. |
public |
Whether the instances (nodes) of the scaleset should be visible from the public internet. |
priority |
The priority of the VM scaleset, either |
delete_on_evict |
If spot-priority VMs are being used, whether evicting (shutting down) a VM should delete it, as opposed to just deallocating it. |
network_accel |
Whether to enable accelerated networking. This option is only available for certain VM sizes. |
large_scaleset |
Whether to enable scaleset sizes > 100 instances. |
overprovision |
Whether to overprovision the scaleset on creation. |
upgrade_policy |
A list, giving the VM upgrade policy for the scaleset. |
os_disk_type |
The type of primary disk for the VM. Change this to "StandardSSD_LRS" or "Standard_LRS" if the VM size doesn't support premium storage. |
Resource configuration functions for a virtual machine deployment
user_config(username, sshkey = NULL, password = NULL) datadisk_config(size, name = "datadisk", create = "empty", type = c("StandardSSD_LRS", "Premium_LRS", "Standard_LRS", "UltraSSD_LRS"), write_accelerator = FALSE) image_config(publisher = NULL, offer = NULL, sku = NULL, version = "latest", id = NULL)
user_config(username, sshkey = NULL, password = NULL) datadisk_config(size, name = "datadisk", create = "empty", type = c("StandardSSD_LRS", "Premium_LRS", "Standard_LRS", "UltraSSD_LRS"), write_accelerator = FALSE) image_config(publisher = NULL, offer = NULL, sku = NULL, version = "latest", id = NULL)
username |
For |
sshkey |
For |
password |
For |
size |
For |
name |
For |
create |
For |
type |
For |
write_accelerator |
For |
publisher , offer , sku , version
|
For |
id |
For |
## Not run: ## user_config: SSH public key resource in Azure # create the resource keyres <- rg$create_resource(type="Microsoft.Compute/sshPublicKeys", name="mysshkey") # generate the public and private keys keys <- keyres$do_operation("generateKeyPair", http_verb="POST") keyres$sync_fields() # save the private key (IMPORTANT) writeBin(keys$privateKey, "mysshkey.pem") # create a new VM using the public key resource for authentication # you can then login to the VM with ssh -i mysshkey.pem <username@vmaddress> rg$create_vm("myvm", user_config("username", sshkey=keyres), config="ubuntu_20.04") ## user_config: SSH public key as a file rg$create_vm("myvm", user_config("username", sshkey="mysshkey.pub"), config="ubuntu_20.04") ## user_config: SSH public key as a string (read from a file) pubkey <- readLines("mysshkey.pub") rg$create_vm("myvm", user_config("username", sshkey=pubkey), config="ubuntu_20.04") ## End(Not run)
## Not run: ## user_config: SSH public key resource in Azure # create the resource keyres <- rg$create_resource(type="Microsoft.Compute/sshPublicKeys", name="mysshkey") # generate the public and private keys keys <- keyres$do_operation("generateKeyPair", http_verb="POST") keyres$sync_fields() # save the private key (IMPORTANT) writeBin(keys$privateKey, "mysshkey.pem") # create a new VM using the public key resource for authentication # you can then login to the VM with ssh -i mysshkey.pem <username@vmaddress> rg$create_vm("myvm", user_config("username", sshkey=keyres), config="ubuntu_20.04") ## user_config: SSH public key as a file rg$create_vm("myvm", user_config("username", sshkey="mysshkey.pub"), config="ubuntu_20.04") ## user_config: SSH public key as a string (read from a file) pubkey <- readLines("mysshkey.pub") rg$create_vm("myvm", user_config("username", sshkey=pubkey), config="ubuntu_20.04") ## End(Not run)
Virtual network configuration
vnet_config(address_space = "10.0.0.0/16", subnets = list(subnet_config()), ...) subnet_config(name = "subnet", addresses = "10.0.0.0/16", nsg = "[variables('nsgId')]", ...)
vnet_config(address_space = "10.0.0.0/16", subnets = list(subnet_config()), ...) subnet_config(name = "subnet", addresses = "10.0.0.0/16", nsg = "[variables('nsgId')]", ...)
address_space |
For |
subnets |
For |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
addresses |
For |
nsg |
The network security group associated with this subnet. Defaults to the NSG created as part of this VM deployment. |
create_vm, vm_config, vmss_config
vnet_config() vnet_config(address_space="10.1.0.0/16") vnet_config(subnets=list( subnet_config("subnet", "10.0.0.0/24") ))
vnet_config() vnet_config(address_space="10.1.0.0/16") vnet_config(subnets=list( subnet_config("subnet", "10.0.0.0/24") ))