一千萬個為什麽

搜索

有沒有辦法在ansible中並行運行with_items循環?



我正在運行ansible 2.2,但如果有幫助可以升級。

我看到了這個: https://github.com/ansible/ansible/issues/12086並且非常興奮,但它似乎不在這個(或任何)版本的ansible文檔中。

我試圖解決的問題是我有1000個用戶需要在centos盒子上管理。連續運行此任務需要相當長的時間。甚至更煩人的是,一切都顯示為已更改,因為用戶模塊上的“expires”命令始終將事物標記為已更改。

this -> http://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html also looked promising, but it took the same amount of time to run each command in the with_items loop and didn't go any faster (I never bothered to wait long enough to get to the end)

跳過任務現在很快(比在ansible 2.0中快得多),如果我無法弄清楚如何並行完成這項工作,我想我會回過頭來弄清楚如何跳過無意義的任務,如果全部否則失敗,我會寫自己的模塊。但似乎我應該能夠在ansible中更快地完成所有這些工作。


這就是我想要並行運行的內容, host_authorizations 是用戶名和其他數據的列表。

  - name: Create/modify OS user accounts
    user: name={{ item.username }} group=sshusers shell=/bin/bash home="/home/selinux-modules/{{ item.username }}" state=present expires={{item.expiredate|default(omit)}}
    with_items: "{{ host_authorizations }}"
    tags: full_maintenance

轉載註明原文: 有沒有辦法在ansible中並行運行with_items循環?

一共有 1 個回答:

回答你的問題:不,截至目前,Ansible無法並行運行循環。

我會使用 newusers 代替批量用戶創建。創建一個包含所有用戶的文件,將其復制到主機,然後在 command 任務中運行 newusers/path/to/user/list