在嵌套循环中创建目录符号链接
Creating directory symlinks in a nested loop
如果有人能指出正确的方向,我将不胜感激。我试图在 $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 中。我不确定如何将结果映射到文件模块循环。
您需要 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
条件不是必需的,因为遍历零个元素什么都不做。
如果有人能指出正确的方向,我将不胜感激。我试图在 $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 中。我不确定如何将结果映射到文件模块循环。
您需要 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
条件不是必需的,因为遍历零个元素什么都不做。