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キーを使用したおかげで、パスワードの入力を求められることなく問題ありません。
ここに何が欠けていますか?
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
純粋なansibleコマンドではなく、ansible-playbookコマンドを実行していることを確認してください。
VagrantファイルでAnsibleグループを割り当てることにより、hostsファイルなしでこれを行うこともできると思います。
Vagrantファイルに複数のマシンがない場合、ボックスはおそらく「デフォルト」と呼ばれ、次のコードで複数のAnsibleグループを追加できます。
コード:
config.vm.provision "ansible" do |ansible|
ansible.groups = {
"webservers" => ["default"],
"dev_enviroment" => ["default"]
}
ansible.playbook = "provisioning/playbook.yml"
end
ホストを「すべて」に変更するとうまくいきました。
---
- hosts: all
user: vagrant
Sudo: yes
私に最初に飛び出したのは、プレイブックファイルの先頭の構文が間違っていることです(追加すべきではないダッシュが追加されています)。代わりに次のようになります。
---
- hosts: webservers
user: vagrant
Sudo: yes
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パスを追加するだけです
グループをデフォルトの浮浪者ボックスに向けてみましたが、うまくいきました。参照 https://gagor.pl/2015/12/ansible-on-vagrant-skipping-no-hosts-matched/
ansible.groups = {
'webservers' => ['default']
}
最後に-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"
}
これで問題が解決するはずです。