我有一个重复很多的任务文件。这些shell命令中的每一个都倾向于需要在虚拟环境中,特定工作目录内以及特定用户下工作。例如,我的任务看起来像这样:
- 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。我很难在角色或剧本层面上做这件事。
答案 0 :(得分:2)
由于它们之间的唯一区别是命令,您可以使用Loops,因此它将变为
- name: Build thing
shell: source ~/project/venv/bin/activate; ./thing {{ item }} chdir=~/project
sudo_user: "{{ thing_user }}"
with_items:
- build
- register