我想将/etc/nginx/sites-enabled
替换为我的仓库的符号链接。我正在尝试使用file
模块执行此操作,但这不起作用,因为文件模块不会使用force选项删除目录。
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available src=/repo/etc/nginx/sites-available state=link force=yes
notify: restart nginx
我可以回到使用shell。
- name: setup nginx sites-available symlink
shell: test -d /etc/nginx/sites-available && rm -r /etc/nginx/sites-available && ln -sT /repo/etc/nginx/sites-available /etc/nginx/sites-available
notify: restart nginx
有没有更好的方法来实现这一目标,而不是回到shell?
答案 0 :(得分:42)
当你采取行动时,实际上是事情:
这可能也是在Ansible中表达最简洁的方式:
tasks:
- name: remove the folder
file: path=/etc/nginx/sites-available state=absent
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available
src=/repo/etc/nginx/sites-available
state=link
force=yes
notify: restart nginx
但是,总是删除和添加符号链接并不是那么好,所以添加一个任务来检查链接目标可能是一个很好的补充:
- name: check the current symlink
stat: path=/etc/nginx/sites-available
register: sites_available
'当'删除任务的条件:
- name: remove the folder (only if it is a folder)
file: path=/etc/nginx/sites-available state=absent
when: sites_available.stat.isdir is defined and sites_available.stat.isdir