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

子目录中的Playbooks,而不是group_vars旁边

梁修贤
2023-03-14

有人知道如何将playbooks放入文件夹,但共享相同的角色、group_vars和其他通常位于根目录的东西吗?

root_dir:
- group_vars
- roles
- inventory
- playbooks
  - my_playbook.yml
- site.yml
- deploy.yml
- hosts: host_group
  sudo: true
  gather_facts: false
  vars_files:
  - ../group_vars/all/main.yml

这将获取main.yml中定义的var。但是,我不清楚这是否会添加在group_vars/中定义的组变量,而不是显式指定的.../group_vars/。

谢了!

共有1个答案

萧嘉禧
2023-03-14

Ansible将拾取group_vars,而不显式声明路径:

以下是/tmp/ansible中的目录结构示例:

/tmp/ansible
├── group_vars
│   └── test_group.yml
├── inventory
├── playbooks
│   └── foo.yml
└── site.yml

库存文件:

[test_group]
localhost
# site.yml
---
- include: playbooks/foo.yml 
---
- hosts: localhost

  tasks:

      - debug: var=foo
foo: bar
ansible-playbook -i inventory playbooks/foo.yml -c local

PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
    "var": {
        "foo": "bar"
    }
}

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

目录位于父路径/tmp/ansible/Playbooks:

ansible-playbook -i ../inventory foo.yml -c local

PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
    "var": {
        "foo": "bar"
    }
}

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

正如我们在上面的示例中所看到的,ansible-playbook将根据目录文件或ansible执行的文件夹的路径查找变量。剧本可以被分开而不需要额外的努力。

 类似资料:
  • 我经常使用标志遍历多个子目录,并提取特定文件或文件类型,而不必单独明确引用每个文件。例子: 这会在我的目标路径中创建与最初检索DLL的源完全相同的目录结构。例如,如果我从上面的检索了一个DLL,那么它会将该DLL放在路径中。 这种行为可以通过以下方式进行修改: 但显然,这意味着我必须单独引用依赖关系中的每个子目录。 因此,64000美元的问题是,如何防止在目标中重新创建相同的目录,而不必显式引用源

  • 问题内容: 将AngularJS应用程序转到目录后,我想使用进行测试。问题是只提供我目录中的所有代码。另外,请记住,我使用创建了我的应用程序。 这是我的 Gruntfile.js中* 的服务器任务代码 * 有没有办法使仅在目录中提供已构建的代码? 问题答案: 是否可以做并不重要。 重要的是您不应为此使用grunt服务器。 如您所见,服务器任务非常艰苦,它可以完成dist文件夹中不需要的许多事情,以

  • 问题内容: 我可以使用SWT 选择文件夹而不是文件吗? 问题答案: 您可以使用代替。这是一些示例代码: 这是一个稍大的示例。

  • 问题内容: 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我试图找到一个目录中存在的文件,而不是另一个目录中的文件,我尝试使用以下命令: 与上面的命令,它会找到这两个文件的问题,但不是还有文件而不是在, 我试图在文件中找到文件,但不仅在其中。 这是我的数据的一小部分样本 在我脑海里的另一个问题是,我怎么能找到的文件,而不是在或在一个单一的命令?

  • 我的程序从不是项目根目录的位置读入文档。文档包含一个相对路径。当程序应用该路径时,它确实从项目的根目录开始。如何使其应用来自文档原始位置的路径? 以下是细节。有点长,但很简单。 我在Eclipse中有一个Java项目,位于 该程序运行一个XSL转换,该转换以Schematron模式作为输入,并产生一个新的XSLT样式表作为输出 它包含这一行,还有几条类似的: 如果从模式的位置开始,并应用该相对路径

  • 我使用Apache Maven来管理我的Java库(jar)和一些使用这些库的项目。为了方便起见,我使用生成Eclipse项目文件,这些文件可以导入Eclipse工作区进行编辑。 当我在同一个Eclipse工作区中编辑主项目和Java库项目时会出现问题。也就是说,在文件中包含了src路径依赖项,而不是预期的依赖项。 和工作完美,其中是从我的repo自动下载的。但是,当尝试时,我发现生成的文件没有像