我有一个 ansible 1.1 剧本,在其中我做了如下事情:
- name: copy files
sudo: True
shell: cp /from/* /to/
- name: change owner
sudo: True
file: path=$item owner=newuser group=newgroup
with_fileglob: /to/*
第二项任务“更改所有者”总是被跳过。有人能帮我找出原因吗?文件模块跳过是因为文件存在吗?我被困住了 :)
答案1
从文档:
请记住查找插件在“控制”机器上运行:
with_fileglob
是一个查找插件,因此它会在本地服务器上查找文件,即您正在运行 ansible-playbook 的服务器。
您可以执行以下操作:
- name: list files
action: command ls -1 /to/*
register: dumpfiles
- name: change ownership
action: file path=$item owner=newuser group=newgroup
with_items: ${dumpfiles.stdout_lines}
答案2
Ansible 1.1 在文件模块中添加了 recurse 参数,因此您更改所有权任务需要做的就是:
- name: change ownership
action: file state=directory recurse=yes path=/to/ owner=newuser group=newgroup
当实际事情发生变化时这将变得更加明显;使用 shell 或命令模块将始终返回改变的状态,即使实际上没有任何改变。