出于测试目的,我已经配置了vagrant / virtualbox / ansible的组合 .
版本>> Ansible:2.3.1.0 |流浪汉:1.9.5 .
在跑步的时候 :
vagrant provision
输出状态:
web1: Running provisioner: ansible...
web1: Running ansible-playbook...
PLAY [Install Apache]
**********************************************************
skipping: no hosts matched
PLAY RECAP
****************************************************************
在配置文件下面:
Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.define "web1"
config.vm.network "private_network", type: "dhcp"
config.vm.network "forwarded_port", guest: 8040, host: 8090
config.vm.provider "virtualbox" do |vb|
vb.memory = "256"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "provisioning/playbook.yml"
end
end
end
手册:
---
- name: Install Apache
hosts: testclients
become_user: root
roles:
- apache
安全库存(/ etc / ansible / hosts):
[testclients]
testclient3
并成功检查
ansible -m ping testclients
testclient3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
奇怪的是,如果我将运行剧本本身(ansible-playbook playbook.yml)它可以工作,相反在没有的流浪者中并且返回“没有主机匹配” . 任何帮助,将不胜感激 .
1 回答
由于您没有声明Vagrant使用的库存文件,因此它不匹配,因此它不会返回与testclients匹配的主机 .
您有以下选项可以解决您的问题
在Playbook定义中,更改主机定义
即使它最终不是你想要的,试一试只是为了确保一切正常 .
在你的Vagrantfile中
您需要确保告知如何访问实例,以便您需要清单
你需要流浪汉来设置groups
vagrant将生成库存文件