如何在 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
模块来触发它
我正在尝试找到一种方法来通过 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
模块来触发它