

Vagrantで複数のVMをKVM上に作成し、ansibleで操作しようとしているのですがうまくいきません。  
具体的な症状としては、

  * 指定したIPアドレスが割り振られない
  * SSHコネクションがタイムアウトする

を確認しております。  
環境は  
Vagrant:2.0.0  
ansible:2.3.2.0  
openssh:1.0.2k-fips  
libvirtd:3.2

ネットワーク設定は、KVM標準のvirbr0を使い、192.168.1.0/24 <-> 192.168.122.0/24  
のブリッジ接続をしております。

Vagrantfileは下記の通りです。

[code]

    # -*- mode: ruby -*-
    # vi: set ft=ruby :   
    
      config.vm.define :node1 do |t|
        t.vm.box = "centos7.3"
        t.vm.hostname = "node1"
        t.vm.network "private_network", ip: "192.168.122.101"
      end
      config.vm.define :node2 do |t|
        t.vm.box = "centos7.3"
        t.vm.hostname = "node2"
        t.vm.network "private_network", ip: "192.168.122.102"
      end
    
    
      # conf for ansible
      config.vm.provision "ansible" do |ans|
       ans.playbook = "ansible/vagrant.yml"
       ans.inventory_path = "ansible/hosts"
       ans.limit = "all"
      end
    
    
      config.vm.provider :libvirt do |lv|
        lv.management_network_name = "default"
        lv.management_network_address = "192.168.122.30/24"
        lv.storage_pool_name = "kvm_storage"
      end
    
    end
    
[/code]

ansibleのプレイブックとhostsファイルは下記の通りです。

ansible/vagrant.yml  
\- hosts: vagrant  
remote_user: vagrant  
sudo: yes  
tasks:  
\- name: yum install nmap  
yum: name=nmap

ansible/hosts  
[vagrant]  
192.168.122.101  
192.168.122.102


CC BY-SA 3.0
2017-10-13T16:44:07.133
38684
2018-11-01T14:00:41.103
19500
question
vagrant ansible
KVM+Vagrant+ansibleで複数のVMを立てたい


自己解決しました。

Vagrantの標準機能である、inventoryの自動生成機能を知らずホストを手動で指定していることが原因でした。

最終的に作成したVagrantfileとplaybookを添付します。

[code]

    Vagrant.configure("2") do |config|
      # The most common configuration options are documented and commented below.
      # For a complete reference, please see the online documentation at
      # https://docs.vagrantup.com.
    
      # Every Vagrant development environment requires a box. You can search for
      # boxes at https://vagrantcloud.com/search.
    
      config.vm.box = "centos7.3"
      N = 2
      (1..N).each do |id|
        config.vm.define "host#{id}" do |node|
          node.vm.hostname = "host#{id}"
    #      node.vm.network  "private_network", ip: "192.168.122.#{100+id}"
    
          if id == N
            node.vm.provision :ansible do |ans|
              ans.limit = "all"
              ans.playbook = "vagrant.yml"
            end
          end
        end
      end
       config.vm.provider :libvirt do |lv|
        lv.management_network_name = "default"
        lv.management_network_address = "192.168.122.30/24"
        lv.storage_pool_name = "kvm_storage"
      end
    end
    
    
    
    
    - hosts: all
       remote_user: vagrant
       sudo: yes
       tasks:
         - name: yum install nmap
           yum: name=nmap
    
[/code]


CC BY-SA 3.0
2017-10-14T02:59:14.120
38687
2017-10-14T02:59:14.120
19500
38684
answer