Syntax 当Ansible中的--inventory选项的值后面带有逗号时,它是如何工作的?

Syntax 当Ansible中的--inventory选项的值后面带有逗号时,它是如何工作的?,syntax,ansible,Syntax,Ansible,ansible和ansible剧本的手册页将-i选项定义为: -i PATH, --inventory=PATH The PATH to the inventory hosts file, which defaults to /etc/ansible/hosts. 但要在本地系统上运行,示例中使用了以下语法: ansible -i "localhost," -c local -m ping localhost 这到底是什么?“localhost”,末尾带有逗号(否

ansible
ansible剧本
的手册页将
-i
选项定义为:

-i PATH, --inventory=PATH
       The PATH to the inventory hosts file, which defaults to
       /etc/ansible/hosts.
但要在本地系统上运行,示例中使用了以下语法:

ansible -i "localhost," -c local -m ping localhost

这到底是什么?“localhost”,末尾带有逗号(否则它被视为文件名),它与
路径有什么关系?

实际上,当您要对特定主机运行命令时,不要添加
-i
,而是按以下方式运行它:

ansible localhost -m ping 

使用
-i
仅指定动态资源清册或主机的路径

根据Ansible的创始人迈克尔·德安(Michael DeHann)的说法,你所指的逗号技巧是。在没有清单文件的情况下运行Ansible是一种黑客行为,在这种情况下,您将针对localhost运行Ansible。这样,您实际上不必创建一个只列出本地主机的清单文件。

这(至少现在)是一个有文档记录的功能。从:

-i、 --库存,--库存文件
指定清单主机路径或逗号分隔的主机列表--库存文件已弃用

(增加重点)

手册中仍然没有提到的是,“逗号分隔的主机列表”意味着您需要添加一个逗号,即使“列表”是单个项目,也要区分“目标主机名为<代码>主机名”:

和“从名为
hostname
的文件加载资源清册”:


如果有人有时间,也许你可以提交一个pull请求来更改以解释这一点(并在“逗号分隔”中添加一个连字符,但可能这只是我…)

这并不能完全回答“为什么在PATH参数的值中添加逗号会改变参数的解释”这适用于除localhost以外的主机,现在是一个文档化的特性
$ ansible -i 'hostname,' ...
$ ansible -i 'hostname,' ...