我已经安装了Vagrant,VirtualBox和Ansible并尝试在一台主机上运行配置,但它总是返回"正在跳过:没有匹配的主机"
我的playbook文件的头部看起来像这样:
--- - hosts: webservers user: vagrant sudo: yes
我的/etc/ansible/hosts
文件看起来像这样:
[webservers] webserver1
我尝试将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
mestachs.. 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认同)
Ricardo Maye.. 27
确保您正在运行ansible-playbook命令而不是纯ansible命令.
我认为你也可以在没有主机文件的情况下通过在Vagrant文件中分配Ansible组来完成此操作.
如果您的Vagrant文件中没有多台计算机,则您的框可能会被称为"默认",您可以使用以下代码添加多个Ansible组.
码:
config.vm.provision "ansible" do |ansible| ansible.groups = { "webservers" => ["default"], "dev_enviroment" => ["default"] } ansible.playbook = "provisioning/playbook.yml" end
确保您正在运行ansible-playbook命令而不是纯ansible命令.
它可以帮助发布您的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插件吗?
将主机更改为"all"对我有用.
--- - hosts: all user: vagrant sudo: yes