azure.azcollection.azure_rm_webapp 模块 – 管理 Web 应用实例

注意

此模块是 azure.azcollection 集合 (版本 3.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install azure.azcollection。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在 playbook 中使用它,请指定: azure.azcollection.azure_rm_webapp

azure.azcollection 0.1.2 中的新增功能

概要

  • 创建、更新和删除 Web 应用实例。

要求

在执行此模块的主机上需要以下要求。

  • python >= 2.7

  • 执行此模块的主机必须通过 galaxy 安装 azure.azcollection 集合

  • 集合的 requirements.txt 中列出的所有 python 包必须通过 pip 安装在执行 azure.azcollection 中模块的主机上

  • 完整的安装说明可在 https://galaxy.ansible.com/azure/azcollection 找到

参数

参数

注释

ad_user

字符串

Active Directory 用户名。使用 Active Directory 用户而不是服务主体进行身份验证时使用。

adfs_authority_url

字符串

azure.azcollection 0.0.1 中新增

Azure AD 授权 URL。使用用户名/密码进行身份验证时使用,并具有您自己的 ADFS 授权。

always_on

布尔值

即使没有流量,也能使应用程序保持加载状态。

选项

  • false

  • true

api_profile

字符串

azure.azcollection 0.0.1 中新增

选择与 Azure 服务通信时要使用的 API 配置文件。latest 的默认值适用于公共云;未来的值将允许与 Azure Stack 一起使用。

默认值: "latest"

app_settings

字典

配置 Web 应用应用程序设置。子选项采用键值对格式。

app_state

字符串

启动/停止/重启 Web 应用。

选项

  • "started" ← (默认)

  • "stopped"

  • "restarted"

append_tags

布尔值

用于控制标签字段是规范的还是只是附加到现有标签。

如果是规范的,则在 tags 参数中找不到的任何标签都将从对象的元数据中删除。

选项

  • false

  • true ← (默认)

auth_source

字符串

azure.azcollection 0.0.1 中新增

控制用于身份验证的凭据来源。

也可以通过 ANSIBLE_AZURE_AUTH_SOURCE 环境变量设置。

当设置为 auto(默认值)时,优先级为模块参数 -> env -> credential_file -> cli

当设置为 env 时,凭据将从环境变量中读取。

当设置为 credential_file 时,它将从 ~/.azure/credentials 读取配置文件。

当设置为 cli 时,凭据将从 Azure CLI 配置文件中获取。subscription_id 或环境变量 AZURE_SUBSCRIPTION_ID 可用于标识订阅 ID(如果存在多个),否则使用默认的 az cli 订阅。

当设置为 msi 时,主机必须是启用了 MSI 扩展的 Azure 资源。subscription_id 或环境变量 AZURE_SUBSCRIPTION_ID 可用于标识订阅 ID(如果资源被授予对多个订阅的访问权限),否则选择第一个订阅。

Ansible 2.6 中添加了 msi

选项

  • "auto" ← (默认)

  • "cli"

  • "credential_file"

  • "env"

  • "msi"

cert_validation_mode

字符串

azure.azcollection 0.0.1 中新增

控制 Azure 端点的证书验证行为。默认情况下,所有模块都将验证服务器证书,但在使用 HTTPS 代理或针对 Azure Stack 时,可能需要通过传递 ignore 来禁用此行为。也可以通过凭据文件配置文件或 AZURE_CERT_VALIDATION 环境变量设置。

选项

  • "ignore"

  • "validate"

client_affinity_enabled

布尔值

是否发送会话关联 Cookie,这些 Cookie 将同一会话中的客户端请求路由到同一实例。

选项

  • false

  • true ← (默认)

client_id

字符串

Azure 客户端 ID。使用服务主体或托管身份 (msi) 进行身份验证时使用。

也可以通过 AZURE_CLIENT_ID 环境变量设置。

cloud_environment

字符串

azure.azcollection 0.0.1 中新增

对于美国公共云以外的云环境,环境名称(由 Azure Python SDK 定义,例如 AzureChinaCloudAzureUSGovernment)或元数据发现端点 URL(Azure Stack 要求)。也可以通过凭据文件配置文件或 AZURE_CLOUD_ENVIRONMENT 环境变量设置。

默认值: "AzureCloud"

container_settings

字典

Web 应用容器设置。

name

字符串 / 必需

容器的名称,例如 imagename:tag

要创建多容器应用程序,名称应为“COMPOSE|”或“KUBE|”,后跟 base64 编码的配置。

registry_server_password

字符串

容器注册表服务器密码。

registry_server_url

字符串

容器注册表服务器 URL,例如 mydockerregistry.io

registry_server_user

字符串

容器注册表服务器用户名。

deployment_source

字典

Git 的部署源。

branch

字符串

存储库的分支名称。

url

字符串

部署源的仓库 URL。

disable_instance_discovery

布尔值

azure.azcollection 2.3.0 版本新增

确定在尝试身份验证时是否执行实例发现。将其设置为 true 将完全禁用实例发现和权限验证。此功能旨在用于无法访问元数据终结点的情况,例如私有云或 Azure Stack。实例发现过程需要从https://login.microsoft.com/检索权限元数据以验证权限。将其设置为**True**将禁用权限验证。因此,务必确保配置的权限主机有效且值得信赖。

通过凭据文件配置文件或AZURE_DISABLE_INSTANCE_DISCOVERY环境变量设置。

选项

  • false ← (默认)

  • true

框架

列表 / 元素=字典

运行时框架设置集。每个设置都是一个字典。

更多信息,请参见https://docs.microsoft.com/en-us/azure/app-service/app-service-web-overview

name

字符串 / 必需

框架名称。

Windows Web 应用和 Linux Web 应用支持的框架列表不同。

从 2018 年 6 月起,Windows Web 应用支持javanet_frameworkphppythonnode

Windows Web 应用同时支持多个框架。

从 2018 年 6 月起,Linux Web 应用支持javarubyphppythondotnetcorenode

Linux Web 应用仅支持一个框架。

Java 框架与其他框架互斥。

选项

  • "java"

  • "net_framework"

  • "php"

  • "python"

  • "ruby"

  • "dotnetcore"

  • "node"

设置

字典

框架设置列表。

java_container

字符串 / 必需

Java 容器名称。

仅在frameworks=java时支持。示例值TomcatJavaSERedHat

java_container_version

字符串 / 必需

Java 容器版本。

仅在frameworks=java时支持。

针对Tomcat的示例值:8.59.010.010.1

版本

字符串 / 必需

框架版本。有关 Linux Web 应用支持的值,请参阅https://aka.ms/linux-stacks了解更多信息。

net_framework支持的示例值:.NET 4.8 的v4.8和 .NET 3.5 的v3.5

php支持的示例值:8.18.2

python支持的示例值:3.83.93.103.113.12

node支持的示例值:1820

dotnetcore支持的示例值:876

ruby支持的示例值:2.3

java支持的示例值:2117118

ftps_state

字符串

FTP/FTPS 服务的状态。

选项

  • "AllAllowed"

  • "FtpsOnly"

  • "Disabled"

http20_enabled

布尔值

配置网站以允许客户端通过 HTTP 2.0 连接。

选项

  • false

  • true

https_only

布尔值

配置网站仅接受 https 请求。

选项

  • false

  • true

身份

字典

对象的标识

类型

字符串

托管标识的类型

选项

  • "SystemAssigned"

  • "UserAssigned"

  • "SystemAssigned, UserAssigned"

  • "None" ← (默认)

user_assigned_identities

字典

用户分配的托管标识及其选项

默认值: {}

追加

布尔值

标识列表是否要添加到当前标识 (true) 还是替换当前标识 (false)

选项

  • false

  • true ← (默认)

id

列表 / 元素=字符串

与对象关联的用户分配的标识 ID 列表

默认值: []

位置

字符串

资源位置。如果未设置,则使用资源组中的位置作为默认值。

log_mode

字符串

父参数。

log_path

字符串

父参数。

min_tls_version

字符串

应用程序所需的最低 TLS 加密版本。

选项

  • "1.0"

  • "1.1"

  • "1.2"

name

字符串 / 必需

要创建或更新的应用程序的唯一名称。要创建或更新部署槽,请使用 {slot} 参数。

密码

字符串

Active Directory 用户密码。使用 Active Directory 用户而不是服务主体进行身份验证时使用。

计划

任意

应用服务计划。创建时需要。

可以是与 Web 应用位于同一资源组中的现有应用服务计划的名称。

可以是现有应用服务计划的资源 ID。例如 /subscriptions//resourceGroups//providers/Microsoft.Web/serverFarms/

可以是包含以下五个参数的字典。

name,应用服务计划的名称。

resource_group,应用服务计划的资源组。

sku,应用服务计划的 SKU,允许的值列在https://azure.microsoft.com/en-us/pricing/details/app-service/linux/

is_linux,应用服务计划是否是 Linux。默认为False

number_of_workers,应用服务计划的工作进程数量。

配置文件

字符串

在 ~/.azure/credentials 文件中找到的安全配置文件。

purge_app_settings

布尔值

清除所有现有应用程序设置。使用 app_settings 替换 Web 应用应用程序设置。

选项

  • false ← (默认)

  • true

resource_group

字符串 / 必需

资源所属资源组的名称。

scm_type

字符串

部署源的仓库类型,例如LocalGitGitHub

支持的值列表维护在https://docs.microsoft.com/en-us/rest/api/appservice/webapps/createorupdate#scmtype

密钥

字符串

Azure 客户端密钥。使用服务主体进行身份验证时使用。

site_auth_settings

字典

Azure 应用服务身份验证/授权功能的配置设置。

aad_claims_authorization

字符串

获取包含 Azure AD ACL 设置的 JSON 字符串。

additional_login_params

字符串

用户登录时发送到 OpenID Connect 授权终结点的登录参数。

每个参数必须采用“键=值”的形式。

allowed_audiences

列表 / 元素=字符串

验证 Azure Active Directory 发出的 JWT 时要考虑的允许的受众值。

allowed_external_redirect_urls

列表 / 元素=字符串

可以重定向到的外部 URL,作为登录或注销应用程序的一部分。

请注意,URL 的查询字符串部分将被忽略。

auth_file_path

字符串

包含身份验证设置的配置文件的路径。

如果路径是相对路径,则基路径将是站点的根目录。

client_id

字符串

此依赖方应用程序的客户端 ID,称为 client_id。

client_secret

字符串

此依赖方应用程序的客户端密钥(在 Azure Active Directory 中,这也称为密钥)。

client_secret_certificate_thumbprint

字符串

客户端密钥的替代项,即用于签名目的的证书的指纹。

此属性充当客户端密钥的替代项。它也是可选的。

client_secret_setting_name

字符串

包含依赖方应用程序客户端密钥的应用设置名称。

config_version

字符串

当前应用程序中使用的身份验证/授权功能的 ConfigVersion。

此值中的设置可以控制身份验证/授权的控制平面的行为。

default_provider

字符串

配置多个提供程序时要使用的默认身份验证提供程序。

选项

  • "AzureActiveDirectory"

  • "Facebook"

  • "Google"

  • "MicrosoftAccount"

  • "Twitter"

  • "Github"

启用

布尔值

是否为当前应用程序启用或禁用身份验证/授权功能。

选项

  • false

  • true

facebook_app_id

字符串

用于登录的 Facebook 应用的应用 ID。

facebook_app_secret

字符串

用于 Facebook 登录的 Facebook 应用的应用密钥。

facebook_app_secret_setting_name

字符串

包含用于 Facebook 登录的应用密钥的应用设置名称。

facebook_o_auth_scopes

列表 / 元素=字符串

作为 Facebook 登录一部分将请求的 OAuth 2.0 范围。

git_hub_client_id

字符串

用于登录的 GitHub 应用的客户端 ID。

git_hub_client_secret

字符串

用于 GitHub 登录的 GitHub 应用的客户端密钥。

git_hub_client_secret_setting_name

字符串

包含用于 GitHub 登录的 GitHub 应用客户端密钥的应用设置名称。

git_hub_o_auth_scopes

列表 / 元素=字符串

作为 GitHub 登录身份验证一部分将请求的 OAuth 2.0 范围。

此设置可选。

google_client_id

字符串

Google Web 应用的 OpenID Connect 客户端 ID。

google_client_secret

字符串

与 Google Web 应用关联的客户端密钥。

google_client_secret_setting_name

字符串

包含与 Google Web 应用关联的客户端密钥的应用设置名称。

google_o_auth_scopes

列表 / 元素=字符串

作为 Google 登录身份验证的一部分将请求的 OAuth 2.0 范围。

此设置可选。如果未指定,“openid”、“profile”和“email”将用作默认范围。

is_auth_from_file

字符串

如果is_auth_from_file=true,则应从文件中读取身份验证配置设置。

选项

  • "true"

  • "false"

issuer

字符串

代表为该应用程序颁发访问令牌的实体的 OpenID Connect 发行者 URI。

kind

字符串

资源类型。

microsoft_account_client_id

字符串

为用于身份验证的应用程序创建的 OAuth 2.0 客户端 ID。

启用 Microsoft 帐户身份验证需要此设置。

microsoft_account_client_secret

字符串

为用于身份验证的应用程序创建的 OAuth 2.0 客户端密钥。

microsoft_account_client_secret_setting_name

字符串

包含为用于身份验证的应用程序创建的 OAuth 2.0 客户端密钥的应用设置名称。

microsoft_account_o_auth_scopes

列表 / 元素=字符串

作为 Microsoft 帐户身份验证的一部分将请求的 OAuth 2.0 范围。

runtime_version

字符串

当前应用程序中使用的身份验证/授权功能的 RuntimeVersion。

token_refresh_extension_hours

浮点数

会话令牌过期后,可以使用会话令牌调用令牌刷新 API 的小时数。

token_store_enabled

布尔值

是否使用 App Service 令牌存储。

选项

  • false

  • true

twitter_consumer_key

字符串

用于登录的 Twitter 应用程序的 OAuth 1.0a 密钥。

twitter_consumer_secret

字符串

用于登录的 Twitter 应用程序的 OAuth 1.0a 密钥秘密。

启用 Twitter 登录需要此设置。

twitter_consumer_secret_setting_name

字符串

包含用于登录的 Twitter 应用程序的 OAuth 1.0a 密钥秘密的应用设置名称。

unauthenticated_client_action

字符串

未经身份验证的客户端尝试访问应用程序时要采取的操作。

选项

  • "RedirectToLoginPage"

  • "AllowAnonymous"

startup_file

字符串

Web 应用的启动文件。

仅用于 Linux Web 应用。

state

字符串

Web 应用的状态。

使用 present 创建或更新 Web 应用,使用 absent 删除它。

选项

  • "absent"

  • "present" ← (默认)

subscription_id

字符串

您的 Azure 订阅 ID。

tags

字典

作为元数据分配给对象的字符串:字符串对的字典。

对象的元数据标签将使用任何提供的数值进行更新。

要删除标签,请将 append_tags 选项设置为 false。

目前,Azure DNS 区域和流量管理器服务也不允许在标签中使用空格。

Azure 前端门户不支持使用

Azure 自动化和 Azure CDN 仅支持资源上的 15 个标签。

tenant

字符串

Azure 租户 ID。使用服务主体进行身份验证时使用。

thumbprint

字符串

在 azure.azcollection 1.14.0 中添加

x509_certificate_path中指定的私钥的指纹。

使用服务主体进行身份验证时使用。

如果定义了x509_certificate_path,则需要此项。

x509_certificate_path

路径

在 azure.azcollection 1.14.0 中添加

PEM 格式下用于创建服务主体的 X509 证书的路径。

证书必须附加到私钥。

使用服务主体进行身份验证时使用。

备注

注意

  • 对于使用 Azure 进行身份验证,您可以传递参数、设置环境变量、使用存储在 ~/.azure/credentials 中的配置文件,或者在运行任务或剧本之前使用 az login 登录。

  • 也可以使用服务主体或 Active Directory 用户进行身份验证。

  • 要通过服务主体进行身份验证,请传递 subscription_id、client_id、secret 和 tenant,或设置环境变量 AZURE_SUBSCRIPTION_ID、AZURE_CLIENT_ID、AZURE_SECRET 和 AZURE_TENANT。

  • 要通过 Active Directory 用户进行身份验证,请传递 ad_user 和 password,或在环境中设置 AZURE_AD_USER 和 AZURE_PASSWORD。

  • 或者,凭据可以存储在 ~/.azure/credentials 中。这是一个包含 [default] 部分和以下键的 ini 文件:subscription_id、client_id、secret 和 tenant 或 subscription_id、ad_user 和 password。也可以添加其他配置文件。通过传递 profile 或在环境中设置 AZURE_PROFILE 来指定配置文件。

另请参阅

另请参阅

使用 Azure CLI 登录

如何使用 az login 命令进行身份验证。

示例

- name: Create a windows web app with non-exist app service plan
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myWinWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
      is_linux: false
      sku: S1

- name: Create a docker web app with some app settings, with docker image
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myDockerWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
      is_linux: true
      sku: S1
      number_of_workers: 2
    app_settings:
      testkey: testvalue
      testkey2: testvalue2
    container_settings:
      name: ansible/ansible:ubuntu1404

- name: Create a docker web app with private acr registry
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myDockerWebapp
    plan: myAppServicePlan
    app_settings:
      testkey: testvalue
    container_settings:
      name: ansible/ubuntu1404
      registry_server_url: myregistry.io
      registry_server_user: user
      registry_server_password: "{{ password }}"

- name: Create a multi-container web app
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myMultiContainerWebapp
    plan: myAppServicePlan
    app_settings:
      testkey: testvalue
    container_settings:
      name: "COMPOSE|{{ lookup('file', 'docker-compose.yml') | b64encode }}"

- name: Create a linux web app with Node 6.6 framework
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myLinuxWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
    app_settings:
      testkey: testvalue
    frameworks:
      - name: "node"
        version: "18"

- name: Create a windows web app with node, php
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myWinWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
    app_settings:
      testkey: testvalue
    frameworks:
      - name: "node"
        version: 18
      - name: "php"
        version: 8.2

- name: Create a stage deployment slot for an existing web app
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myWebapp/slots/stage
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
    app_settings:
      testkey:testvalue

- name: Create a linux web app with java framework
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myLinuxWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
    app_settings:
      testkey: testvalue
    frameworks:
      - name: "java"
        version: "8"
        settings:
          java_container: "Tomcat"
          java_container_version: "8.5"

- name: Create a windows web app with site_auth_settings
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myWindowWebapp
    site_auth_settings:
      client_id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
      default_provider: 'MicrosoftAccount'
      runtime_version: '-2'
      token_refresh_extension_hours: 120
      unauthenticated_client_action: 'RedirectToLoginPage'
      client_secret: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
      token_store_enabled: false
      enabled: true
      is_auth_from_file: false
    plan:
      resource_group: myResourceGroup
      name: myLinuxwebapp
      is_linux: false
      sku: S1

- name: Create a linux web app with python framework
  azure_rm_webapp:
    resource_group: myResourceGroup
    name: myLinuxWebapp
    plan:
      resource_group: myAppServicePlan_rg
      name: myAppServicePlan
    app_settings:
      testkey: testvalue
    frameworks:
      - name: "python"
        version: "3.10"

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

id

字符串

当前 Web 应用的 ID。

返回:始终

示例: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Web/sites/myWebApp"

作者

  • 朱韵格 (@yungezz)