Подтвердить что ты не робот

"пропуск: ни один из хостов не соответствует" с 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
4b9b3361

Ответ 1

Это может помочь опубликовать ваш Vagrantfile и ваш файл инвентаризации.

  • Используете ли вы по умолчанию недоступный поставщик бродяг?

    Вы указали inventory_path?

 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"

}

Это должно устранить проблему.

Ответ 9

убедитесь, что вы используете эту команду "ansible-playbook -i yourhosts your.yml"