如何在特定主机上运行 ansible:ansible-playbook -i <hostname>,

CIs*_*ies 2 ansible

文档指定我可以使用 -i 在特定主机上运行我的剧本:

模式和 ansible-playbook 标志

您可以使用命令行选项更改剧本中定义的模式的行为。例如,您可以通过指定 -i 127.0.0.2, 运行定义主机的剧本:所有主机上。即使您的目标主机未在您的清单中定义,这也有效。您还可以使用 --limit 标志限制您针对特定运行的目标主机:*

但是,我尝试运行ansible-playbook <playbook> -i <new_hostname> -u <username>并且使用的库存仍然是我的默认库存。如何正确使用它?

Vla*_*tka 6

引自“man ansible”

-i, --inventory, --inventory-file 指定库存主机路径逗号分隔的主机列表

要将单个主机指定为“逗号分隔的主机列表”,仍然需要逗号。例如,剧本

shell> cat playbook.yml
- hosts: all
  gather_facts: false
  tasks:
    - debug:
        var: inventory_hostname
Run Code Online (Sandbox Code Playgroud)

shell> ansible-playbook -i test_99, playbook.yml

PLAY [all] ****

TASK [debug] ****
ok: [test_99] => 
  inventory_hostname: test_99
Run Code Online (Sandbox Code Playgroud)

如果主机后没有逗号,Ansible 将参数作为“清单主机路径”。

shell> ansible-playbook -i test_99 playbook.yml
[WARNING]: Unable to parse /scratch/test_99 as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'

PLAY [all] ****
skipping: no hosts matched
Run Code Online (Sandbox Code Playgroud)