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

更改Ansible查找文件的位置

辛意智
2023-03-14
playbooks/
  Foo.yml
  tasks/
    Task1.yml
    Task2.yml
    AllTasks.yml
- import_tasks: tasks/Task1.yml
- import_tasks: tasks/Task2.yml

当我执行playbookfoo.yml时,这可以非常好地工作。但是,当我执行位于其他位置的playbook(因此不是直接在这个playbooks目录中)时,导入将不再工作。这样做的原因是它们的导入相对于导入的剧本所在的位置。

同样的情况也发生在使用其他模块的任务中,如复制。他们查找与剧本位置相关的文件

有没有办法让我的任务为位于不同目录的剧本工作?

- import_tasks: "{{ current_dir }}/Task1.yml"
- import_tasks: "{{ current_dir }}/Task2.yml"
- import_tasks: "{{ inventory_dir }}/playbooks/tasks/Task1.yml"
- import_tasks: "{{ inventory_dir }}/playbooks/tasks/Task2.yml"

共有1个答案

张星洲
2023-03-14

问:“playbook_dir变量,遗憾的是我无法重写它”

答:变量playbook_dir按预期工作(但在本例中不需要它;请参见下面的第二部分)

shell> cd /scratch/tmp
shell> cat Foo.yml
- hosts: localhost
  tasks:
    - import_tasks: "{{ playbook_dir }}/tasks/AllTasks.yml"
shell> cat tasks/AllTasks.yml
- import_tasks: "{{ playbook_dir }}/tasks/Task1.yml"
- import_tasks: "{{ playbook_dir }}/tasks/Task2.yml"
shell> cat tasks/Task1.yml 
- debug:
    msg: Task1.yml
shell> cat tasks/Task2.yml 
- debug:
    msg: Task2.yml
shell> cd /tmp
shell> pwd
/tmp
shell> ansible-playbook /scratch/tmp/Foo.yml

PLAY [localhost] ****

TASK [debug] ****
ok: [localhost] => {
    "msg": "Task1.yml"
}

TASK [debug] ****
ok: [localhost] => {
    "msg": "Task2.yml"
}

PLAY RECAP ****
localhost: ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

问:“更改Ansible查找文件的位置”

shell> cat Foo.yml
- hosts: localhost
  tasks:
    - debug:
        var: ansible_search_path
    - import_tasks: tasks/AllTasks.yml

shell> cat tasks/AllTasks.yml
- debug:
    var: ansible_search_path
- import_tasks: Task1.yml
- import_tasks: Task2.yml

shell> cat tasks/Task1.yml
- debug:
    msg: Task1.yml

shell> cat tasks/Task2.yml
- debug:
    msg: Task2.yml
    "ansible_search_path": [
        "/scratch/tmp"
    ]

    "ansible_search_path": [
        "/scratch/tmp/tasks",
        "/scratch/tmp"
    ]

    "msg": "Task1.yml"

    "msg": "Task2.yml"
 类似资料:
  • 问题内容: 例如,我的Ubuntu机器上正在运行MySQL服务器。最近24小时内某些数据已更改。 哪些(Linux)脚本可以找到最近24小时内已更改的文件? 请列出文件名,文件大小和修改时间。 问题答案: 要查找特定特定目录及其子目录中最近24小时(最后一整天)内修改的所有文件,请执行以下操作: 应该是你喜欢的 在之前是非常重要的-这意味着任何改变一天或更短前。相反,“ 之前” 表示至少一天前发生

  • 我目前正在通过maven插件使用swagger-codesen:https://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin.我已经设置了我希望使用

  • 我想对小部件(Yii)的css文件进行更改。如果我不想更改核心文件,我必须将更改后的css放在哪里?

  • Ansible的一些的设置可以通过配置文件完成.在大多数场景下默认的配置就能满足大多数用户的需求,在一些特殊场景下,用户还是需要自行修改这些配置文件 用户可以修改一下配置文件来修改设置,他们的被读取的顺序如下: * ANSIBLE_CONFIG (一个环境变量) * ansible.cfg (位于当前目录中) * .ansible.cfg (位于家目录中) * /etc/ansible/an

  • 问题内容: 有没有一种我可以用来简单地找到文件位置的方法?我正在尝试允许用户选择一个文件并打开它,但是我必须让JFileChooser仅选择该文件并将该位置发送到另一种方法。最好的方法是什么? 问题答案: javadoc show中的示例显示了执行此操作的步骤: 那是在做什么。取得结果并将其传递给另一种方法。