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

如何通过Python结合aws_ssm连接插件编程运行Ansible Playbook

用PlaybookExecutor结合aws_ssm连接插件运行Ansible Playbook示例

前置准备

  • 安装依赖包:pip install ansible boto3
  • 配置AWS凭证:可通过~/.aws/credentials文件、环境变量(AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY)或IAM角色(如果代码运行在EC2/EKS等AWS服务上)
  • 目标EC2实例要求:
    • 已安装并运行SSM Agent
    • 实例IAM角色关联AmazonSSMManagedInstanceCore权限策略

Python代码示例

以下是完整的Python代码,通过PlaybookExecutor调用aws_ssm连接插件执行Playbook:

from ansible.playbook.playbook import Playbook
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.inventory.manager import InventoryManager
from ansible.vars.manager import VariableManager
from ansible.parsing.dataloader import DataLoader
from ansible.module_utils.common.collections import ImmutableDict
from ansible import context

# 设置Ansible上下文参数
context.CLIARGS = ImmutableDict(
    connection='aws_ssm',
    forks=5,
    check=False,
    diff=False,
    verbosity=2,
    private_key_file=None,
    remote_user=None,
    become=None,
    become_method=None,
    become_user=None
)

# 初始化数据加载器
loader = DataLoader()

# 构建Inventory,添加目标EC2实例(替换为你的实例ID和区域)
inventory = InventoryManager(loader=loader, sources=['/dev/null'])
inventory.add_host(
    name='i-0123456789abcdef0',
    variables={
        'ansible_connection': 'aws_ssm',
        'ansible_aws_ssm_region': 'us-east-1',
        # 若需指定AWS profile,取消下方注释
        # 'ansible_aws_ssm_profile': 'my-aws-profile'
    }
)

# 初始化变量管理器
variable_manager = VariableManager(loader=loader, inventory=inventory)

# 指定Playbook路径(替换为你的Playbook文件路径)
playbook_path = './ssm_test_playbook.yml'

# 创建Playbook执行器
executor = PlaybookExecutor(
    playbooks=[playbook_path],
    inventory=inventory,
    variable_manager=variable_manager,
    loader=loader,
    passwords={}
)

# 执行Playbook并获取结果
execution_result = executor.run()
print(f"Playbook执行返回码: {execution_result}")

配套Playbook示例(ssm_test_playbook.yml)

- name: 通过AWS SSM连接执行任务
  hosts: all
  gather_facts: true
  tasks:
    - name: 查看操作系统版本
      command: cat /etc/os-release
      register: os_info
    - name: 输出系统版本信息
      debug:
        var: os_info.stdout_lines

关键配置说明

  • ansible_connection: aws_ssm:强制使用aws_ssm连接插件,替代默认的SSH连接
  • ansible_aws_ssm_region:指定目标EC2实例所在的AWS区域,必须与实例实际区域一致
  • ansible_aws_ssm_profile:可选,当需要使用非默认AWS凭证profile时配置
  • 若需批量管理实例,可使用AWS动态Inventory(如aws_ec2插件)替代手动添加主机,只需在Inventory配置中指定过滤标签或实例ID即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:00:59