Title: | Virtual Machines in 'Azure' |
Version: | 2.2.2 |
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. |
URL: | https://github.com/Azure/AzureVM https://github.com/Azure/AzureR |
BugReports: | https://github.com/Azure/AzureVM/issues |
License: | MIT + file LICENSE |
VignetteBuilder: | knitr |
Depends: | R (≥ 3.3) |
Imports: | R6 (≥ 2.4.1), AzureRMR (≥ 2.3.0), jsonlite |
Suggests: | knitr, rmarkdown, testthat, parallel, AzureKeyVault, AzureVMmetadata |
RoxygenNote: | 7.1.1 |
NeedsCompilation: | no |
Packaged: | 2020-10-14 14:38:47 UTC; hongo |
Author: | Hong Ooi [aut, cre], Microsoft [cph] |
Maintainer: | Hong Ooi <hongooi73@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2020-10-14 23:50:07 UTC |
Autoscaler configuration
Description
Autoscaler configuration
Usage
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")
Arguments
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 |
See Also
create_vm_scaleset, vmss_config
Examples
autoscaler_config()
autoscaler_config(list(
autoscaler_profile(minsize=2, maxsize=50, scale_out=0.9, scale_in=0.1)
))
Virtual machine resource class
Description
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.
Format
An R6 object of class az_vm_resource
, inheriting from AzureRMR::az_resource
.
Methods
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. Thedisk
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 thedo_operation
method of the AzureRMR::az_resource class for more details.
See Also
AzureRMR::az_resource, get_vm_resource, az_vm_template
Virtual machine template class
Description
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.
Format
An R6 object of class az_vm_template
, inheriting from AzureRMR::az_template
.
Details
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.
Fields
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.
Methods
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. Thedisk
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 thedo_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.
See Also
AzureRMR::az_template, create_vm, get_vm, delete_vm
Examples
## 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)
Virtual machine scaleset resource class
Description
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.
Format
An R6 object of class az_vmss_resource
, inheriting from AzureRMR::az_resource
.
Details
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.
Methods
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. Ifdatadisks
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 thedo_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).
Instance operations
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.
See Also
AzureRMR::az_resource, get_vm_scaleset_resource, az_vmss_template, AzureRMR::init_pool
Virtual machine scaleset (cluster) template class
Description
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.
Format
An R6 object of class az_vmss_template
, inheriting from AzureRMR::az_template
.
Details
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.
Fields
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.
Methods
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. Ifdatadisks
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 thedo_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.
Instance operations
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.
See Also
AzureRMR::az_template, create_vm_scaleset, get_vm_scaleset, delete_vm_scaleset, AzureRMR::init_pool
Examples
## 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
Description
Build template definition and parameters
Usage
## 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, ...)
Arguments
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 |
Details
These are methods for the generics defined in the AzureRMR package.
Value
Objects of class json
, which are JSON character strings representing the deployment template and its parameters.
See Also
create_vm, vm_config, vmss_config
Examples
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
Description
VM configuration functions
Usage
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(), ...)
Arguments
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. |
Details
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".
Value
An object of S3 class vm_config
, that can be used by the create_vm
method.
See Also
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
Examples
# 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
Description
Virtual machine scaleset configuration functions
Usage
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(), ...)
Arguments
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. |
Details
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".
Value
An object of S3 class vmss_config
, that can be used by the create_vm_scaleset
method.
See Also
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
Examples
# 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)
Create a new virtual machine or scaleset of virtual machines
Description
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
Usage
## 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)
Arguments
-
name
: The name of the VM or scaleset. -
location
: For the subscription methods, the location for the VM or scaleset. Use thelist_locations()
method of theAzureRMR::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 classuser_config
, obtained by a call to theuser_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
: Forcreate_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
: Forcreate_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.
Details
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
orvmss_config
functions, to deploy a custom VM image.As an object of class
vm_config
orvmss_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.
Value
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.
See Also
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
Examples
## 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
Description
Defunct methods
Usage
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.
Delete virtual machine
Description
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
Usage
## 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)
Arguments
-
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 theAzureRMR::az_subscription
method, the resource group containing the VM or scaleset.
Details
For the subscription methods, deleting the VM or scaleset will also delete its resource group.
See Also
create_vm, az_vm_template, az_vm_resource, AzureRMR::az_subscription, AzureRMR::az_resource_group
Examples
## Not run:
sub <- AzureRMR::get_azure_login()$
get_subscription("subscription_id")
sub$delete_vm("myvm")
sub$delete_vm_scaleset("myscaleset")
## End(Not run)
Get existing virtual machine(s)
Description
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
Usage
## 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)
Arguments
-
name
: The name of the VM or scaleset. -
resource_group
: For theaz_subscription
methods, the resource group in whichget_vm()
andget_vm_scaleset()
will look for the VM or scaleset. Defaults to the VM name.
Value
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.
See Also
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
Examples
## 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
Description
Public IP address configuration
Usage
ip_config(type = NULL, dynamic = NULL, ipv6 = FALSE,
domain_name = "[parameters('vmName')]", ...)
Arguments
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. |
See Also
create_vm, vm_config, vmss_config
Examples
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
Description
Is an object an Azure VM
Usage
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)
Arguments
object |
an R object. |
Value
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.
See Also
create_vm, create_vm_scaleset, az_vm_template, az_vm_resource, az_vmss_template, az_vmss_resource
Load balancer configuration
Description
Load balancer configuration
Usage
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)
Arguments
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. |
See Also
create_vm_scaleset, vmss_config, lb_rules for some predefined load balancing rules and probes
Examples
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
Description
Load balancing rules
Usage
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
Format
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.
Details
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
See Also
List available VM sizes
Description
Method for the AzureRMR::az_subscription and AzureRMR::az_resource_group classes.
Usage
## 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)
Arguments
-
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.
Value
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.
See Also
Examples
## 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
Description
Network interface configuration
Usage
nic_config(nic_ip = list(nic_ip_config()), ...)
nic_ip_config(name = "ipconfig", private_alloc = "dynamic",
subnet = "[variables('subnetId')]",
public_address = "[variables('ipId')]", ...)
Arguments
nic_ip |
For |
... |
Other named arguments that will be treated as resource properties. |
name |
For |
private_alloc |
For |
subnet |
For |
public_address |
For |
See Also
Examples
nic_config()
Network security group configuration
Description
Network security group configuration
Usage
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)
Arguments
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 |
See Also
create_vm, vm_config, vmss_config, nsg_rules for some predefined security rules
Examples
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
Description
Network security rules
Usage
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
Format
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.
Details
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
See Also
Objects exported from other packages
Description
These objects are imported from other packages. Follow the links below to see their documentation.
Virtual machine scaleset options
Description
Virtual machine scaleset options
Usage
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"))
Arguments
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
Description
Resource configuration functions for a virtual machine deployment
Usage
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)
Arguments
username |
For |
sshkey |
For |
password |
For |
size |
For |
name |
For |
create |
For |
type |
For |
write_accelerator |
For |
publisher , offer , sku , version |
For |
id |
For |
Examples
## 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
Description
Virtual network configuration
Usage
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')]", ...)
Arguments
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. |
See Also
create_vm, vm_config, vmss_config
Examples
vnet_config()
vnet_config(address_space="10.1.0.0/16")
vnet_config(subnets=list(
subnet_config("subnet", "10.0.0.0/24")
))