エラー内容
- Windows 10 マシンで packer を使用して CentOS 7 の Vagrant Box を作成し、動作を確認した。
- 別のマシンで
vagrant up
するとエラーが発生した。
vagrant ssh
は正常に動き、ログインできた。 - 改行コードが CRLF のコードで packer build を実行してしまったことが原因
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'oki2a24/centos-7-x86_64' could not be found. Attmpting to find and install... ... 略 ... The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! mkdir -p /vagrant Stdout from the command: Stderr from the command: sudo: sudo を実行するには tty がなければいけません。すみません $
原因
調べてみましたら、原因はすぐにわかりました。
# cat /etc/sudoers.d/vagrant^M ... 略 ...
/etc/sudoers.d/vagrant ファイルを作成しようとして、/etc/sudoers.d/vagrant^M が作成されてしまったようです><。
そして、次の行で実行しようとしていた
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
は実行されておりませんでした><。
キックスタートファイルの改行コードが CRLF であることから起きてしまった問題ですわね。恥ずかしいですの><。
そもそも、.gitattributes で対策をしていたにもかかわらず、なぜこのようなことが起きてしまったのかしら。
.gitattributes はチェックアウト時に改行コードを整えてくれるものであって、編集中に変更された改行コードまでは制御してくれないこと、そして、おそらく横着してコピペしていた時に改行コードが変わってしまったこと、というのが原因と存じます。
おわりに
次のページが参考になりました、ありがとう存じます!
以上です。