ラベル Vagrant の投稿を表示しています。 すべての投稿を表示
ラベル Vagrant の投稿を表示しています。 すべての投稿を表示

2023年6月13日火曜日

Vagrant で vmdk を圧縮する方法

Vagrant で vmdk を圧縮する方法

概要

VM 上では容量を使用していないのに知らぬ間に肥大化していることがあります
そんな場合に vmdk ファイルを圧縮する方法を紹介します

ファイル名や UUID の部分は適宜変更してください

環境

  • macOS 11.7.6
  • vagrant 2.3.4
  • VirtualBox 7.0.6

ゼロ埋め

  • sudo dd if=/dev/zero of=zero bs=4k; \rm zero

圧縮

  • cd "/Users/username/VirtualBox VMs/vm_default_xxxx/"
  • VBoxManage clonehd ubuntu-bionic-18.04-cloudimg.vmdk ubuntu-bionic-18.04-cloudimg.vdi --format vdi
  • VBoxManage modifyhd ubuntu-bionic-18.04-cloudimg.vdi compact
  • VBoxManage clonehd ubuntu-bionic-18.04-cloudimg.vdi ubuntu-bionic-18.04-cloudimg_2.vmdk --format vmdk

vdi ファイル削除

  • VBoxManage list hdds
  • VBoxManage closemedium disk cb44d740-7c42-41d2-b0cf-e3938e8e0ee8
  • rm buntu-bionic-18.04-cloudimg.vdi

ディスクデタッチ/アタッチ

  • VBoxManage list vms
  • VBoxManage storageattach 3fffffaa-db44-46b5-b669-77d21b173089 --storagectl "SCSI" --port 0 --device 0 --type hdd --medium "/Users/username/VirtualBox VMs/vm_default_xxxx/ubuntu-bionic-18.04-cloudimg_2.vmdk"

古い vmdk 削除

  • VBoxManage closemedium disk f8f59ec9-2d06-47c2-87c9-29604a72b38f
  • rm ubuntu-bionic-18.04-cloudimg.vmdk

動作確認

  • vagrant up
  • vagrant ssh
  • rm /home/vagrant/zero
  • sudo reboot -h now

で問題なく動作することを確認しましょう

最後に

自分の場合は 17GB -> 4GB ほどになりました

2019年3月3日日曜日

MSEdge on Win10 を Vagrant で動かす

概要

Mac で Windows 環境がほしくなったので公式が出している IE or Edge でテストするための Vagrant Box イメージをダウンロードして使ってみました
Edge 版をダウンロードすれば IE11 も使えるようです

環境

  • macOS 10.14.3
  • Vagrant 2.1.1
  • Virtualbox 5.2.20r125813

Box ファイルをダウンロードする

Microsoft が公式で出している box ファイルがあるので使用します
ここからダウンロードしましょう

「MSEdげ on Win10 (x64) Stable (17.17134)」を選択しプラットホームに Vagrant を選択します
MSEdge.Win10.Vagrant.zip というファイルがダウンロードできました
ダウンロードできたら展開します

  • unzip MSEdge.Win10.Vagrant.zip

Vagrantfile

では Vagrantfile を作成しましょう

  • vagrant init
  • vim Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "./win10.box"
  config.vm.guest = "windows"
  config.ssh.username = "IEUser"
  config.ssh.password = "Passw0rd!"
  config.ssh.insert_key = false

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "2048"
    vb.customize ["modifyvm", :id, "--usb", "on"]
    vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'ESP', '--vendorid', '0x0458', '--productid', '0x00ea']
  end
end

全体としてはこんな感じです
とりあえず使ってみたければあとは vagrant up すれば OK です

解説

それぞれの設定項目を説明します
まず config.vm.box = "./win10.box"config.vm.guest = "windows" はダウンロードした Box ファイルとゲスト OS を指定しています
Box ファイルは名前を変更しています
vagrant はデフォルトだと linux がゲスト OS になっているので windows を指定します

config.ssh.username = "IEUser", config.ssh.password = "Passw0rd!", config.ssh.insert_key = false は認証情報です
Windows なので SSH はしないので false を指定します
あとは Windows 用の認証情報を指定します
今回ダウンロードした Box ファイルにはすでにユーザが作成されており ID/PW は IEUser/Passw0rd! になっているため指定します

あとは VM のスペックです
vb.gui = true は up 時に Virtualbox のウィンドウを表示するオプションです
vb.memory = "2048" はメモリです

残りの vb.customize ["modifyvm", :id, "--usb", "on"]vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'usb', '--vendorid', '0x0458', '--productid', '0x00ea'] はホスト側の USB を使用するオプションです
USB を使用しないのであれば削除してください
vendoridproductidVBoxManage list usbhost コマンドで表示される VendorIdProductId を入力してください
ちなみに USB を追加するとホスト側の USB が使えなくなるので注意してください (例えばマウスを使っている USB ポートを指定するとホスト側では動作しなくなり Windows 上でのみマウスが動作する感じです)

