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
相关产品推荐
相关产品推荐

