当前位置: 首页 > 知识库问答 >
问题:

Ansible-Playbook:无法用fileglob在预期路径中找到subdir

茹元魁
2023-03-14

使用角色文档说明:

任何复制、脚本、模板或包含任务(在角色中)都可以引用角色/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/tasks/bashrc.yml
- name: try to find bashrc libs in roles/common/files/bashrc
  copy:
    src: "{{ item }}"
    dest: /tmp
  with_fileglob:
    - bashrc/*.lib.sh
# Causes the same error:
#   loop: "{{ lookup('fileglob', 'bashrc/*', wantlist=True) }}"
.
├── 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 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]

共有1个答案

公冶龙野
2023-03-14

问:“无法用Fileglob在预期路径中找到subdir”

答:引用Fileglob的笔记

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

with_fileglob:
  - '{{ role_path }}/files/bashrc/*.lib.sh'
 类似资料:
  • 当我这样做时,我正在运行这条消息: Playbook:junos_config_new.yml 这是我的剧本... 目录~/ansible_junos/files/syslog_config.txt位于正确的位置~/ansible_junos/files/应该是放置所有要与防火墙进行比较的配置的正确位置吗? 请让我知道。

  • 元素的HTML为: 来自Firebug的X路径:

  • 本节列举了写第一个Playbook,你必须了解基本语法。 随着你面临的机器越多,配置的需求越复杂,你可能需要了解后面介绍的一些稍微复杂逻辑的语句。 执行Playbook语法 $ ansible-playbook deploy.yml 查看输出的细节 ansible-playbook playbook.yml --verbose 查看该脚本影响哪些hosts ansible-playbook pl

  • 我正在用ansible自动安装conda,但是激活conda的最后一步(conda init)失败了。 错误: “stderr”:“需要单个字符参数。”,“stderr_lines”:

  • 不能站在巨人的肩膀上的编程语言不是好语言,支持重用机制会节省调研重复的工作上浪费大量的时间,当然也会提高可维护性。 Playbook的支持两种重用机制,一种是简单的直接重新利用静态的Playbook脚本,例外一种是类似于编程语言中函数的机制。 include语句 - 重用静态的Playbook脚本,使用起来简单、直接。 role语言 - Playbook的“函数机制”,使用方法稍复杂、功能强大。是

  • 我试图找到shrotest路径之间的节点和使用Dijkstra算法,但每次它给我错误的响应。 下面是我的代码- 根据计算,从节点到节点的最短路径是,但我得到