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

为何Ansible ec2_win_password模块在Windows 2022超时失败,Windows 2019正常?

Ansible ec2_win_password模块在Windows 2022上的超时问题排查

问题背景

相同的Ansible代码在Windows Server 2019上运行正常,但在Windows Server 2022实例上执行时触发致命错误,错误提示为密码等待超时。

执行的Ansible代码

name: Grab the windows password we need from AWS to write to inventory
  ec2_win_password:
    aws_access_key: "{{ assumed_role.sts_creds.access_key }}"
    aws_secret_key: "{{ assumed_role.sts_creds.secret_key }}"
    security_token: "{{ assumed_role.sts_creds.session_token }}"
    instance_id: "{{ created_instance.instance_ids.0 }}"
    key_file: "{{ secret_key }}"
    region: "{{ target_region }}"
    wait: yes
  register: win_password

错误信息

fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "access_key": "A.....",
            "aws_access_key": "A.....",
            "aws_ca_bundle": null,
            "aws_config": null,
            "aws_secret_key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "debug_botocore_endpoint_logs": false,
            "endpoint_url": null,
            "instance_id": "i-0123456789",
            "key_data": null,
            "key_file": "/runner/env/tmpeol1opcf",
            "key_passphrase": null,
            "profile": null,
            "region": "us-east-1",
            "secret_key": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "security_token": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "session_token": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "validate_certs": true,
            "wait": true,
            "wait_timeout": 120
        }
    },
    "msg": "wait for password timeout after 120 seconds"
}

问题分析与解决方案

ec2_win_password模块本身不存在Windows 2022不兼容的官方说明,超时问题通常由以下原因导致,对应解决方案如下:

  • Windows 2022初始化耗时更长:Windows Server 2022镜像的初始化流程(如预装更新、安全策略配置)比2019版本更复杂,默认120秒的wait_timeout不足以等待密码生成完成。可尝试延长超时时间,例如将参数修改为wait_timeout: 300(5分钟)。
  • EC2实例规格或AMI延迟:低配实例(如t2.micro)或部分第三方Windows 2022 AMI可能在首次启动时,密码生成服务启动较慢。可尝试更换更高规格的实例,或使用AWS官方发布的Windows 2022 AMI测试。
  • 密钥文件权限问题:确保执行环境中key_file指向的私钥文件权限为600(Linux系统),避免因权限过高导致无法解密密码。
  • AWS权限验证:确认Assumed Role的IAM策略包含ec2:GetPasswordData动作,虽然2019实例能正常运行,但需排查2022实例所在资源组的权限是否有差异。

验证步骤

  1. 登录AWS控制台,手动尝试获取该Windows 2022实例的密码,如果控制台也无法解密,说明是实例本身的密码生成问题,与Ansible模块无关。
  2. 延长wait_timeout参数后重新执行Playbook,观察是否能成功获取密码。

内容的提问来源于stack exchange,提问作者Brian G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:29:56