如何 运行 清单文件中缺少主机的 ansible 剧本

How to run ansible playbook with host missing in inventory file

我正在尝试 运行 一些简单的操作手册来从尚未包含在清单文件中的新设备收集数据。 这是我用来从清单文件中已有的设备收集数据的示例剧本:

- name: "Demonstrate connecting to ASA"
  connection: ansible.netcommon.network_cli
  gather_facts: false
  hosts: asa

  tasks:
    - name: Gather facts (asa)
      cisco.asa.asa_command:
        commands:
          - show inventory
      register: asa_vars

但我想要实现的是,我可以将系统的任何 IP 地址作为变量提供给 playbook,然后 playbook 在这个 IP 上执行任务,然后不在清单文件中。 我正在努力如何存档并告诉 ansible 使用给定的 IP 地址而不是清单中的主机。

我会为“host:”语句使用什么?我如何添加额外的参数,例如使用 SSH 堡垒主机,我通常会添加到清单文件中?

在你的剧本中:

- name: "Demonstrate connecting to ASA"
  connection: ansible.netcommon.network_cli
  gather_facts: false
  hosts: "{{ host }}"

在命令行上:

ansible-playbook myplaybook.yml --extra-vars "host=8.8.8.8"

也许您只是缺少在命令行上指定库存的有点神秘的语法?

如果 -i 是一个逗号分隔的列表,它将把它当作一个主机列表而不是一个文件,所以调用:

ansible-playbook -i 192.168.1.103, play.yml

尾随逗号的 运行 将在一台主机上播放。