New in version 2016.11.0.
Changed in version 2019.2.0.
The Azure ARM cloud module is used to control access to Microsoft Azure Resource Manager
Warning
This cloud provider will be removed from Salt in version 3007 in favor of the saltext.azurerm Salt Extension
azure >= 2.0.0rc6
azure-common >= 1.1.4
azure-mgmt >= 0.30.0rc6
azure-mgmt-compute >= 0.33.0
azure-mgmt-network >= 0.30.0rc6
azure-mgmt-resource >= 0.30.0
azure-mgmt-storage >= 0.30.0rc6
azure-mgmt-web >= 0.30.0rc6
azure-storage >= 0.32.0
msrestazure >= 0.4.21
Required provider parameters:
subscription_id
username
password
subscription_id
tenant
client_id
secret
subscription_id
Optional provider parameters:
AZURE_PUBLIC_CLOUD
(default)
AZURE_CHINA_CLOUD
AZURE_US_GOV_CLOUD
AZURE_GERMAN_CLOUD
HTTP base URL for a custom endpoint, such as Azure Stack. The /metadata/endpoints
path will be added to the URL.
Azure Resource Manager uses a separate VirtualMachineExtension object to pass userdata scripts to the virtual
machine. Arbitrary shell commands can be passed via the userdata
parameter, or via a file local to the Salt
Cloud system using the userdata_file
parameter. Note that the local file is not treated as a script by the
extension, so "one-liners" probably work best. If greater functionality is desired, a web-hosted script file can
be specified via userdata_file: https://raw.githubusercontent.com/account/repo/master/azure-script.py
, which
will be executed on the system after VM creation. For Windows systems, script files ending in .ps1
will be
executed with powershell.exe
. The userdata
parameter takes precedence over the userdata_file
parameter
when creating the custom script extension.
This parameter, which holds the local path to the Salt Minion installer package, is used to determine if the virtual machine type will be "Windows". Only set this parameter on profiles which install Windows operating systems.
Example /etc/salt/cloud.providers
or
/etc/salt/cloud.providers.d/azure.conf
configuration:
my-azure-config with username and password:
driver: azurearm
subscription_id: 3287abc8-f98a-c678-3bde-326766fd3617
username: larry
password: 123pass
Or my-azure-config with service principal:
driver: azurearm
subscription_id: 3287abc8-f98a-c678-3bde-326766fd3617
tenant: ABCDEFAB-1234-ABCD-1234-ABCDEFABCDEF
client_id: ABCDEFAB-1234-ABCD-1234-ABCDEFABCDEF
secret: XXXXXXXXXXXXXXXXXXXXXXXX
cloud_environment: AZURE_US_GOV_CLOUD
The Service Principal can be created with the new Azure CLI (https://github.com/Azure/azure-cli) with:
az ad sp create-for-rbac -n "http://<yourappname>" --role <role> --scopes <scope>
For example, this creates a service principal with 'owner' role for the whole subscription:
az ad sp create-for-rbac -n "http://mysaltapp" --role owner --scopes /subscriptions/3287abc8-f98a-c678-3bde-326766fd3617
*Note: review the details of Service Principals. Owner role is more than you normally need, and you can restrict
scope to a resource group or individual resources.
salt.cloud.clouds.azurearm.
avail_images
(call=None)¶Return a dict of all available images on the provider
salt.cloud.clouds.azurearm.
avail_locations
(call=None)¶Return a dict of all available regions.
salt.cloud.clouds.azurearm.
avail_sizes
(call=None)¶Return a list of sizes available from the provider
salt.cloud.clouds.azurearm.
create
(vm_)¶Create a single VM from a data dict.
salt.cloud.clouds.azurearm.
create_network_interface
(call=None, kwargs=None)¶Create a network interface.
salt.cloud.clouds.azurearm.
create_or_update_vmextension
(call=None, kwargs=None)¶New in version 2019.2.0.
Create or update a VM extension object "inside" of a VM object.
extension_name: myvmextension
virtual_machine_name: myvm
settings: {"commandToExecute": "hostname"}
resource_group: < inferred from cloud configs >
location: < inferred from cloud configs >
publisher: < default: Microsoft.Azure.Extensions >
virtual_machine_extension_type: < default: CustomScript >
type_handler_version: < default: 2.0 >
auto_upgrade_minor_version: < default: True >
protected_settings: < default: None >
salt.cloud.clouds.azurearm.
delete_blob
(call=None, kwargs=None)¶Delete a blob from a container.
salt.cloud.clouds.azurearm.
delete_interface
(call=None, kwargs=None)¶Delete a network interface.
salt.cloud.clouds.azurearm.
delete_managed_disk
(call=None, kwargs=None)¶Delete a managed disk from a resource group.
salt.cloud.clouds.azurearm.
destroy
(name, call=None, kwargs=None)¶Destroy a VM.
CLI Examples:
salt-cloud -d myminion
salt-cloud -a destroy myminion service_name=myservice
salt.cloud.clouds.azurearm.
get_api_versions
(call=None, kwargs=None)¶Get a resource type api versions
salt.cloud.clouds.azurearm.
get_configured_provider
()¶Return the first configured provider instance.
salt.cloud.clouds.azurearm.
get_conn
(client_type)¶Return a connection object for a client type.
salt.cloud.clouds.azurearm.
get_dependencies
()¶Warn if dependencies aren't met.
salt.cloud.clouds.azurearm.
get_location
(call=None, kwargs=None)¶Return the location that is configured for this provider
salt.cloud.clouds.azurearm.
get_resource_by_id
(resource_id, api_version, extract_value=None)¶Get an AzureARM resource by id
salt.cloud.clouds.azurearm.
list_blobs
(call=None, kwargs=None)¶List blobs.
salt.cloud.clouds.azurearm.
list_nodes
(call=None)¶List VMs on this Azure account
salt.cloud.clouds.azurearm.
list_nodes_full
(call=None)¶List all VMs on the subscription with full information
salt.cloud.clouds.azurearm.
list_resource_groups
(call=None)¶List resource groups associated with the subscription
salt.cloud.clouds.azurearm.
list_storage_accounts
(call=None)¶List storage accounts within the subscription.
salt.cloud.clouds.azurearm.
list_subnets
(call=None, kwargs=None)¶List subnets in a virtual network.
salt.cloud.clouds.azurearm.
list_virtual_networks
(call=None, kwargs=None)¶List virtual networks.
salt.cloud.clouds.azurearm.
request_instance
(vm_, kwargs=None)¶Request a VM from Azure.
salt.cloud.clouds.azurearm.
show_instance
(name, call=None)¶Show the details from AzureARM concerning an instance
salt.cloud.clouds.azurearm.
start
(name, call=None)¶New in version 2019.2.0.
Start a VM
CLI Examples:
salt-cloud -a start myminion
salt.cloud.clouds.azurearm.
stop
(name, call=None)¶New in version 2019.2.0.
Stop (deallocate) a VM
CLI Examples:
salt-cloud -a stop myminion