我已经安装了Vagrant,VirtualBox和Ansible并尝试在一台主机上运行配置,但它总是返回“正在跳过:没有主机匹配”
我的playbook文件的头部如下所示:
---
- hosts: webservers
user: vagrant
sudo: yes
我的/etc/ansible/hosts
文件如下所示:
[webservers]
webserver1
我尝试将IP地址放在那里,但结果相同。我已将ssh密钥添加到服务器,并将webserver1主机添加到.ssh/config
和/etc/hosts
。
由于使用了ssh密钥,我可以ssh vagrant@webserver1
没有提示输入密码。
我在这里缺少什么?
答案 0 :(得分:30)
发布您的Vagrant文件和您的安全库存文件会有所帮助。
您是否正在使用vagrant的默认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 [webserver1] 127.0.0.1 ansible_connection=local
答案 1 :(得分:27)
确保您正在运行ansible-playbook命令而不是纯ansible命令。
答案 2 :(得分:19)
我认为您也可以在没有主机文件的情况下通过在Vagrant文件中分配Ansible组来执行此操作。
如果您的Vagrant文件中没有多台计算机,您的框可能会被调用"默认"并且您将能够使用以下代码添加多个Ansible组。
代码:
config.vm.provision "ansible" do |ansible|
ansible.groups = {
"webservers" => ["default"],
"dev_enviroment" => ["default"]
}
ansible.playbook = "provisioning/playbook.yml"
end
答案 3 :(得分:9)
将主机更改为"所有"为我工作。
---
- hosts: all
user: vagrant
sudo: yes
答案 4 :(得分:3)
对我而言,第一件事是你的剧本文件头部的语法是不正确的(它有额外的破折号,它不应该)。它看起来应该是这样的:
---
- hosts: webservers
user: vagrant
sudo: yes
答案 5 :(得分:2)
根据vagrant文档(http://docs.vagrantup.com/v2/provisioning/ansible.html),当您使用Ansible进行配置时,vagrant将自动创建一个名为vagrant_ansible_inventory_default
的主机文件,该文件将使用vagrant vm.config inforamtion(如您的VM IP,远程ssh端口)。
所以只需使用ansible.playbook = "playbook.yml"
答案 6 :(得分:1)
您可以通过最后添加-vvvv以详细模式运行您的剧本。 Ansible使用/ etc / ansible / hosts中的主机文件 添加以下
您可以通过以下
查看您的ansible正在使用的库存文件ansible --version
ansible 2.0.0.2
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
然后检查您的主机文件是否包含主机的确切组
vim /etc/ansible/hosts
[webserver1]
IP of machine
运行以下命令检查
ansible -m ping 10.0.3.145 (IP Of machine)
10.0.3.145 | SUCCESS => {
"changed": false,
"ping": "pong"
}
这应解决问题。
答案 7 :(得分:1)
我尝试将这些组指向默认的流浪盒并且它有效。参考 https://gagor.pl/2015/12/ansible-on-vagrant-skipping-no-hosts-matched/
ansible.groups = {
'webservers' => ['default']
}
答案 8 :(得分:-4)
确保使用此命令“ansible-playbook -i yourhosts your.yml”