"пропуск: ни один из хостов не соответствует" с Vagrant and Ansible
Я установил Vagrant, VirtualBox и Ansible и попытался выполнить резервное копирование по одному хосту, но он всегда возвращает "пропуск: без хостов"
Глава моего файла playbook выглядит следующим образом:
---
- hosts: webservers
user: vagrant
sudo: yes
и мой файл /etc/ansible/hosts
выглядит следующим образом:
[webservers]
webserver1
Я попытался разместить там IP-адрес, но имел тот же результат. Я добавил свой ssh-ключ к серверу и добавил узел webserver1 как для .ssh/config
, так и /etc/hosts
.
Я могу ssh [email protected]
отлично, не запрашивая пароль, благодаря использованию ssh-ключа.
Что мне здесь не хватает?
- Host: Debian 7.2
- Клиентская машина: Debian 7
- Virtualbox: 4.1.18
- Vangrantup: 1.4.1
- Ansible: 1.5
Ответы
Ответ 1
Это может помочь опубликовать ваш Vagrantfile и ваш файл инвентаризации.
config.vm.provision :ansible do |ansible|
ansible.playbook = "provisioning/playbook.yml"
ansible.inventory_path = "provisioning/ansible_hosts"
end
- Вы запускаете его через бродячий ssh с помощью
--connection=local
попробуйте /etc/ansible/hosts
[webserver1]
127.0.0.1 ansible_connection=local
- Используете ли вы ansibleLocal провайдер/брандмауэр?
Ответ 2
Убедитесь, что вы используете команду unsible-playbook вместо чистой команды ansible.
Ответ 3
Я думаю, вы также можете сделать это без файла hosts, назначив группы Ansible в вашем файле Vagrant.
Если у вас нет нескольких машин в вашем бродячем файле, ваш блок, вероятно, будет называться "по умолчанию", и вы сможете добавить несколько групп Ansible со следующим кодом.
Код:
config.vm.provision "ansible" do |ansible|
ansible.groups = {
"webservers" => ["default"],
"dev_enviroment" => ["default"]
}
ansible.playbook = "provisioning/playbook.yml"
end
Ответ 4
Для меня работала замена хостов на "все".
---
- hosts: all
user: vagrant
sudo: yes
Ответ 5
Первое, что выпрыгивает на меня, - это то, что синтаксис на голове вашего файла плей-листа неверен (у него есть дополнительные тире, где он не должен). Это должно выглядеть так:
---
- hosts: webservers
user: vagrant
sudo: yes
Ответ 6
В соответствии с бродящей документацией (http://docs.vagrantup.com/v2/provisioning/ansible.html), когда вы используете Ansible для обеспечения, vagrant автоматически создаст файл хоста с именем vagrant_ansible_inventory_default
, который будет использовать vagrant vm.config inforamtion (например, ваш виртуальный IP-адрес, удаленный порт ssh).
Итак, просто добавьте свой путь к учебнику, используя ansible.playbook = "playbook.yml"
Ответ 7
Вы можете запустить свою игру в сложном режиме, добавив -vvvv в конце. Ansible использует файл хоста из /etc/ansible/hosts
добавьте ниже
Вы можете проверить, какой файл инвентаря используется вашим непонятным ниже
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"
}
Это должно устранить проблему.
Ответ 8
Я попытался указать группы на брандмауэр по умолчанию, и это сработало. обращаться
https://gagor.pl/2015/12/ansible-on-vagrant-skipping-no-hosts-matched/
ansible.groups = {
'webservers' => ['default']
}
Ответ 9
убедитесь, что вы используете эту команду "ansible-playbook -i yourhosts your.yml"