本文介绍了如何有条件地在ansible上执行任务组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想有条件地执行一组任务.
I want to conditionally execute a set of tasks. Is there any syntax available that would let me execute a group of tasks, where the condition is evaluated once per whole group (like in a if statement in programming languages)?
看看下面的代码片段.我知道差异很小,但是第一个代码更好地表达了我的意图,而不会用其他变量(user_home_result2)污染名称空间.
Take a look at the code snippets below. I know the difference is small, but the first code better expresses my intention without polluting the namespace with additional variables (user_home_result2).
- name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result - set_fact: user_home={{ user_home_result.stdout }} - when: user_home != '' - name: Setting up user {{ user }} user: > generate_ssh_key=yes name="{{ user }}" - name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result - set_fact: user_home={{ user_home_result.stdout }}解决方法:
- name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result - set_fact: user_home={{ user_home_result.stdout }} - name: Setting up user {{ user }} user: > generate_ssh_key=yes name="{{ user }}" when: user_home != '' - name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result2 when: user_home != '' - set_fact: user_home={{ user_home_result2.stdout }} when: user_home != ''推荐答案
您可以将任务放入新的yml文件中,并使用条件包含:
You can put the tasks in a new yml file and use a conditional include:
# subtasks.yml --- - name: Setting up user {{ user }} user: > generate_ssh_key=yes name="{{ user }}" - name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result - set_fact: user_home={{ user_home_result.stdout }}在剧本中:
- name: Capturing user's home directory shell: "getent passwd {{ user }} | awk -F: '{ print $6 }'" register: user_home_result - set_fact: user_home={{ user_home_result.stdout }} - include: subtask.yml when: user_home != ''更多推荐
如何有条件地在ansible上执行任务组?
发布评论