ansible playbook:无法在fileglob的预期路径中找到子目录

ansible playbook:无法在fileglob的预期路径中找到子目录,ansible,Ansible,我尝试使用fileglob从roles/common/files复制文件,但ansible playbook在roles/common/tasks/files 文件说: 任何副本、脚本、模板或包含任务(在角色中)都可以 角色/x/{文件、模板、任务}/(目录取决于)中的引用文件 任务)而不必相对或绝对地对其进行路径选择 剧本: # ./ansible/roles/common/tasks/main.yml - hosts: localhost connection: local gath

我尝试使用
fileglob
roles/common/files
复制文件,但
ansible playbook
roles/common/tasks/files

文件说:

任何副本、脚本、模板或包含任务(在角色中)都可以 角色/x/{文件、模板、任务}/(目录取决于)中的引用文件 任务)而不必相对或绝对地对其进行路径选择

剧本:

# ./ansible/roles/common/tasks/main.yml
- hosts: localhost
  connection: local
  gather_facts: no
  tasks:
  - name: setup bashrc
    import_tasks: bashrc.yml
任务:

文件树:

.
├── ansible
│   └── roles
│       └── common
│           ├── files
│           │   └── bashrc
│           │       ├── shell-aliases.lib.sh
│           │       ├── shell-functions.lib.sh
│           │       └── shell-settings.lib.sh
│           └── tasks
│               ├── bashrc.yml
│               ├── main.retry
│               └── main.yml
运行手册:

$ ansible-playbook -vvvvv ./ansible/roles/common/tasks/main.yml
...
TASK [try to find bashrc libs in roles/common/files/bashrc] *******...
task path: /home/<user>/git/homedirsync/ansible/roles/common/tasks/bashrc.yml:1
looking for "bashrc" at "/home/<user>/git/homedirsync/ansible/roles/common/tasks/files/bashrc"
looking for "bashrc" at "/home/<user>/git/homedirsync/ansible/roles/common/tasks/bashrc"
looking for "bashrc" at "/home/<user>/git/homedirsync/ansible/roles/common/tasks/files/bashrc"
looking for "bashrc" at "/home/<user>/git/homedirsync/ansible/roles/common/tasks/bashrc"
 [WARNING]: Unable to find 'bashrc' in expected paths
...
$ansible剧本-vvvv./ansible/roles/common/tasks/main.yml
...
任务[尝试在roles/common/files/bashrc中查找bashrc libs]********。。。
任务路径:/home//git/homedirsync/ansible/roles/common/tasks/bashrc.yml:1
正在“/home//git/homedirsync/ansible/roles/common/tasks/files/bashrc”中查找“bashrc”
正在“/home//git/homedirsync/ansible/roles/common/tasks/bashrc”中查找“bashrc”
正在“/home//git/homedirsync/ansible/roles/common/tasks/files/bashrc”中查找“bashrc”
正在“/home//git/homedirsync/ansible/roles/common/tasks/bashrc”中查找“bashrc”
[警告]:在预期路径中找不到“bashrc”
...
可翻译版本:

ansible 2.6.1
  config file = /home/<user>/.ansible.cfg
  configured module search path = [u'/var/ansible/library']
  ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.6 (default, Nov 13 2018, 12:45:42) [GCC 4.8.4]

ansible 2.6.1
配置文件=/home/.ansible.cfg
配置的模块搜索路径=[u'/var/ansible/library']
ansible python模块位置=/usr/local/lib/python2.7/dist-packages/ansible
可执行文件位置=/usr/local/bin/ansible
python版本=2.7.6(默认值,2018年11月13日,12:45:42)[GCC 4.8.4]
我看到了很多例子,它在哪里起作用,在哪里不起作用,但在我的案例中,我无法定位问题的根源。社区,请帮忙

Q:“无法使用fileglob在预期路径中找到子目录”

A:引用

“匹配针对Ansible控制器上的本地系统文件。”

角色的功能“任何副本、脚本、模板或包含任务都可以引用角色/x/{files、templates、tasks}…”中的文件”不适用于fileglob

相反,它可以使用。比如说

with_fileglob:
  - '{{ role_path }}/files/bashrc/*.lib.sh'

你能试着把文件从
bashrc
文件夹复制到
files
文件夹吗?@error404,如果我写
src:bashrc/shell aliases.lib.sh
dest:shell aliases.lib.sh
的话,ansible会因为长的Python回退跟踪而出错,但在“/home/viktorkho/git/homedirsync/ansible/roles/common/tasks/files/bashrc/shell aliases.lib.sh”您必须删除
bashrc/
只需保留
*.lib.sh
thx作为您的答案,但现在我无法检查它,因为我想更新ansible,现在我有一些新问题..抱歉,我稍后会回来
with_fileglob:
  - '{{ role_path }}/files/bashrc/*.lib.sh'