Windows10でVagrant(1.8.5)を使ってCentOS 7仮想マシンを構築する
概要
Windows10におけるVagrant(1.8.5)を使った、CentOS 7 仮想マシンの構築手順について示す。
環境
- ホストOS:Windows 10
- ゲストOS:CentOS7-x86_64
- Vagrant:1.8.5
- VirtualBox:5.1
- Cygwin
各ソフトウェアを用意する。CygwinはVagrantから仮想マシンへの接続を行う際にrsync
とssh
を用いるためにインストールする。
手順
-
Cygwinのインストール(
rsync
とssh
)
-
VirtualBoxのインストール
-
Vagrantのインストール
- Vagrantで仮想マシンを構築
Cygwinのインストール(rsync
とssh
)
rsync
とssh
)rsync
とssh
)Vagrantは仮想マシンの起動時(vagrant up
)に、ホストOSとゲストOS間のフォルダ同期のためにrsync
を、Vagrant自身と仮想マシン間の接続のためにsshを使用する。Windows10にはrsync
やssh
のコマンドが存在しないため、別途インストールする必要がある。
このためCygwinまたはMinGWを導入する必要がある。ここではCygwinのrsync
とssh
を導入する。
仮想マシン構築そのものにはCygwinの
rsync
やssh
を導入する必要はないようだ。Vagrantfileへの設定によって、vagratn up
時にrsyncやsshを使用しないようにできるかもしれない。
インストール手順詳細は以下を参照のこと。
Window10にCygwinでrsyncとsshをインストールする
VirtualBoxのインストール
Vagrantで構築する仮想マシンを動かすプラットフォームとなるVirtualBoxをインストールする。ちなみに、Vagrantでは、このVirtualBoxのようなソフトウェアのことをプロバイダ/Providerと呼ぶ。VirtualBox以外には、Hyper-VやVMWareなどがある。
インストール手順詳細は以下を参照のこと。
Windows10にVirtualBox 5.1をインストールする
Vagrantのインストール
仮想マシン環境を構築するソフトウェアであるVagrantをインストールする。
インストール手順詳細は以下を参照のこと。
Windows10にVagrant 1.8.5をインストールする
Vagrantで仮想マシンを構築
Vagrantを用いてVirtualBox用の仮想マシン環境を構築する。手順は以下のとおり。
- 仮想マシン環境用のフォルダを作成する
-
vagrant init
でフォルダを初期化する -
vagrant up
で仮想マシン環境の構築と起動を行う
詳細を以降に示す。
仮想マシン環境用のフォルダを作成する
仮想マシンは用途に合わせて、フォルダ分けするのが良いだろう。ここではWindowsのユーザーフォルダ配下に"Vagrant"フォルダを作成し、この配下に仮想マシン用のフォルダを作成していく。なお、ここではVagrantの仮想マシンのベースとなるファイルであるBoxに対応したフォルダ構成とする。事前に導入するBoxをVagrant開発元のHashiCorpが公開しているサイトから検索しておく。今回は"centos/7"を導入するのでフォルダ構成は以下とする。
C:\Users\(ユーザー名)\Vagrant\centos\7
Windowのエクスプローラーからフォルダ作成してもよいが、以降の作業をコマンドプロンプトで行うので、フォルダの作成もコマンドプロンプトで実行していく。
Vagrantフォルダの初期化
作成したフォルダをVagrant用に初期化する。これはフォルダにVagrantの設定用ファイルであるVagrantfile
を生成する。以下のコマンドを使用する。
vagrant init [name [url]]
通常、[name [url]]
には、先のHashiCorpのサイトで検索したパスを指定する。今回は
centos/7
を指定する。
コマンドの実行により、フォルダ内にVagrantfile
が生成された。なお、指定したcentos/7
が設定に反映されており、このVagrantfile
に基づいて生成される仮想マシンはHashiCoprで公開されているcentos/7
のBoxに基づいたものになる。
Vagrantによる仮想マシンの生成と起動
vagrant init
により設定ファイルを生成すると、すでに仮想マシンが生成可能な状態となっている。以下のコマンドを使用する。
vagrant up [name|id]
カレントフォルダにVagrantfile
がある場合、[name|id]
を省略することでカレントフォルダのVagrantfile
を用いて、仮想マシンを生成・起動する。今回は省略して実行する。
以上でVirtualBoxの仮想マシンが生成され、さらにその仮想マシンが起動された状態となる。VirtualBoxを起動して、状態を確認してみよう。
"7_default_1471054331963_46735"が今生成したマシンであり、状態が"実行中"となっていることがわかる。
なお、通常vagrant up
によりVirtualBoxの仮想マシンを起動しても、上記のようなVirtualBoxのウィンドウは表示されることはない。ただし、Vagrantfile
の設定によって表示させることもできる。
VagrantからのSSH接続
仮想マシンが起動したので、マシンへのアクセスが可能となっている。以下のコマンドを使用する。
vagrant ssh [name|id] [-- extra_ssh_args]
カレントフォルダにVagrantfile
がある場合、[name|id]
を省略することでカレントフォルダのVagrantfile
で生成されたマシンに接続しようとする。また、[--extra_ssh_args]
には、実際のSSHコマンド(今回の場合、CygwinのSSHコマンド)に受け渡すオプションを指定することができる。今回はともに省略して実行する。
プロンプトがLinuxのものに変更されたことがわかるだろう。
発生した問題
上記手順を示すにあたり、その順番や有無によっていくつかの問題が発生した。その問題と原因について示しておく。
rsyncがない場合に発生した問題
問題
エラーメッセージは以下のように出力されている。
"rsync" could not be found on your PATH. Make sure that rsync is properly installed on your system and availablie on the PATH
「"rsync"がPATHに見つからないので、きちんとインストールされていて、PATHに設定されているかを確認せよ」と言っている。
解決
手順に示した通り、Cygwinのrsync
コマンドをインストールすることで解決できる。
sshがない場合に発生した問題
問題
エラーメッセージとして大量のメッセージが表示されているが、要点は以下である。
Error: rsync: Failed to exec ssh: No such file or directory (2)
「rsync
がssh
を実行するのに失敗した。そんなファイルやディレクトリは知らない」と言っている。
解決
手順に示した通り、Cygwinのssh
(open-ssh)コマンドをインストールすることで解決できる。
Vagrant 1.8.5のバグに起因する問題
Vagrant 1.8.5のあるバグによって、以下のようなエラーが発生した。
出力メッセージの末尾のほうに
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
とある。上記では2回しか出力されていないが、これは2回出力された時点でCtrl+Cを押下して、処理を中断したためであり、処理を続けた場合、このメッセージが繰り返し実行され、以降の処理に進めなかった。
上記、エラーメッセージでGoogle検索を行うと、GitHubの以下のIssueにたどり着いた。
Authentication failure after inserting new key with Vagrant 1.8.5. [PATCH] #7610
すでに問題は認識されており、リリース版としてはVagrant 1.8.6で対応されるようだ。
解決
先のIssueから、Vagrant 1.8.6のリリースを待つ以外の方法を以下に示す。
- C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\guests\linux\cap\public_key.rb の56行目に以下を追加する。
chmod 0600 ~/.ssh/authorized_keys
なお、これを追加した状態での前後の行は以下の通りである。
if test -f ~/.ssh/authorized_keys; then
grep -v -x -f '#{remote_path}' ~/.ssh/authorized_keys > ~/.ssh/authorized_keys.tmp
mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
fi
~/.ssh/authorized_keyz.tmp
を~/.ssh/authorized_keys
にコピーしたあとに、パーミッションを0600に変更する処理を追加したことになる。SSH認証を行う際に陥るよくある手順の抜けのようだ。。。
上記変更を加えたファイルを保存し、改めて仮想マシンを構築することで解決する。
最後に
手順をまとめるととても簡単なのではあるが、予想外のエラーにはまってしまいまとめるまでに数日かかってしまった。ようやくVagrantによるCentOS 7仮想マシンを構築することができたので、この仮想マシンをいろいろといじくっていこう。
なお、仮想マシンの構築に際しては、Vagrantのさまざまな機能を用いることで、より用途に適した設定で、容易に、何度でも仮想マシンを生成することができる。
Vagrantのさまざまな機能を用いるためにはVagrantの公式ドキュメントを読むのが一番であるが、英語であるためなかなか手が伸びないところであろう。拙記事ではあるが、Vagrant公式ドキュメントを意訳しているので、ご参考いただければと思う。ただし、訳には責任が持てないので、詳細については自己責任でお願いしたい。。。
Author And Source
この問題について(Windows10でVagrant(1.8.5)を使ってCentOS 7仮想マシンを構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/ringo0321/items/faaf0947a2c4113913e6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .