"跳过:没有主机匹配"与Vagrant和Ansible的问题

Dub*_*bby 28 debian virtualbox vagrant ansible

我已经安装了Vagrant,VirtualBox和Ansible并尝试在一台主机上运行配置,但它总是返回"正在跳过:没有匹配的主机"

我的playbook文件的头部看起来像这样:

---
- hosts: webservers
  user: vagrant
  sudo: yes
Run Code Online (Sandbox Code Playgroud)

我的/etc/ansible/hosts文件看起来像这样:

[webservers]
webserver1
Run Code Online (Sandbox Code Playgroud)

我尝试将IP地址放在那里,但结果相同.我已将ssh密钥添加到服务器并将webserver1主机添加到两者.ssh/config/etc/hosts.

ssh vagrant@webserver1由于使用了ssh密钥,我可以在没有提示输入密码的情况下使用.

我在这里错过了什么?

  • 主持人:Debian 7.2
  • 客户端机器:Debian 7
  • Virtualbox:4.1.18
  • Vangrantup:1.4.1
  • Ansible:1.5

mes*_*chs 30

它可以帮助发布您的Vagrantfile和您的ansible库存文件.

  • 您使用的是默认的ansrant ansible提供者吗?

    你指定了inventory_path吗?

 config.vm.provision :ansible do |ansible|
   ansible.playbook = "provisioning/playbook.yml"
   ansible.inventory_path = "provisioning/ansible_hosts"
 end
  • 你是通过--connection=local尝试/ etc/ansible/hosts 通过一个vagrant ssh启动它的吗?
[webserver1]
127.0.0.1              ansible_connection=local
  • 您使用的是ansibleLocal提供程序/ vagrant插件吗?

  • *关闭主题*@Dubby你应该把这个答案视为最好的答案,并给予mestachs信誉 (2认同)

Ric*_*fer 27

确保您正在运行ansible-playbook命令而不是纯ansible命令.


The*_*lis 20

我认为你也可以在没有主机文件的情况下通过在Vagrant文​​件中分配Ansible组来完成此操作.

如果您的Vagrant文​​件中没有多台计算机,则您的框可能会被称为"默认",您可以使用以下代码添加多个Ansible组.

码:

config.vm.provision "ansible" do |ansible|
    ansible.groups = {
        "webservers" => ["default"],
        "dev_enviroment" => ["default"]
    }

    ansible.playbook = "provisioning/playbook.yml"
end
Run Code Online (Sandbox Code Playgroud)

  • 这很完美,它让我使用Vagrant的自动生成的主机文件. (2认同)

The*_*lis 9

将主机更改为"all"对我有用.

---
- hosts: all
  user: vagrant
  sudo: yes
Run Code Online (Sandbox Code Playgroud)


Lor*_*ein 3

我首先想到的是你的剧本文件头部的语法不正确(它在不应该的地方有额外的破折号)。它应该看起来像这样:

---
- hosts: webservers
  user: vagrant
  sudo: yes
Run Code Online (Sandbox Code Playgroud)