如果有人能指出正确的方向,我将不胜感激。我试图在$ HOME / dotfiles目录中为每个用户列表找到目录列表,然后从该列表中在$ HOME中创建该目录的符号链接。
# Get list of directories in $HOME/dotfiles
- name: Get list of directories in $HOME/dotfiles
find:
paths: "/home/{{ user.username }}/dotfiles"
file_type: directory
recurse: false
register: dirs_matched
become: "{{ user.username }}"
loop: "{{ users|flatten(levels=1)}}"
loop_control:
loop_var: user
# Symlink any directories in dotfiles to $HOME
- name: Symlink dirs in ~/dotfiles to $HOME
file:
src: "{{item.0.path}}"
dest: "/home/{{item.1.username}}/{{item.0.path|basename}}"
state: link
force: true
loop: "{{ dirs_matched.files |product(users)|list }}"
when: dirs_matched.matched > 0
我确实得到了结果,但是它们在dirs_matched.results.files中。我不确定如何将结果映射到文件模块循环。
答案 0 :(得分:0)
您需要subelements
循环,但不需要nested/(product)
。
对于每个顶级项目(用户),迭代每个子元素(文件)。
- name: Symlink dirs in ~/dotfiles to $HOME
file:
src: "{{ item.1.path }}"
dest: "/home/{{ item.0.user.username }}/{{ item.1.path | basename }}"
state: link
force: true
loop: "{{ dirs_matched.results | subelements('files') }}"
when
条件不是必需的,因为循环零个元素不会执行任何操作。