vm/vagrantで任意のユーザーでホストとファイル共有する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* やりたいこと [#n45c9d0b]
VMの /vagrant を、vagrant ホストのユーザーでマウントしたい
* 方針 [#g7aee6b0]
vagrant ホストと同じユーザーを作成し、VMの /vagrant を作...
ただし vagrant ホストの UID = 1000 の場合は(vagrantユー...
* Vagrantfile [#i8ab0519]
#prism(bash){{{
# -*- mwde: ruby -*-
# vi: set ft=ruby ff=unix expandtab ts=2 sw=2 :
# 環境変数でVM内のUSER/UID/GIDを指定(未定義ならばvagrant...
VUSER = ENV.fetch('VUSER', `whoami`.chomp)
VUID = ENV.fetch('VUID', `id -u`.chomp)
VGID = ENV.fetch('VGID', `id -g`.chomp)
Vagrant.configure("2") do |config|
config.vm.box = "bento/fedora-39"
# マウントオプションを明示的に指定
config.vm.synced_folder ".", "/vagrant", mount_options:...
config.vm.provision "shell", inline: <<-SHELL
set -x
# Vagrantfile 内で定義した変数をスクリプト内で使用
VUSER="#{VUSER}"
VUID="#{VUID}"
VGID="#{VGID}"
# 指定されたUIDとGIDを持つユーザーが存在しなければ作成
if ! getent group "$VGID"; then
groupadd -g "$VGID" "$VUSER"
fi
if ! getent passwd "$VUID"; then
useradd -d "/home/$VUSER" -m -s /bin/bash -u "$VUID...
fi
SHELL
end
}}}
* vagrant up したところ [#b6edcbd3]
#prism(bash){{{
$ vagrant up ...
Bringing machine 'default' up with 'virtualbox' provider....
==> default: Importing base box 'bento/fedora-39'... ...
==> default: Matching MAC address for NAT networking... ...
(略)
==> default: Mounting shared folders... ...
default: /home/bubka/work/vagrant-files/fedora => /va...
==> default: Detected mount owner ID within mount options...
==> default: Detected mount group ID within mount options...
==> default: Detected mount owner ID within mount options...
==> default: Detected mount group ID within mount options...
==> default: Running provisioner: shell... ...
default: Running: inline script ...
default: ++ VUSER=bubka ...
default: ++ VUID=1001 ...
default: ++ VGID=1001 ...
default: ++ getent group 1001 ...
default: ++ groupadd -g 1001 bubka ...
default: ++ getent passwd bubka ...
default: ++ useradd -d /home/bubka -m -s /bin/bash -u...
default: ++ chown -R bubka:bubka /home/bubka
}}}
* /vagrant の状態 [#xc694020]
所有者が(vagrantではなくて)bubka になっている
#prism(bash){{{
$ vagrant ssh -c 'sudo ls -laF /vagrant'
total 44
drwxrwxr-x. 1 bubka bubka 4096 Jan 6 14:53 ./
dr-xr-xr-x. 19 root root 250 Jan 6 15:28 ../
drwxrwxr-x. 1 bubka bubka 4096 Jan 6 13:35 .vagrant/
lrwxrwxrwx. 1 bubka bubka 27 Jan 6 14:53 Vagrantfile ...
-rw-rw-r--. 1 bubka bubka 4556 Jan 6 14:53 Vagrantfile....
-rw-rw-r--. 1 bubka bubka 1033 Jan 6 15:27 Vagrantfile....
}}}
終了行:
* やりたいこと [#n45c9d0b]
VMの /vagrant を、vagrant ホストのユーザーでマウントしたい
* 方針 [#g7aee6b0]
vagrant ホストと同じユーザーを作成し、VMの /vagrant を作...
ただし vagrant ホストの UID = 1000 の場合は(vagrantユー...
* Vagrantfile [#i8ab0519]
#prism(bash){{{
# -*- mwde: ruby -*-
# vi: set ft=ruby ff=unix expandtab ts=2 sw=2 :
# 環境変数でVM内のUSER/UID/GIDを指定(未定義ならばvagrant...
VUSER = ENV.fetch('VUSER', `whoami`.chomp)
VUID = ENV.fetch('VUID', `id -u`.chomp)
VGID = ENV.fetch('VGID', `id -g`.chomp)
Vagrant.configure("2") do |config|
config.vm.box = "bento/fedora-39"
# マウントオプションを明示的に指定
config.vm.synced_folder ".", "/vagrant", mount_options:...
config.vm.provision "shell", inline: <<-SHELL
set -x
# Vagrantfile 内で定義した変数をスクリプト内で使用
VUSER="#{VUSER}"
VUID="#{VUID}"
VGID="#{VGID}"
# 指定されたUIDとGIDを持つユーザーが存在しなければ作成
if ! getent group "$VGID"; then
groupadd -g "$VGID" "$VUSER"
fi
if ! getent passwd "$VUID"; then
useradd -d "/home/$VUSER" -m -s /bin/bash -u "$VUID...
fi
SHELL
end
}}}
* vagrant up したところ [#b6edcbd3]
#prism(bash){{{
$ vagrant up ...
Bringing machine 'default' up with 'virtualbox' provider....
==> default: Importing base box 'bento/fedora-39'... ...
==> default: Matching MAC address for NAT networking... ...
(略)
==> default: Mounting shared folders... ...
default: /home/bubka/work/vagrant-files/fedora => /va...
==> default: Detected mount owner ID within mount options...
==> default: Detected mount group ID within mount options...
==> default: Detected mount owner ID within mount options...
==> default: Detected mount group ID within mount options...
==> default: Running provisioner: shell... ...
default: Running: inline script ...
default: ++ VUSER=bubka ...
default: ++ VUID=1001 ...
default: ++ VGID=1001 ...
default: ++ getent group 1001 ...
default: ++ groupadd -g 1001 bubka ...
default: ++ getent passwd bubka ...
default: ++ useradd -d /home/bubka -m -s /bin/bash -u...
default: ++ chown -R bubka:bubka /home/bubka
}}}
* /vagrant の状態 [#xc694020]
所有者が(vagrantではなくて)bubka になっている
#prism(bash){{{
$ vagrant ssh -c 'sudo ls -laF /vagrant'
total 44
drwxrwxr-x. 1 bubka bubka 4096 Jan 6 14:53 ./
dr-xr-xr-x. 19 root root 250 Jan 6 15:28 ../
drwxrwxr-x. 1 bubka bubka 4096 Jan 6 13:35 .vagrant/
lrwxrwxrwx. 1 bubka bubka 27 Jan 6 14:53 Vagrantfile ...
-rw-rw-r--. 1 bubka bubka 4556 Jan 6 14:53 Vagrantfile....
-rw-rw-r--. 1 bubka bubka 1033 Jan 6 15:27 Vagrantfile....
}}}
ページ名: