LoginSignup
1
1

More than 5 years have passed since last update.

vagrant+virtualboxでubuntu/xenial64を使うときにvagrantユーザーを作る

Posted at

ubuntu/xenial64のboxを使うとvagrantユーザーではなく、ubuntuユーザーが作成されています。vagrant sshした時はこのubuntuユーザーでログインしているとおもいます。
ですが、ほかのsshクライアントからログインしたい場合にubuntuユーザーではログインパスワードがvagrantubuntuとはなっておらず、探し出すのは難しいようです。なので、provisionの時点でvagrantユーザーを作っちゃいましょう。

シェルスクリプトを準備

bootstrap.sh
#!/bin/bash

if ! grep -sqE "^vagrant" /etc/passwd ; then
    PASSWORD=$(perl -e 'print crypt('vagrant', "\$6\$");')
    sudo useradd -p ${PASSWORD} -G sudo -m -s /bin/bash vagrant
fi

sudo sh -c "echo 'vagrant ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/90-cloud-init-users-vagrant"

vagrantでubuntu/xenial64のユーザーとパスワード設定を参考にさせていただきました。
元記事からの変更点は2つ。

  • if文でvagrantユーザーが作成済みかどうかをチェックする
  • vagrantユーザーではsudoをパスワードなしで実行できるようにする

if文でvagrantユーザーが作成済みかどうかをチェックする

provisionを複数回実行するハメになったとしてもエラーで止まることは無いはずです。
if文がないと useradd: user 'vagrant' already exists とかでエラーになってそれ以降のprovisionがあっても実行されなかったので、追加しました。

vagrantユーザーではsudoをパスワードなしで実行できるようにする

sudoグループに所属していてもsudoを実行するときにはパスワードを求められるので、従来と同じようにvagrantユーザーでのsudo実行時もパスワードなしで実行できるように追加しました。

Vagrantfileにprovisionを追加

config.vm.provision "shell", privileged: false, path: "bootstrap.sh"

この1行をEnable provisioning with a shell script. というコメントブロックのあたりに追加してください。

あとは vagrant up なり vagrant provision をしてみてください。
その後、SSHクライアントからvagrantユーザーでパスワードvagrantを使ってログインできればOKです。
あとは sudo su とかしてパスワードを聞かれることなくrootになれるはずです。

1
1
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
1