centos_7.5 {AzureVM} | R Documentation |
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)