1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VMware FusionでVagrantを扱う

Last updated at Posted at 2020-06-06

はじめに

ansibleやserverspecを学習するにあたり、仮想マシン環境が欲しいと思いました。

vagrantのプロバイダはVirtualBoxが主流ですが
元からVMwareFusionがMACに入ってたので、VMware FusionをvagrantのProviderとしました。

環境

環境
Mac OS:10.15.4
vagrant version:2.2.9
vmware fusion pro: 11.5

vagrant環境の作成

vagrantのインストール

vagrant自体とプラグインをインストールします。

  • vagrant-hostsはbox同士で名前解決させるプラグイン
  • vagrant-vmware-desktopはproviderにvmwareを使えるようにするプラグイン
% brew cask install vagrant
% vagrant plugin install vagrant-hosts
% vagrant plugin install vagrant-vmware-desktop

ライセンスの購入

以下公式サイトからライセンスを購入します。2020年6月現在79ドルです。
購入時に登録したメールアドレス宛に、ライセンスダウンロードリンクがきます。

ライセンスの適用

ライセンスファイルをダウンロードしたら適用させます。

% vagrant plugin license vagrant-vmware-desktop ~/Downloads/license.lic

VMwareユーティリティのインストール

以下リンクのVMwareユーティリティをインストールします。

これでVMware Fusionをproviderにする準備が出来ました!

Vagrantfileの作成

適当なディレクトリを作成し、Vagrantfileを作成します。

  • ほとんど同じ構成で作りたかったので、each doで処理をまとめました
  • ホストOS(MAC)で作成したSSH公開鍵を貼り付けてキー認証出来るようにしています。
  • :hosts, :sync_hosts => trueによってbox同士が名前解決出来ます。
Vagrantfile
Vagrant.configure("2") do |config|
  # boxを3台分作成
  (1..3).each do |i|
    config.vm.define "node-#{i}" do |node|
      node.vm.box = "centos/7"
      node.vm.hostname = "node-#{i}"
      node.vm.network "private_network", ip: "192.168.33.1#{i}"
      node.vm.provision :hosts, :sync_hosts => true
      node.vm.provision "shell", inline: <<-SHELL
echo "- Copy Public Key"
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCrh2TAqqNE+BrMttioX3dWwxP9WdUktZmMsVRro1XI/f2u4KTJFQOo6tXB/Zq27LQ7bNn/sWLfXDib40oh3qCDs4UdWovlpg8xFQYZzD4BHYQIPjF0FaBVhLDSmrBBgvMMjgIZbRo8/iZgix/Ea05Yx1X05K528rcfDWk1HrkE043eBTaxELunVlcGIVWYtUoUKeT6N1YJSymSY7vzUZOw7Mj3q2z96cs2RNcwLoagquaKma1Px4srQ60RKO5VyvXhhnrpqmT3mE4fibDLFIAuqezfimMYZlTZFFI/Xwe9q0HrTf15TZAlmOAiIqFIBbVWBZMfnlT3GkI/sRPMAT9QePMA5FnKJ6s1Rrol0S+d/she/01xiZLf84Na0q4R8F2xdGtHbVEJFbO4zAGJ0DHn9RYEghY9NIdN62NiUZnwj7nNbcl0wMrOz4VVMPaPtQB+uPe0VsDffeaPjbz4OmxzOzNIzrJGJ7jLdOlKIskA5EfAwS20b3Htp+BFWWurK38= myname@mymac.local" >> /home/vagrant/.ssh/authorized_keys
SHELL
      node.vm.provider :vmware_desktop do |v|
        v.gui = false
        v.memory = "1024"
        v.cpus = "1"
      end
    end
  end
end

Vagrantfileを作成したら、そのディレクトリにいる状態でvagrant upします。

% vagrant up
% vagrant status
Current machine states:
node-1                    running (vmware_desktop)
node-2                    running (vmware_desktop)
node-3                    running (vmware_desktop)

boxが起動したら、秘密鍵を使って各boxにSSHが出来ます。

% ssh -i ~/.ssh/testkey vagrant@192.168.33.11
[vagrant@node-1 ~]$

boxから他のboxに名前でpingが出来ました。
/etc/hostsに普通に書かれていました。

[vagrant@node-1 ~]$ ping node-3
PING node-3 (192.168.33.13) 56(84) bytes of data.
64 bytes from node-3 (192.168.33.13): icmp_seq=1 ttl=64 time=0.956 ms
64 bytes from node-3 (192.168.33.13): icmp_seq=2 ttl=64 time=0.740 ms

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?