web-dev-qa-db-ja.com

VagrantとAnsibleの「スキップ:一致するホストがありません」問題

Vagrant、VirtualBox、およびAnsibleをインストールし、1つのホストでプロビジョニングを実行しようとしましたが、常に「スキップ:一致するホストがありません」を返します

プレイブックファイルのヘッドは次のようになります。

---
- 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
28
Dubby

Vagrantfileとansible inventoryファイルを投稿すると役立ちます。

  • Vagrantのデフォルトのansibleプロバイダーを使用していますか?

    inventory_pathを指定しましたか?

 config.vm.provision:ansible do | ansible | 
 ansible.playbook = "provisioning/playbook.yml" 
 ansible.inventory_path = "provisioning/ansible_hosts" 
 終わり
  • --connection=localを使用してvagrant sshから起動しますか/ etc/ansible/hostsを試してください
 [webserver1] 
 127.0.0.1 ansible_connection = local 
  • AnsibleLocalプロバイダー/ vagrantプラグインを使用していますか?
30
mestachs

純粋なansibleコマンドではなく、ansible-playbookコマンドを実行していることを確認してください。

27

VagrantファイルでAnsibleグループを割り当てることにより、hostsファイルなしでこれを行うこともできると思います。

Vagrantファイルに複数のマシンがない場合、ボックスはおそらく「デフォルト」と呼ばれ、次のコードで複数のAnsibleグループを追加できます。

コード:

config.vm.provision "ansible" do |ansible|
    ansible.groups = {
        "webservers" => ["default"],
        "dev_enviroment" => ["default"]
    }

    ansible.playbook = "provisioning/playbook.yml"
end
20
Theo Kouzelis

ホストを「すべて」に変更するとうまくいきました。

---
- hosts: all
  user: vagrant
  Sudo: yes
9
Theo Kouzelis

私に最初に飛び出したのは、プレイブックファイルの先頭の構文が間違っていることです(追加すべきではないダッシュが追加されています)。代わりに次のようになります。

---
- hosts: webservers
  user: vagrant
  Sudo: yes
3
Lorin Hochstein

Vagrantのドキュメント( http://docs.vagrantup.com/v2/provisioning/ansible.html )によると、Ansibleをプロビジョニングに使用すると、vagrantは自動的にvagrant_ansible_inventory_defaultという名前のHostファイルを作成しますvagrant vm.config inforamtionを使用します(VM IP、リモートsshポートなど)。

したがって、ansible.playbook = "playbook.yml"を使用してPlaybookパスを追加するだけです

2

グループをデフォルトの浮浪者ボックスに向けてみましたが、うまくいきました。参照 https://gagor.pl/2015/12/ansible-on-vagrant-skipping-no-hosts-matched/

ansible.groups = {
  'webservers' => ['default']
}
1
Geetha

最後に-vvvvを追加することにより、プレイブックを冗長モードで実行できます。 Ansibleは/ etc/ansible/hostsのHostファイルを使用して以下を追加します

あなたはあなたのansibleによってどのインベントリファイルが使用されているかを以下で確認できます

ansible --version
ansible 2.0.0.2
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

次に、HostファイルにHostの正確なグループが含まれているかどうかを確認します

 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"

}

これで問題が解決するはずです。

1
Vaseem007