如何在 ansible 中触发多个 aws cloudformation 任务?

How can i trigger multiple aws cloudformation tasks in ansible?

我正在尝试找到一种方法来通过 ansible 并行触发多个 cloudformation api 调用。

由于堆栈增长了很多,单独触发每个任务占用了大量时间。我查看了将轮询设置为 0(即发即弃)的异步选项。但这根本不会触发 cloudformation 任务。

有什么建议吗?

解决方案一: 将您的 cloudformation 调用包装在 ansible 模块中(易于创建)并在内部使用线程模块。

示例:

import threading

def main():

    module=AnsibleModule(
        argument_spec=dict(
            region=dict(choices=AWS_REGIONS, default='us-east-1'),
            aws_secret_key=dict(no_log=True),
            aws_access_key=dict(no_log=True)
            ...
        )
    )
    t = threading.Thread(target=cfn_command)
    threads.append(t)
    t.start()

方案二: 编写一个脚本,将所有功能和触发单个脚本封装在 ansible 中 示例:

#!/bin/bash

aws cloudformation list-stacks > foo &
aws cloudformation describe-stack --stack-name aaa > bar &

然后在你的 ansible 剧本中使用 shell 模块来触发它