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

EC2实例创建后如何等待SSM Agent就绪以执行Ansible Playbook?

解决方案

问题核心在于wait_for_connection任务默认针对SSH连接检测,而你使用的是community.aws.aws_ssm连接插件,因此该任务无法正确识别SSM Agent的就绪状态。以下是两种可行的解决方法:

方法1:使用Ansible官方SSM等待模块(推荐)

借助community.aws.ssm_wait_for_target_status模块直接等待EC2实例的SSM Agent进入在线状态:

  1. 先确保已安装community.aws集合:
ansible-galaxy collection install community.aws
  1. 替换原有的wait_for_connection任务为:
- name: 等待SSM Agent就绪
  community.aws.ssm_wait_for_target_status:
    target_ids: "{{ ansible_host }}"
    status: online
    delay: 10  # 每次检查间隔10秒
    max_attempts: 30  # 最多检查30次,总超时300秒

方法2:通过AWS CLI循环验证

若不想依赖额外模块,可直接在Ansible中调用AWS CLI,直到能成功建立SSM会话:

- name: 等待SSM会话可用
  shell: aws ssm start-session --target {{ ansible_host }} --command "exit 0"
  register: ssm_session_check
  until: ssm_session_check.rc == 0
  retries: 30
  delay: 10

补充说明

  • 两种方法的超时逻辑和你原配置的300秒保持一致,可根据实际需求调整delay和retries/max_attempts参数。
  • 确保执行Ansible的主机已配置好AWS凭证(环境变量、~/.aws/credentials或IAM角色),并拥有启动SSM会话、查看实例状态的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:09