Передача текущего пользователя хоста vagrant shell Provider - PullRequest
0 голосов
/ 04 января 2019

Я хочу передать текущего пользователя в свой Vagrantfile, но я не уверен, как это сделать.

Я пробовал это:

config.vm.provision :shell, inline: "echo $(whoami) > /etc/profile.d/me"

Но это приводит к тому, что в файл помещается «root», который, как я полагаю, является пользователем бродячего хоста.Я хочу получить имя пользователя для хоста.

1 Ответ

0 голосов
/ 04 января 2019

Это потому, что ваш встроенный скрипт оболочки запускается внутри vagrant box.

Вы можете сделать это так:

Получить имя пользователя от хоста в зависимости от платформы (вы можете упростить это, если вы никогда не ожидаетехост Windows).

@host_user = Gem.win_platform? ? "#{ENV['USERNAME']}" : "#{ENV['USER']}"

Передайте имя пользователя с хоста в качестве переменной среды во время инициализации и используйте его во встроенном скрипте.

config.vm.provision "Passing host username as env var...", type: :shell, inline: $hostUser, env: {"HOST_USER" => "#{@host_user}"}

Добавьте это вне части ruby,затем он запускается с помощью приведенного выше кода и добавляет имя пользователя, переданное в качестве переменной среды, в указанный вами файл:

$hostUser = <<-SET_HOST_USER
echo "$HOST_USER" > /etc/profile.d/me"
SET_HOST_USER
...