2016-02-17 79 views
2

我有一個任務文件有很多重複。這些shell命令中的每一個都傾向於需要在虛擬環境內,特定工作目錄內以及特定用戶下工作。例如,我的任務往往是這樣的:避免重複在Ansible任務列表中的多個命令

- name: Build thing 
    shell: source ~/project/venv/bin/activate; ./thing build chdir=~/project 
    sudo_user: "{{ thing_user }}" 

- name: Register thing 
    shell: source ~/project/venv/bin/activate; ./thing register chdir=~/project 
    sudo_user: "{{ thing_user }}" 

有什麼方法可以讓我避免在任務級重複自己?理想情況下,我可以一次聲明工作目錄,虛擬環境和sudo_users。這對我來說很難在角色或劇本級別上做。

回答

2

由於它們之間唯一的區別是,你可以使用Loops命令所以它會成爲

- name: Build thing 
    shell: source ~/project/venv/bin/activate; ./thing {{ item }} chdir=~/project 
    sudo_user: "{{ thing_user }}" 
    with_items: 
    - build 
    - register