azure.azcollection.azure_rm_subscriptiondeployment module – Manage Azure Resource Manager template deployments at subscription scope

Note

This module is part of the azure.azcollection collection (version 4.2.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install azure.azcollection. You need further requirements to be able to use this module, see Requirements for details.

To use it in a playbook, specify: azure.azcollection.azure_rm_subscriptiondeployment.

New in azure.azcollection 4.2.0

Synopsis

  • Create, update and delete an Azure Resource Manager (ARM) template deployment at subscription scope.

  • Use azure.azcollection.azure_rm_deployment for template deployments scoped to a resource group.

  • Subscription-scope deployments always use the Incremental deployment mode.

  • Deleting a deployment removes only the deployment record. Resources created by the template are not deleted.

  • The module waits for the deployment to finish. Use the Ansible async keyword to run long deployments in the background.

Requirements

The below requirements are needed on the host that executes this module.

  • python >= 2.7

  • The host that executes this module must have the azure.azcollection collection installed via galaxy

  • All python packages listed in collection’s requirements.txt must be installed via pip on the host that executes modules from azure.azcollection

  • Full installation instructions may be found https://galaxy.ansible.com/azure/azcollection

Parameters

Parameter

Comments

ad_user

string

Active Directory username. Use when authenticating with an Active Directory user rather than service principal.

adfs_authority_url

string

added in azure.azcollection 0.0.1

Azure AD authority url. Use when authenticating with Username/password, and has your own ADFS authority.

api_profile

string

added in azure.azcollection 0.0.1

Selects an API profile to use when communicating with Azure services. Default value of latest is appropriate for public clouds; future values will allow use with Azure Stack.

Default: "latest"

append_tags

boolean

Use to control if tags field is canonical or just appends to existing tags.

When canonical, any tags not found in the tags parameter will be removed from the object’s metadata.

Choices:

  • false

  • true ← (default)

auth_source

string

added in azure.azcollection 0.0.1

Controls the source of the credentials to use for authentication.

Can also be set via the ANSIBLE_AZURE_AUTH_SOURCE environment variable.

When set to auto (the default) the precedence is module parameters -> env -> credential_file -> cli.

When set to env, the credentials will be read from the environment variables.

When set to credential_file, it will read the profile from ~/.azure/credentials.

When set to cli, the credentials will be sources from the Azure CLI profile. subscription_id or the environment variable AZURE_SUBSCRIPTION_ID can be used to identify the subscription ID if more than one is present otherwise the default az cli subscription is used.

When set to msi, the host machine must be an azure resource with an enabled MSI extension. subscription_id or the environment variable AZURE_SUBSCRIPTION_ID can be used to identify the subscription ID if the resource is granted access to more than one subscription, otherwise the first subscription is chosen.

The msi was added in Ansible 2.6.

Choices:

  • "auto" ← (default)

  • "cli"

  • "credential_file"

  • "env"

  • "msi"

cert_validation_mode

string

added in azure.azcollection 0.0.1

Controls the certificate validation behavior for Azure endpoints. By default, all modules will validate the server certificate, but when an HTTPS proxy is in use, or against Azure Stack, it may be necessary to disable this behavior by passing ignore. Can also be set via credential file profile or the AZURE_CERT_VALIDATION environment variable.

Choices:

  • "ignore"

  • "validate"

client_id

string

Azure client ID. Use when authenticating with a Service Principal or Managed Identity (msi).

Can also be set via the AZURE_CLIENT_ID environment variable.

cloud_environment

string

added in azure.azcollection 0.0.1

For cloud environments other than the US public cloud, the environment name (as defined by Azure Python SDK, eg, AzureChinaCloud, AzureUSGovernment), or a metadata discovery endpoint URL (required for Azure Stack). Can also be set via credential file profile or the AZURE_CLOUD_ENVIRONMENT environment variable.

Default: "AzureCloud"

debug_setting

dictionary

The debug setting of the deployment.

If not set, the existing debug setting of the deployment is kept when it is updated.

detail_level

string

The type of information to log for debugging.

Permitted values are none, requestContent, responseContent, or requestContent,responseContent.

Azure defaults to none when not set. Use none to remove an existing debug setting.

Logging request or response content may expose sensitive data retrieved through the deployment operations.

disable_instance_discovery

boolean

added in azure.azcollection 2.3.0

Determines whether or not instance discovery is performed when attempting to authenticate. Setting this to true will completely disable both instance discovery and authority validation. This functionality is intended for use in scenarios where the metadata endpoint cannot be reached such as in private clouds or Azure Stack. The process of instance discovery entails retrieving authority metadata from https://login.microsoft.com/ to validate the authority. By setting this to **True**, the validation of the authority is disabled. As a result, it is crucial to ensure that the configured authority host is valid and trustworthy.

Set via credential file profile or the AZURE_DISABLE_INSTANCE_DISCOVERY environment variable.

Choices:

  • false ← (default)

  • true

expression_evaluation_options

dictionary

Specifies whether template expressions are evaluated within the scope of the parent template or nested template.

Only applicable to nested templates. Azure defaults to the outer scope when not set.

Not returned by Azure, so it cannot be kept from the existing deployment. Set it on every run that relies on it.

Changing only this option does not trigger a redeployment.

scope

string

The scope used to evaluate parameters, variables and functions in a nested template.

Choices:

  • "NotSpecified"

  • "Outer"

  • "Inner"

location

string

The location to store the deployment data.

Required when state=present.

The location of an existing deployment cannot be changed.

log_mode

string

Parent argument.

log_path

string

Parent argument.

name

aliases: deployment_name

string / required

The name of the deployment.

oidc_token

string

added in azure.azcollection 3.17.0

Direct OpenID Connect (OIDC) token (JWT) used for workload identity authentication.

This token is exchanged with Azure AD using OIDC federated identity.

Useful in CI systems (for example GitHub Actions, Azure DevOps) where an OIDC token is provided directly by the platform.

Can also be set via the AZURE_FEDERATED_TOKEN environment variable.

oidc_token_file_path

path

added in azure.azcollection 3.17.0

Path to a file containing an OpenID Connect (OIDC) token (JWT) used for workload identity authentication.

The file must contain only raw token.

This method is commonly used in platforms that materialize OIDC tokens as files

Can also be set via the AZURE_FEDERATED_TOKEN_FILE environment variable.

on_error_deployment

dictionary

The deployment to run when this deployment fails.

If not set, the existing on error behavior of the deployment is kept when it is updated.

Set to an empty dictionary to remove an existing on error behavior.

deployment_name

string

The deployment to use when type=SpecificDeployment.

type

string

The deployment on error behavior.

Choices:

  • "LastSuccessful"

  • "SpecificDeployment"

parameters

dictionary

The deployment parameters, as a dictionary of parameter name to parameter definition. A JSON string is also accepted.

Each parameter definition is a dictionary with either a value key, or a reference key that points to a Key Vault secret.

A reference requires keyVault.id and secretName, and optionally accepts secretVersion.

Parameters of type securestring or secureobject and Key Vault references are not compared when deciding whether to redeploy, because Azure does not return their values.

Only parameters set in parameters are compared. Removing a parameter so that the template default applies does not trigger a redeployment.

Values are visible in task output and logs. Pass secret values in secure_parameters or as Key Vault references instead.

Mutually exclusive with parameters_link.

dictionary

Reference to a parameters file.

Mutually exclusive with parameters.

string

If set, must match the contentVersion of the parameters file.

string / required

The URI of the parameters file.

password

string

Active Directory user password. Use when authenticating with an Active Directory user rather than service principal.

profile

string

Security profile found in ~/.azure/credentials file.

secret

string

Azure client secret. Use when authenticating with a Service Principal.

secure_parameters

dictionary

Deployment parameters that hold secret values, in the same format as parameters.

Merged with parameters when deploying. Values are hidden from task output and logs.

Not compared when deciding whether to redeploy for parameters of type securestring or secureobject, because Azure does not return their values. Change another option or the deployment name to apply a new secret value.

A parameter name cannot be set in both parameters and secure_parameters.

Mutually exclusive with parameters_link.

state

string

Assert the state of the deployment. Use present to create or update and absent to delete.

Choices:

  • "present" ← (default)

  • "absent"

subscription_id

string

Your Azure subscription Id.

tags

dictionary

Dictionary of string:string pairs to assign as metadata to the object.

Metadata tags on the object will be updated with any provided values.

To remove tags set append_tags option to false.

Currently, Azure DNS zones and Traffic Manager services also don’t allow the use of spaces in the tag.

Azure Front Door doesn’t support the use of

Azure Automation and Azure CDN only support 15 tags on resources.

template

dictionary

The template content, as a dictionary. A JSON string is also accepted.

Mutually exclusive with template_link.

One of template or template_link is required when state=present.

dictionary

Reference to the template to deploy.

Mutually exclusive with template.

string

If set, must match the contentVersion of the template.

string

The resource ID of a template spec version to deploy.

Mutually exclusive with uri. One of uri or id is required.

string

The query string, for example a SAS token, to use with uri.

Not compared when deciding whether to redeploy.

string

Deploys a linked template at a location relative to the parent template.

If the parent template was linked with a template spec, this references an artifact in the template spec.

If the parent template was linked with a URI, the child deployment combines the parent URI and relative_path.

string

The URI of the template to deploy.

Mutually exclusive with id. One of uri or id is required.

tenant

string

Azure tenant ID. Use when authenticating with a Service Principal.

thumbprint

string

added in azure.azcollection 1.14.0

The thumbprint of the private key specified in x509_certificate_path.

Use when authenticating with a Service Principal.

Required if x509_certificate_path is defined.

x509_certificate_path

path

added in azure.azcollection 1.14.0

Path to the X509 certificate used to create the service principal in PEM format.

The certificate must be appended to the private key.

Use when authenticating with a Service Principal.

Notes

Note

  • For authentication with Azure you can pass parameters, set environment variables, use a profile stored in ~/.azure/credentials, or log in before you run your tasks or playbook with az login.

  • Authentication is also possible using a service principal or Active Directory user.

  • To authenticate via OIDC, pass client_id, tenant and oidc_token or oidc_token_file_path, or set environment variables AZURE_CLIENT_ID, AZURE_TENANT and AZURE_FEDERATED_TOKEN or AZURE_FEDERATED_TOKEN_FILE.

  • To authenticate via service principal, pass subscription_id, client_id, secret and tenant or set environment variables AZURE_SUBSCRIPTION_ID, AZURE_CLIENT_ID, AZURE_SECRET and AZURE_TENANT.

  • To authenticate via Active Directory user, pass ad_user and password, or set AZURE_AD_USER and AZURE_PASSWORD in the environment.

  • Alternatively, credentials can be stored in ~/.azure/credentials. This is an ini file containing a [default] section and the following keys: subscription_id, client_id, secret and tenant or subscription_id, ad_user and password. It is also possible to add additional profiles. Specify the profile by passing profile or setting AZURE_PROFILE in the environment.

See Also

See also

Sign in with Azure CLI

How to authenticate using the az login command.

Examples

- name: Deploy a subscription-scope template that creates a resource group
  azure.azcollection.azure_rm_subscriptiondeployment:
    name: create-rg-deployment
    location: eastus
    template:
      $schema: "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#"
      contentVersion: "1.0.0.0"
      parameters:
        rgName:
          type: string
      resources:
        - type: Microsoft.Resources/resourceGroups
          apiVersion: "2022-09-01"
          name: "[parameters('rgName')]"
          location: eastus
    parameters:
      rgName:
        value: myResourceGroup
    tags:
      environment: test

- name: Deploy a linked template with a Key Vault secret reference parameter
  azure.azcollection.azure_rm_subscriptiondeployment:
    name: linked-template-deployment
    location: eastus
    template_link:
      uri: https://example.com/templates/azuredeploy.json
    parameters:
      adminPassword:
        reference:
          keyVault:
            id: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myVault
          secretName: adminPassword

- name: Delete a subscription-scope deployment
  azure.azcollection.azure_rm_subscriptiondeployment:
    name: create-rg-deployment
    state: absent

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

state

complex

The current state of the deployment.

Returned: when state=present and the deployment exists

id

string

The resource ID of the deployment.

Returned: always

Sample: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Resources/deployments/create-rg-deployment"

location

string

The location of the deployment data.

Returned: always

Sample: "eastus"

name

string

The name of the deployment.

Returned: always

Sample: "create-rg-deployment"

properties

complex

The deployment properties.

Returned: always

correlation_id

string

The correlation ID of the deployment.

Returned: always

Sample: "2fd1a0b2-5c7e-4f19-9a6c-0a3c7e9d1b1e"

debug_setting

dictionary

The debug setting of the deployment.

Returned: when set

Sample: {"detail_level": "RequestContent, ResponseContent"}

dependencies

list / elements=string

The list of deployment dependencies.

Returned: always

Sample: []

duration

string

The duration of the template deployment.

Returned: always

Sample: "PT12.345S"

error

dictionary

The deployment error.

Returned: when the deployment failed

Sample: {"code": "DeploymentFailed", "message": "At least one resource deployment operation failed."}

mode

string

The deployment mode.

Returned: always

Sample: "Incremental"

on_error_deployment

dictionary

The deployment on error behavior.

Returned: when set

Sample: {"deployment_name": "previous-deployment", "provisioning_state": "Succeeded", "type": "LastSuccessful"}

output_resources

list / elements=string

The list of resources created by the deployment.

Returned: always

Sample: [{"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup"}]

outputs

dictionary

The outputs of the deployment.

Returned: when the template defines outputs

Sample: {"rgId": {"type": "String", "value": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup"}}

parameters

dictionary

The deployment parameters, including their types. Values of secure parameters are not returned.

Returned: always

Sample: {"rgName": {"type": "String", "value": "myResourceGroup"}}

dictionary

The reference to the parameters file.

Returned: when the deployment uses a parameters file

Sample: {"uri": "https://example.com/templates/azuredeploy.parameters.json"}

providers

list / elements=string

The list of resource providers needed for the deployment.

Returned: always

Sample: [{"namespace": "Microsoft.Resources", "resource_types": [{"locations": ["eastus"], "resource_type": "resourceGroups"}]}]

provisioning_state

string

The provisioning state of the deployment.

Returned: always

Sample: "Succeeded"

template_hash

string

The hash produced for the template.

Returned: always

Sample: "11223344556677889900"

dictionary

The reference to the deployed template.

Returned: when the deployment uses a linked template

Sample: {"content_version": "1.0.0.0", "uri": "https://example.com/templates/azuredeploy.json"}

timestamp

string

The timestamp of the template deployment.

Returned: always

Sample: "2026-10-13T07:00:00.123456Z"

tags

dictionary

The tags of the deployment.

Returned: always

Sample: {"environment": "test"}

type

string

The resource type.

Returned: always

Sample: "Microsoft.Resources/deployments"

Authors

  • Zun Yang (@zunyangc)