29

Vagrant、VirtualBox、および Ansible をインストールし、1 つのホストでプロビジョニングを実行しようとしましたが、常に「skipping: no hosts matching」が返されます。

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

---
- hosts: webservers
  user: vagrant
  sudo: yes

私の/etc/ansible/hostsファイルは次のようになります。

[webservers]
webserver1

そこにIPアドレスを入れてみましたが、同じ結果でした。ssh キーをサーバーに追加し、webserver1 ホストを と の両方に追加しまし.ssh/config/etc/hosts

ssh vagrant@webserver1ssh キーを使用したおかげで、パスワードの入力を求められることなく問題なく使用できます。

ここで何が欠けていますか?

  • ホスト: Debian 7.2
  • クライアント マシン: Debian 7
  • バーチャルボックス: 4.1.18
  • バングランタップ: 1.4.1
  • アンシブル: 1.5
4

9 に答える 9

30

Vagrantfile と ansible インベントリ ファイルを投稿すると役立つ場合があります。

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

    を指定しましたinventory_pathか?

config.vm.provision :ansible do |ansible|
   ansible.playbook = "provisioning/playbook.yml"
   ansible.inventory_path = "provisioning/ansible_hosts"
 終わり
  • --connection=local/etc/ansible/hostsを試して vagrant ssh 経由で起動していますか?
[ウェブサーバー1]
127.0.0.1 ansible_connection=ローカル
  • ansibleLocal プロバイダー / vagrant プラグインを使用していますか?
于 2014-01-24T14:12:57.073 に答える
27

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

于 2014-07-27T17:14:54.947 に答える
21

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

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

コード:

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

    ansible.playbook = "provisioning/playbook.yml"
end
于 2014-11-08T20:57:37.553 に答える
9

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

---
- hosts: all
  user: vagrant
  sudo: yes
于 2014-04-29T15:12:24.413 に答える
3

私が最初に思いつくのは、プレイブック ファイルの先頭の構文が正しくないことです (本来あるべきではない場所に余分なダッシュが含まれています)。代わりに、次のようになります。

---
- hosts: webservers
  user: vagrant
  sudo: yes
于 2013-12-27T23:44:52.600 に答える
2

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

ansible.groups = {
  'webservers' => ['default']
}
于 2016-09-16T11:01:06.580 に答える
1

最後に -vvvv を追加すると、プレイブックを詳細モードで実行できます。Ansible uses host file from /etc/ansible/hosts 以下を追加

ansible で使用されているインベントリ ファイルを以下で確認できます。

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"

}

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

于 2016-01-29T10:28:59.553 に答える
-5

このコマンド「ansible-playbook -i yourhosts your.yml」を必ず使用してください。

于 2015-02-14T08:57:37.520 に答える