我有几个ansible角色任务,我用它来设置许多配置目录。问题是我有一个配置列表,需要使用某个路径进行设置,但前提是它们不存在。
- name: Ensure core configuration directories exist.
shell: "cp -r {{ service_install_path }}/conf/ {{ service_home }}/{{ item }}.conf.d"
when:
- "item in conf_indexes_current.content"
- "not {{ service_home }}/{{ item }}.conf.d.stat.exists"
with_items: "{{ conf_dirs }}"
然而问题是你无法统计这样的路径:
- "not {{ service_home }}/{{ item }}.conf.d.stat.exists"
我得到的错误是:
条件检查'不是{{service_home}} / {{item }。conf.d.stat.exists'失败了。错误是:意外'/' 第1行
有没有办法设置动态变量完整路径然后测试它?我似乎也不能在这里设定一个事实。
[更新]:只是阅读另一个试图用非常模糊的循环概念做某事的问题。这是简单使用shell脚本/模板的正确方法吗?
答案 0 :(得分:-2)
好吧,我最终用其他Stack问题和随机网站的点点滴滴来解决这个问题。我不经常使用ansible,我们只使用它大约一年。我最终做了以下工作,将其分为两个任务:
- name: Check existence of config for each index.
stat:
path: "{{ service_home }}/{{ item }}.conf.d"
register: "{{ item }}_conf_true"
with_items: "{{ conf_dirs }}"
- name: Ensure core configuration directories exist as full templates for modification.
shell: "cp -r {{ service_install_path }}/conf/ {{ service_home }}/{{ item }}.conf.d"
when:
- "item in conf_indexes_current.content"
- "{{ item }}_conf_true is not defined"
with_items: "{{ conf_dirs }}"
有用吗?是。这是对的吗?也许但是我可能还有一种更好的方式没有想到或者看过。