動作確認

up すればウィンドウが表示され Windows が起動しログインしていると思います
あとは Edge なり IE を立ち上げて使えば OK です
ちなみに今回の設定では NAT 通信だけなのでホストから Windows マシンに対する通信はできないのでご注意ください
必要であれば Vagrantfiile を編集して vboxnet0 などを追加してください

参考サイト

2018年4月22日日曜日

Mac 上に vagrant で CoreOS 環境を構築する

概要

Mac で docker を使う場合は docker for Mac を使っています
基本的にはこれで問題ないのですが mody がた

環境

  • macOS 10.13.4
  • vagrant 2.0.3
  • coreos vagrant (rev 62f3b54958aaef3b75d0ebaa254f7303ac2926c1)

CoreOS を立ち上げる

2375 でアクセスできるようにする

この作業は必須ではありません
CoreOS 上に ssh してそこで docker コマンドを叩いても OK です
Mac 上からアクセスしたいために 2375 ポートを LISTEN にします

  • vagrant ssh

ここから coreos 内での操作

  • sudo su -
  • vim /etc/systemd/system/docker-tcp.socket
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service

[Install]
WantedBy=sockets.target
  • systemctl enable docker-tcp.socket
  • systemctl stop docker
  • systemctl start docker-tcp.socket
  • systemctl start docker

これでリモートからアクセス出来るようになります

動作確認

今回は Mac 上から CoreOS 上の docker にアクセスします
Mac のターミナルから docker コマンドを使って以下のようにアクセスすることができます

  • docker -H 172.17.8.101:2375 info

IP の部分は Virtualbox の vboxnet のネットワークになります
ご自身の環境に併せて変更してください

vagrant の場合 VM 上のポートは localhost にフォーワードしてから使うということができます
2375 ポートも localhost にフォーワードしたいという場合は

  • mv config.rb.sample config.rb
  • vim config.rb
$expose_docker_tcp=2375

としてから再度 vagrant up すれば localhost でもアクセス出来ます

  • docker -H localhost:2375 info

最後に

Vagrant を使って CoreOS 環境を構築してみました
docker のバージョンもほぼ最新がインストールされてます
執筆時点の CoreOS では 18.03.0-ce がインストールされていました
ちなみに Mac 側のクライアントの docker は 18.04.0-ce-rc2 を使いました

今回はシングル構成で立ち上げる方法を紹介しましたが etcd を使ってクラスタ構成で立ち上げることもできるようです

参考サイト

2018年3月22日木曜日

macOS High Sierra に Vagrant をインストールして Ubuntu を構築する

概要

macOS High Sierra に Vagrant をインストールしてみました
ついでに Ubuntu を構築してみました

環境

  • macOS 10.13.2
  • vagrant 2.0.3
  • VirtualBox 5.1.30r118389

Vagrant のインストール

公式サイトから dmg をダウンロードしてインストールする必要があります
今回は vagrant_2.0.3_x86_64.dmg というインストーラがダウンロードできました

ダウンロードできたらダブルクリックして開きましょう
そして vagrant.pkg をダブルクリックして起動します
vagrant1.png

あとはインストーラの指示に従ってインストールすれば OK です
vagrant2.png

ターミナルを起動してコマンドが使えるか確認してみましょう

  • vagrant -v

Vagrant 2.0.3 と表示されれば OK です

Ubuntu を構築する

適当な作業用ディレクトリを作成しそこに Vagrantfiile を配置して構築します

  • mkdir -p /path/to/vagrant/ubuntu
  • cd /path/to/vagrant/ubuntu
  • touch Vagrantfilie
  • vim Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.network "private_network", type: "dhcp"
end
  • vagrant up

で起動します
今回は直接サーバにアクセスするので Host Only Adapter のネットワークを追加しています

ちなみに xenial64 だと Ubuntu 16.04 になります
他のバージョンの Ubuntu はこちらを参照してください

動作確認

  • vagrant ssh
  • ip a show

(一部抜粋)

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:64:a1:33 brd ff:ff:ff:ff:ff:ff
    inet 172.28.128.3/24 brd 172.28.128.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe64:a133/64 scope link 
       valid_lft forever preferred_lft forever

すでに vboxnet1 がすでにある環境で private_network を指定すると新規で vboxnet2 が出来て 172.28 帯を割り当てるようです
ホストマシンは 172.28.128.1 が割り当たっていました
ホストマシンから 172.28 帯でアクセスすることもできるようになっています

その他

停止

  • vagrant halt

削除

  • vagrant detroy

VirtualBox から確認

  • VBoxManage list vms

最後に

macOS 上に Vagrant をインストールしてみました
High Sierra でも特に問題なく使えるようです