我只想在特定的目录不存在时提取文件。我写了下面的代码来实现这一点。在
- name: check if program already exists.
shell: ls /tomcats|grep akash
register: programexists
- name: extract archive
command: chdir=/tomcats/ /bin/tar xvf program.tar.gz
when: programexists.stdout == {{ program }}
但是当“akash”目录不作为程序出口.stdout在这种情况下会是空的。在
我想知道我是否可以在filter_plugins中创建一个自定义过滤器来检查目录是否存在,并在playbook中使用相同的过滤器
自定义筛选器的代码
^{pr2}$并使用过滤器,如
- name: extract archive
command: chdir=/tomcats/ /bin/tar xvf program.tar.gz
when: {{ 'akash'|directory_exists }}
我可能对ansible期望过高,但如果有人能帮助我…我会非常感激的。在
一个定制的过滤器将是多余的。有一个
ignore_errors
参数。在使用
programexists.rc == 0
作为条件可能更好,在这种情况下,命令可以简单地变成ls /tomcats/akash
。在它应该更简单。
command
模块有一个creates
参数,它只是一个过滤器,只有在给creates
的路径不存在时才会执行命令。因此,如果您的命令将创建/tomcats/akash
,那么应该可以:如果您想实现最初的目标,有一个“unarchive”模块(http://docs.ansible.com/ansible/unarchive_module.html)。你可以这样使用它:
最后一个参数将检查目录是否存在,如果存在,则跳过该命令。在
相关问题 更多 >
编程相关推荐