了解Ansible功能的搜索路径和目录

时间:2019-07-11 03:41:25

标签: search path ansible ansible-inventory

我目前正在研究Ansible以各种方式使用搜索路径的方式。如果这些想法没有联系,我深表歉意,但是我将通过将它们分成几部分来尝试以最合乎逻辑的方式写这篇文章。

AnsiballZ:我知道Ansible在运行剧本时会搜索所有需要的模块,并将所有必要的模块和文件打包成zip文件,然后再将其解压缩到非主机上。目录的这种压缩和解压缩是否以任何方式更改目录格式?我进行了广泛的研究,但是除了将zip封装在python脚本中之外,没有发现其他zip文件格式的方法。

库存:调用Ansible-Playbook时,可以在文件路径中使用“ -I”。现在我知道这可以是终端的cwd所在的绝对路径或相对路径。例如,如果要在一个目录下调用清单文件,则将调用“ -I / DirecName / file”。因此,必须为库存路径指定从您所在位置开始的绝对路径或相对路径。有没有办法简单地给出文件名并让Ansible搜索所有cwd子文件夹?

剧本:剧本似乎主要反映了库存路径。例如,要调用剧本,您必须提供您所在位置的绝对或相对路径。但是,剧本中使用的任何文件都是相对于该剧本的位置的。 I.E如果您要引用剧本中的文件并且该剧本位于root的子文件夹中,则必须使用“ ../filename”来调用它。这是一种痛苦,并导致草率而精致的代码。有什么方法可以让根目录开始的剧本参考文件?我知道Ansible建议在文件夹的根目录级别插入剧本,但是当剧本数量增加时,这也会使目录混乱。此外,如果剧本位于文件的根目录下,您是否可以仅按名称提供剧本中引用的文件,并可以在剧本所在的cwd的子文件夹中搜索Ansible?而不是用“ / file / file / filename”命名每个文件?我编写了一个“查找”脚本来执行此操作,但是对于运行时来说并不令人惊讶。使得这一点很重要的是,如果我不知道子目录的名称,但是我知道文件的名称,我可以仅通过名称来调用该文件吗?

任务:如Ansible网站上所述,这里有两个不同的范围。任务评估和任务执行。任务评估据说是本地的。那么,这些任务是否仅在剧本目录中寻找?据说任务执行通常在远程,除非动作查找需要。是否需要给定目的地的确切文件路径?

Config:据说这些是相对于config文件的。因此,大多数配置将需要放置在项目的根目录中,因为这是Ansible建议放置配置文件的位置。有没有更好的方法来设置配置文件目录?

模块:我知道,如果在项目的根目录或剧本的目录中有一个标记为library /的文件,则在该模块中查找。如果没有,则在/ usr / share / ansible / modules中查找。是否在其他任何地方寻找模块?

我知道并非所有这些方法都有直接的答案,因为在这些小规模的主题上,某些Ansible行为似乎没有得到很好的记录。但是,我愿意就这些问题或任何观点进行任何讨论!

请注意:我已经对这些主题进行了广泛的研究,但是我当然有可能错过了一些东西。如果我错过了一些非常明显的事情,我深表歉意。

0 个答案:

没有答案