Как я могу запустить несколько задач облачного формирования aws в ansible?

Я пытаюсь найти способ параллельно запускать несколько вызовов API-интерфейса cloudformation через ansible.

Поскольку стек сильно вырос, запуск каждой задачи по отдельности отнимает много времени. Я посмотрел на асинхронный вариант с опросом, установленным на 0 (запустил и забыл). Но это вообще не запускает задачу формирования облака.

Какие-либо предложения ?


person user3228188    schedule 29.06.2015    source источник


Ответы (1)


Решение 1. Оберните ваши вызовы 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()

Решение 2. Напишите скрипт, который будет инкапсулировать все функциональные возможности и запускать один скрипт в ansible. Пример:

#!/bin/bash

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

а затем в вашем ansible playbook просто используйте модуль shell, чтобы запустить его

person Vor    schedule 29.06.2015