You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

win_iis_webapppool配置应用池SpecificUser时未设置密码如何解决

问题根因

密码配置未生效由两个问题共同导致:

  • 属性键名大小写错误:IIS应用池配置Schema对属性名大小写敏感,原配置中processmodel.idleTimeout、processmodel.idleTimeoutAction将配置节点processModel的大写M写为小写m,会导致这两项超时配置不生效。
  • 旧版本模块属性设置顺序bug:1.10.0版本以下的win_iis_webapppool模块设置应用池属性时,会先写入用户名、密码,最后才修改identityType为SpecificUser。而IIS仅在身份类型为SpecificUser时才会持久化存储传入的密码,等身份类型最后切换为SpecificUser时,之前传入的密码已经被丢弃,最终仅保留用户名配置。

注意:不要通过调整attributes内属性的书写顺序解决该问题,旧版本Ansible中Python字典默认无序,调整书写位置不会改变模块实际的属性设置顺序。

解决方案

方案1(推荐):升级ansible.windows集合

将ansible.windows集合升级到1.10.0及以上版本,该版本已修复processModel相关属性的设置顺序问题。升级后统一修正所有属性的大小写即可正常生效,修正后的完整配置如下:

- name: Create GRSClient application pool
  win_iis_webapppool:
    name: "Test"
    state: started
    attributes:
      managedRuntimeVersion: v4.0
      managedPipelineMode: Integrated
      processModel.identityType: SpecificUser
      processModel.userName: 'TestUser'
      processModel.password: 'TestPassword'
      processModel.loadUserProfile: false
      enable32BitAppOnWin64: true
      failure.rapidFailProtection: true
      processModel.idleTimeout: 00:20:00
      processModel.idleTimeoutAction: Terminate
      startMode: AlwaysRunning

方案2:拆分任务分步配置(无法升级集合时使用)

如果暂时无法升级Ansible Windows集合,将配置拆分为两个任务执行:先创建应用池并配置基础参数、身份类型和用户名,再单独写入密码,此时因为身份类型已经是SpecificUser,密码可以被正常持久化:

- name: Create GRSClient application pool with base config
  win_iis_webapppool:
    name: "Test"
    state: started
    attributes:
      managedRuntimeVersion: v4.0
      managedPipelineMode: Integrated
      processModel.identityType: SpecificUser
      processModel.userName: 'TestUser'
      processModel.loadUserProfile: false
      enable32BitAppOnWin64: true
      failure.rapidFailProtection: true
      processModel.idleTimeout: 00:20:00
      processModel.idleTimeoutAction: Terminate
      startMode: AlwaysRunning

- name: Set application pool credential password
  win_iis_webapppool:
    name: "Test"
    attributes:
      processModel.password: 'TestPassword'
配置验证

配置完成后,在目标Windows服务器执行以下PowerShell命令即可验证密码是否正确写入:

Import-Module WebAdministration
Get-ItemProperty IIS:\AppPools\Test -Name processModel.userName,processModel.password,processModel.identityType

返回结果中如果password字段显示为[enc]开头的加密字符串,代表密码已经被正确持久化存储。

内容的提问来源于stack exchange,提问作者pavankalyan chithari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 07:18:23