【问题标题】:Ansible: no hosts matchedAnsible:没有匹配的主机
【发布时间】:2016-07-05 12:20:32
【问题描述】:

我正在尝试在 Ansible 上执行我的第一个远程 shell 脚本。我首先生成并复制了 SSH 密钥。这是我的 yml 文件:

---
- name: Ansible remote shell
  hosts: 192.168.10.1
  user: myuser1
  become: true
  become_user: jboss
  tasks:
    - name: Hello server
      shell: /home/jboss/script.sh

然而,当启动 playbook 时,结果是“没有匹配的主机”:

ansible-playbook setup.yml 

PLAY [Ansible remote shell
******************************************** 
skipping: no hosts matched

PLAY RECAP ******************************************************************** 

我也尝试使用主机名(而不是 IP 地址),但没有任何改变。有什么帮助吗?

【问题讨论】:

  • 同样的问题。为什么即使 ansible.cfg 是使用清单文件路径定义的,ansible 也找不到清单文件。我正在尝试从 ansible.cfg 所在的同一目录运行剧本。顺便说一句,ansible-playbook --version 显示了我的配置文件,这意味着它应该可以工作。

标签: ansible ansible-playbook


【解决方案1】:

您需要定义主机清单。

默认路径是/etc/ansible/hosts(也如helloV所述)。

举个简单的例子,您还可以在命令行中指定清单:

ansible-playbook setup.yml -i 192.168.10.1,

结尾的逗号使它成为一个列表,以便 ansible 直接解析它。否则你可以运行

ansible-playbook setup.yml -i myinventory

其中myinventory 是列出您的主机的文件。

【讨论】:

  • 感谢您的友好回复和命令行中的最小示例
  • 我可以保留两个主机清单 - /etc/ansible/hosts 并指定 -i hostip 吗?
  • 我找不到我的/etc/ansible/hosts。它一直告诉我找不到目录
  • 你能用“localhost”吗?
  • 只需要在IP后添加,
【解决方案2】:

Ansible 对您的主机一无所知。如果它在动态清单中,您可以使用 -i 选项传递清单脚本或编辑 /etc/ansible/hosts 并为您的主机添加一个条目,例如:

[myhost]
192.168.10.1

并将剧本中的主机指定为:

hosts: myhost

【讨论】:

  • 非常感谢您的回复
  • @helloV 这是 .ini 文件还是 .yml?
【解决方案3】:

我们必须在 ansible 中创建一个 Inventory 文件,我们需要为
提供 IP 地址文件的位置 按名称创建文件/ip.txt
并提供上述创建的文件在您的库存中的路径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2017-01-28
    • 2022-06-10
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多