ããã¯ããªã«ãããããŠæžãããã®ïŒ
èªåã¯Ubuntu Linuxäžã§Vagrantã䜿ã£ãŠããŠãVagrantã®Providerã«ã¯vagrant-libvirtã䜿ã£ãŠããŸãã
Providers | Vagrant by HashiCorp
GitHub - vagrant-libvirt/vagrant-libvirt: Vagrant provider for libvirt.
Synced Foldersã«ã€ããŠã¯ããŸã䜿ã£ãŠããªãã£ãã®ã§å°ã£ãŠããªãã£ãã®ã§ãããã¡ãã£ãšäœ¿ãããããšãåºãŠããã®ã§
調ã¹ãŠã¿ãããšã«ããŸããã
å®ã¯ä»¥åã«è»œãèŠãŠããã®ã§ããããã®æã¯ããã£ãšæµããŠããŸã£ããã§ãããã
vagrant-libvirtを使って仮想マシンを起動した時に、NFSが使えない場合にエラーになるのを回避する - CLOVER🍀
vagrant-libvirtãšSynced Folders
vagrant-libvirtã®ããSynced Foldersãã«é¢ããèšè¿°ãèŠãŠã¿ãŸãã
以äžã®3ã€ã®æ¹æ³ã䜿ããããã§ãã
ãã®ãã¡ãNFSã¯ãã¹ãåŽã®ãµããŒããå¿ èŠã«ãªãã®ã§ãã¡ãã£ãšé¢åâŠãã¹ãããã§ãã
ãããšã9pãrsyncãšããããšã«ãªããŸãã
vagrant-libvirtã§ãã¹ããšã²ã¹ãã®åæ¹åã®ãã©ã«ãåæãå¯èœãªã®ã¯ãNFSãš9pã§ããrsyncã®å Žåã¯ãèµ·åæã«ãã¹ãåŽãã
ã²ã¹ãåŽã«1床ã ãåæããããã®ã«ãªããŸãã
ã€ãŸããrsyncãéžãã å Žåã¯ãã²ã¹ãOSã®èµ·ååŸã«åæ察象ã®ãã©ã«ãããã¹ãåŽã§å€æŽããŠããã²ã¹ãåŽã«ã¯åæ ãããªã
ãšããããšã«ãªããŸããå®éããããªããŸãã
ã§ã¯ãã¡ãã£ãšè©ŠããŠã¿ãŸãããã
ç°å¢ã
$ vagrant --version Vagrant 2.2.9 $ vagrant plugin list vagrant-libvirt (0.0.45, global) - Version Constraint: > 0 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal $ uname -srvmpio Linux 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
ãŸãã¯ä»®æ³ãã·ã³ãäœæããŠãããŸãã
$ vagrant init generic/ubuntu2004
rsync
ãŸãã¯ãrsyncã䜿ã£ãŠã¿ãŸãã
Vagrantfileã«ã以äžãè¿œå ããŸãã
config.vm.synced_folder "./", "/vagrant", type: "rsync"
ã³ã¡ã³ãã¢ãŠããããŠããSynced Foldersã®å®çŸ©ãããã®ã§ããã®ãããã«è¿œå ããã®ãããã§ãããã
# Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. # config.vm.synced_folder "../data", "/vagrant_data"
èµ·åã
$ vagrant up
æåŸã«ããããªã¡ãã»ãŒãžã衚瀺ãããŸãã
==> default: Rsyncing folder: /path/to/ => /vagrant
ä»®æ³ãã·ã³ã«å ¥ã£ãŠã¿ãŸãããã
$ vagrant ssh
ä»åã®èšå®ã§ã¯ãã/vagrantããã£ã¬ã¯ããªã«Synced Folderã§èšå®ãããã£ã¬ã¯ããªã®äžèº«ãèŠããŠããŸãã
$ ll /vagrant total 12 drwxrwxr-x 2 vagrant vagrant 4096 Sep 10 08:50 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ -rw-rw-r-- 1 vagrant vagrant 3082 Sep 10 08:49 Vagrantfile
ããã§ããã¹ãåŽã§åæ察象ã®ãã£ã¬ã¯ããªäžã§ãã¡ã€ã«ãäœæããŠã¿ãŸãã
$ echo 'Hello World' > test.txt
ã²ã¹ãåŽã«ã¯ãåæ ãããŸããã
$ ll /vagrant total 12 drwxrwxr-x 2 vagrant vagrant 4096 Sep 10 08:50 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ -rw-rw-r-- 1 vagrant vagrant 3082 Sep 10 08:49 Vagrantfile
ãããåæ ããããã£ããã以äžãå®è¡ã
$ vagrant reload
åçŽãªOSåèµ·åïŒãsudo rebootããªã©ïŒã§ã¯ãã¡ã§ãã
ããããããã¡ã€ã«ã·ã¹ãã ãšããŠããŠã³ããããŠããããã§ããªãã§ããããã
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 951M 0 951M 0% /dev tmpfs tmpfs 199M 664K 199M 1% /run /dev/vda3 ext4 124G 2.1G 115G 2% / tmpfs tmpfs 994M 0 994M 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/vda1 ext4 456M 102M 321M 25% /boot tmpfs tmpfs 199M 0 199M 0% /run/user/1000
9pïŒPlan 9 Filesystem ProtocolïŒ
ç¶ããŠã¯ã9pã§ãã
ããã¯ãKVMç°å¢ã§ã®VirFSïŒæºä»®æ³ãã¡ã€ã«ã·ã¹ãã ïŒãšããŠæ©èœããŸãã
9pèªäœã¯ããã¡ããåç §ã
9pã䜿ã£ããã¡ã€ã«ã·ã¹ãã ã䜿ãã«ã¯ãã²ã¹ãåŽã®ãµããŒããå¿
èŠã«ãªããŸãããã£ãŠãå©çšã§ããªãç¶æ³ããããã
ãããŸããã
vagrant-libvirtã®ããã¥ã¡ã³ãã§ã¯ã以äžã®ã©ã¡ããã䜿ãããšæžããŠãããŸãã
config.vm.synced_folder './', '/vagrant', type: '9p', disabled: false, accessmode: "squash", owner: "1000" # or config.vm.synced_folder './', '/vagrant', type: '9p', disabled: false, accessmode: "mapped", mount: false
éãã¯ãªãã§ãããïŒ
ãŸããmount: falseããšãªã£ãŠããå Žåã¯ãèµ·åæã«ããŠã³ããè¡ãããŸããã
ownerã¯ãæåéãææè ã®uidãèšè¿°ããŠããŸãã1000ã¯ãvagrantãŠãŒã¶ãŒã®uidã§ãã
accessmodeãšã¯ïŒ
ãã¡ããèŠãã®ãè¯ãããã§ãã
21.16.2. ファイルシステム Red Hat Enterprise Linux 6 | Red Hat Customer Portal
passthrough - ã²ã¹ãä»®æ³ãã·ã³å ããèšå®ããããŠãŒã¶ãŒã®ã¢ã¯ã»ã¹æš©ã§ãœãŒã¹ãã¢ã¯ã»ã¹ãããããšãæå®ããŸããããã¯ãããããæå®ãããŠããªãå Žåã«ããã©ã«ãã® accessmode ã«ãªããŸãã
mapped - ãœãŒã¹ããã€ããŒãã€ã¶ãŒã®ã¢ã¯ã»ã¹æš©ã§ã¢ã¯ã»ã¹ãããããšãæå®ããŸãã
squash - 'passthrough' ã«äŒŒãŠããŸãããäŸå€ã¯ãchown ã®ãããªæš©éã«ããæäœã®å€±æãç¡èŠãããããšã§ããããã«ããããã€ããŒãã€ã¶ãŒã root 以å€ã§å®è¡ãããŠãŒã¶ãŒã«ãšã£ãŠãpassthrough ã®ãããªã¢ãŒãã䜿ãããããã®ãšããŸãã
squashãpassthroughã¯ã²ã¹ãåŽã®ãŠãŒã¶ãŒãäžå¿ã«ãªããmappedã¯ãã¹ãåŽã®æš©éãäžå¿ã«ãªãããšããããšã§ããã
確èªããŠã¿ãŸãããã
ãã¡ãããã
config.vm.synced_folder './', '/vagrant', type: '9p', disabled: false, accessmode: "squash", owner: "1000"
èµ·åæã«ã¯ããããªè¡šç€ºãåºãŸãã
==> default: Should be mounting folders ==> default: /vagrant, opts: {:disabled=>false, :guestpath=>"/vagrant", :hostpath=>"/path/to", :type=>:"9p", :accessmode=>"squash", :owner=>"1000", :__vagrantfile=>true, :target=>"/vagrant", :mount=>true, :readonly=>nil, :mount_tag=>"a68e78e76b9b38fcd41945093f0dfb1"}
ä»®æ³ãã·ã³ã«SSHã§å ¥ã£ãŠãããŠã³ãããŠãããã¡ã€ã«ã·ã¹ãã ãèŠãŠã¿ãŸãããã
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 951M 0 951M 0% /dev tmpfs tmpfs 199M 668K 199M 1% /run /dev/vda3 ext4 124G 2.1G 115G 2% / tmpfs tmpfs 994M 0 994M 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/vda1 ext4 456M 102M 321M 25% /boot a68e78e76b9b38fcd41945093f0dfb1 9p 269G 244G 12G 96% /vagrant tmpfs tmpfs 199M 0 199M 0% /run/user/1000
ã/vagrantããã9pããã¡ã€ã«ã·ã¹ãã ã§ããŠã³ããããŠããŸãã
確èªã
$ ll /vagrant/ total 16 drwxrwxr-x 3 vagrant vagrant 4096 Sep 10 09:35 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ drwxrwxr-x 5 vagrant vagrant 4096 Sep 10 08:50 .vagrant/ -rw-rw-r-- 1 vagrant vagrant 3192 Sep 10 09:35 Vagrantfile
ãã¹ãåŽã§ãã¡ã€ã«ãäœã£ãŠã¿ãŸãã
$ echo 'Hello World' > test.txt
ãããšãã²ã¹ãåŽã«ã衚瀺ãããŸãã
$ ll /vagrant/ total 20 drwxrwxr-x 3 vagrant vagrant 4096 Sep 10 09:37 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ -rw-rw-r-- 1 vagrant vagrant 12 Sep 10 09:37 test.txt drwxrwxr-x 5 vagrant vagrant 4096 Sep 10 08:50 .vagrant/ -rw-rw-r-- 1 vagrant vagrant 3192 Sep 10 09:35 Vagrantfile $ cat /vagrant/test.txt Hello World
ãã ãããã«ãã¡ã€ã«ã¯äœããªãããã§ããã
$ mkdir /vagrant/dir mkdir: cannot create directory â/vagrant/dirâ: Permission denied $ sudo mkdir /vagrant/dir mkdir: cannot create directory â/vagrant/dirâ: Operation not permitted
ãã¹ãåŽãããç·©ããã£ã¬ã¯ããªãäœã£ãŠã¿ãŸãã
$ mkdir dir $ chmod 777 dir
確èªã
$ ll /vagrant/ total 24 drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:38 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:38 dir/ -rw-rw-r-- 1 vagrant vagrant 12 Sep 10 09:37 test.txt drwxrwxr-x 5 vagrant vagrant 4096 Sep 10 08:50 .vagrant/ -rw-rw-r-- 1 vagrant vagrant 3192 Sep 10 09:35 Vagrantfile
ã²ã¹ãåŽããèŠããŸãã
æžã蟌ãã§ã¿ãŸãããã
$ echo 'from Guest' > /vagrant/dir/hello.txt
ãããªãããŸããããŸããã
æš©éãèŠãŠã¿ããšããããªæãã«ã
$ ll /vagrant/dir total 12 drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:39 ./ drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:38 ../ -rw-rw-r-- 1 64055 127 11 Sep 10 09:39 hello.txt
ãã¹ãåŽããèŠããšããããªã£ãŠããŸãã
$ ls -l dir åèš 4 -rw-rw-r-- 1 libvirt-qemu kvm 11 9æ 10 18:39 hello.txt
ã²ã¹ãåŽãããæžã蟌ããããšã¯ã確èªã§ããŸãããã
1床ããã¹ãåŽãããã¡ã€ã«ããã£ã¬ã¯ããªãåé€ã
$ rm test.txt $ rm -rf dir
æåŸã«ããã¡ãã確èªããŠã¿ãŸãã
config.vm.synced_folder './', '/vagrant', type: '9p', disabled: false, accessmode: "mapped", mount: false
==> default: Should be mounting folders ==> default: /vagrant, opts: {:disabled=>false, :guestpath=>"/vagrant", :hostpath=>"/path/to", :type=>:"9p", :accessmode=>"mapped", :mount=>false, :__vagrantfile=>true, :target=>"/vagrant", :readonly=>nil, :mount_tag=>"a68e78e76b9b38fcd41945093f0dfb1"}
ä»®æ³ãã·ã³ã«SSHã§å ¥ã£ãŠã¿ããšããã£ã¬ã¯ããªã¯ããŠã³ããããŠããŸããã
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 951M 0 951M 0% /dev tmpfs tmpfs 199M 660K 199M 1% /run /dev/vda3 ext4 124G 2.1G 115G 2% / tmpfs tmpfs 994M 0 994M 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/vda1 ext4 456M 102M 321M 25% /boot tmpfs tmpfs 199M 0 199M 0% /run/user/1000
ããã¯ããmount: falseãã«ããŠããããã§ãããèµ·åæã«ããŠã³ããããªãã®ã§ãã
ããŠã³ãããŸããããèµ·åæã«è¡šç€ºãããŠãããã:mount_tag=>"a68e78e76b9b38fcd41945093f0dfb1"ããšãããmount_tagãã®
å€ã䜿ããŸãã
$ sudo mount -t 9p a68e78e76b9b38fcd41945093f0dfb1 /vagrant
ããŠã³ããããã¡ã€ã«ã·ã¹ãã ã®çš®é¡ã¯ã9pã§ãã
èŠããããã«ãªããŸããã
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 951M 0 951M 0% /dev tmpfs tmpfs 199M 660K 199M 1% /run /dev/vda3 ext4 124G 2.1G 115G 2% / tmpfs tmpfs 994M 0 994M 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/vda1 ext4 456M 102M 321M 25% /boot tmpfs tmpfs 199M 0 199M 0% /run/user/1000 a68e78e76b9b38fcd41945093f0dfb1 9p 269G 244G 12G 96% /vagrant
å
ã»ã©ãšåãããã«ããã¹ãåŽã§ãã¡ã€ã«ããã£ã¬ã¯ããªãäœã£ãŠãããŸãã
â»ã²ã¹ãåŽããã/vagrantããã£ã¬ã¯ããªã«ãã¡ã€ã«çãäœããªãã®ã¯åãã ã£ãã®ã§
$ echo 'Hello World' > test.txt $ mkdir dir $ chmod 777 dir
ã²ã¹ãåŽããã®æžã蟌ã¿ã
$ echo 'from Guest' > /vagrant/dir/hello.txt
ã²ã¹ãåŽããã¯ããããªæãã«èŠããŸãã
$ ll /vagrant total 24 drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:48 ./ drwxr-xr-x 20 root root 4096 Sep 10 08:51 ../ drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:48 dir/ -rw-rw-r-- 1 vagrant vagrant 12 Sep 10 09:47 test.txt drwxrwxr-x 5 vagrant vagrant 4096 Sep 10 08:50 .vagrant/ -rw-rw-r-- 1 vagrant vagrant 3303 Sep 10 09:44 Vagrantfile $ ll /vagrant/dir total 16 drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:48 ./ drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:48 ../ -rw-rw-r-- 1 vagrant vagrant 11 Sep 10 09:48 hello.txt
äžæ¹ããã¹ãåŽããã¯ããèŠããŸãã
$ ls -l dir åèš 8 -rw------- 1 libvirt-qemu kvm 11 9æ 10 18:48 hello.txt
éãã¯ãã²ã¹ãåŽããèŠãæã®ãã²ã¹ãåŽã§äœã£ããã¡ã€ã«ã®ææè ã§ããã
$ ll /vagrant/dir total 12 drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:39 ./ drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:38 ../ -rw-rw-r-- 1 64055 127 11 Sep 10 09:39 hello.txt $ ll /vagrant/dir total 16 drwxrwxrwx 2 vagrant vagrant 4096 Sep 10 09:48 ./ drwxrwxr-x 4 vagrant vagrant 4096 Sep 10 09:48 ../ -rw-rw-r-- 1 vagrant vagrant 11 Sep 10 09:48 hello.txt
ãã¹ãåŽããèŠãæã¯å€ãããªãã®ã§ããã
ã¡ãªã¿ã«ãæåŸã«è©Šããèšå®ã§ã
config.vm.synced_folder './', '/vagrant', type: '9p', disabled: false, accessmode: "mapped", mount: true
ãšããããã«ãmount: trueããšããŠããã°ãèµ·åæã«ãã£ã¬ã¯ããªãããŠã³ãããŠãããŸãã
ãã ã極åãsquashãã®æ¹ã䜿ã£ãæ¹ããããã§ããããã