我需要连接到各种主机并运行一个API调用。使用 delegate_to 足够容易,但是当我尝试使用aem = x和poll = 0的“即发即弃” 运行此循环时,出现了我的问题。我想在要连接的主机上运行异步,而这是我要异步运行的本地循环。本质上是要同时在所有主机上执行此原始操作。
- name: Set x-variable on host
vars:
ansible_ssh_user: "user"
ansible_ssh_pass: "password"
raw: 'api call {{someVar}}'
register: result
failed_when: "'ERROR' in result.stdout or 'COMMAND PROCESSING FAILED' in result.stdout or 'error' in result.stdout or result.rc != 0"
delegate_to: "{{item}}"
loop: '{{hostDict.ip}}'
async: 45
poll: 0
我得到的错误是
failed: [localhost] (item=10.24.11.1) => {"ansible_loop_var": "item", "item": "10.24.11.1", "msg": "async is not supported for this task."}
这意味着它试图在没有安装python的主机上运行一些异步操作。