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

如何在Ansible任务中生成支持多动态标签的AWS SSM激活码

Ansible SSM激活码动态传入多标签解决方案

核心解决逻辑:Ansible的loop/with_items属于任务级循环,每遍历一个元素就会完整执行一次当前任务,因此才会生成多个激活码。我们只需要将标签拼接逻辑放到Jinja2模板渲染阶段,在单次任务执行前完成所有标签参数的组装,就能实现单次调用传入全部标签的需求。

具体实现步骤

1. 调整角色内部代码

首先新增标签参数拼接任务,再调用AWS CLI生成激活码:

- name: 预拼接SSM激活码标签参数
  set_fact:
    ssm_tag_params: >-
      {% for key, val in aws_ssm_instance_tags.items() %}
      "Key={{ key }},Value={{ val }}"
      {% endfor %}

- name: 生成SSM激活码和ID
  command: |
    aws ssm create-activation
    --tags {{ ssm_tag_params }}
  register: ssm_activation_code

2. 角色使用方式无变动

使用者仍可按原有设计传入自定义标签字典即可:

- role: ansible-role-aws-sm-agent
  vars:
    aws_ssm_instance_tags: {
      "key1": "value1",
      "key2": "value2",
      "env": "production",
      "project": "biz"
    }

可选优化方案

如果希望简化代码避免手动拼接参数,可以使用Ansible官方AWS集合提供的aws_ssm_activation模块,原生支持直接传入标签字典,写法更简洁:

- name: 生成SSM激活码和ID
  amazon.aws.aws_ssm_activation:
    iam_role: "你的SSM实例角色名"
    tags: "{{ aws_ssm_instance_tags }}"
  register: ssm_activation_code

该方案兼容你的Ansible 2.9运行环境,只需提前安装amazon.aws集合即可使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:39:02