VagrantでWindowsローカル環境にKUSANAGIを構築します。KUSANAGI公式ドキュメントを見て作業してもなぜか上手くいきませんした。
どうやらVagrantの仕様が変わったらしくドキュメント通り行かなくなってるらしい。
自分の作業履歴を残すための備忘録です。
2年ぶりくらいにKUSANAGI for Vagrantでローカル環境を作ったところ、公式ドキュメント通りでは上手くいきませんでした。
たしかあの頃は難なくできたのに...
Vagiant Cloudのboxは、2019年1月からあるようです。
2年前に作業したのが記憶違いなのか、ダウンロード先のリポジトリが変わったのか、今となっては不明。
少なくとも、前に作業したときは公式ドキュメント通りに進めて上手く行ってました。
失敗の原因は、自分のミスとVagrantの変更です。
ローカル環境
Windows 10 Pro | ビルド 18363 |
Virtual Box | 6.1.2 r 135662 |
Vagrant | 忘れた。 2年前くらいのバージョン。 |
vagrant initに失敗
vagrant init primestrategy/kusanagi
vagrantのバージョンが古いと失敗します。たしかにぜんぜんバージョンアップしてなかった...
vagrantのプラグインをアップデートします。
vagrant plugin update
プラグインのアップデートでvagrantもバージョンアップ?
vagrant本体のバージョンアップは、インストーラー(パッケージ)のダウンロード・実行です。
...と思ってたのですが、プラグイン・アップデートでvagrant本体のバージョンも上がっていました。
(知らなかっただけ?)
vagrant -v
Vagrant 2.2.7
まぁバージョンが上がったので良しとしましょう。次へ行きます。
やっぱり、インストーラーのダウンロード・実行
後日、vagrantのバージョン確認をするとこんなメッセージが。
vagrant version
Installed Version: 2.2.7
Latest Version: 2.2.14
To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL
below:
https://www.vagrantup.com/downloads.html
If you're curious what changed in the latest release, view the
CHANGELOG below:
https://github.com/hashicorp/vagrant/blob/v2.2.14/CHANGELOG.md
やっぱり、インストーラーからアップグレードするんじゃん。なんだったんだ? あのときのプラグインアップデートは。
可能性として、Vagraunt本体とvagrantコマンドのバージョンの互換の関係から、『本体を上げなくても、vagrantコマンドのバージョンアップができることもある』と見ている。
まぁでも、Vagrant全体がバージョンアップするならきちんとダウンロード / インストールしたほうがいいでしょうね?
WordPress5には別のイメージもある
KUSANAGI for Vagrantには、WordPress5用のイメージもあります。
KUSANAGIの初期設定、WordPressのプロビジョン作成がひとつ終わった状態で始められるので、WordPressを使うならこっちのほうがいいでしょう。
Prime Strategy公式のイメージです。(Prime StrategyはKUSANAGIを作った会社)
vagrant init prime-strategy/kusanagi-wp5
初期状態でブラウザからサイト表示すると、WordPressのインストール画面が出ます。
ここまでVagrantのボックスは設定済みです。
Vagrantfileの編集
vagrant initで生成されたVagrantfileを編集します。
# config.vm.network "private_network", ip: "192.168.33.10"
バーチャル環境に接続するためのローカルIPアドレス設定のコメントを外します。
192.168.33.10にしなきゃいけないことはありません。ほかと被らないようにしましょう。
(最後の10のところを変える。とりあえず10~100で選んどけばOK。細かい話は割愛。)
最後の番号以外を変えるのはNGです。ここでも細かい話は省略しますが、IPのネットワークアドレス部に影響する?ので、接続できないかもしれない。
(サブネットマスクを調べてないので断定はできない。けど怪しい。)
config.vm.network "private_network", ip: "192.168.33.10"
もうひとつコメントを外します。
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
メモリが1Gなので環境に合わせて設定しましょう。
2G | 2048 |
4G | 4096 |
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
# Customize the amount of memory on the VM:
vb.memory = "2048"
end
(個々の設定はあとで変更できる。)
vagrant upに失敗
準備ができたところで、vagrantからバーチャル環境を起動します。
vagrant up
・
・
The box 'primestraegy/kusanagi' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Vagrant Cloud, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: ["https://vagrantcloud.com/primestraegy/kusanagi"]
Error: The requested URL returned error: 404 Not Found
どうやら、Vagrantボックスのリポジトリ・サービス、Vagrant Cloudの仕様が変わったみたいです。
以前は、ボックスをリポジトリで公開するときはアカウントが必要でしたが、ダウンロードはいりませんでした。
(ボクの記憶では。間違ってたらゴメンなさい。)
ということでアカウントを作成してログインします。
アカウントを作成したらそのままログインされます。この状態でもう一度vagrant upをしたら上手くいきました。
1回ログインしたらOK?
Vagrant Cloudからログアウトしてもボックスのダウンロードができます。どうやら実行環境で1回ログインしとけばいいみたい。
(どのくらいの期間、ログインを保持するのかは不明。)
もしダメになっても、再度Vagrant CloudにログインすればOKです。
SSH接続確認
最後にバーチャルマシンにログインします。
接続先 | 192.168.33.10 (Vagrantfileで指定したprivate networkのIP) |
ユーザー名 | vagrant |
パスワード | vagrant |
rootパスワードはないので、初期設定ではrootログインはできません。
sudo su
でroot作業ができます。
kusanagiユーザーのリモートログイン
今のままでは、kusanagiユーザー(/home/kusanagi/)でファイル転送・リモートログインができません。
vagrantユーザーでログインすると、/home/vagrantに、kusanagiユーザーでssh接続するための秘密キーがあります。
kusanagi.pem
この秘密キーを使えば、kusnagiユーザーでsshログイン・sftpファイル転送ができます。
(pemからppkファイルに変換することも可能。)
rootユーザーのリモートログイン
KUSANAGI for VagrantのCentOSはrootのリモートログインが禁止されているので、/etcなどのディレクトリのファイル転送ができないです。
パスワード認証ログインを許可しましょう。
KUSANAGIの初期設定
kusanagi init
を使えば、kusanagiユーザーのパスワードやMariaDBのrootパスワードなどの設定ができます。
実行しとくのもありです。
kusanagiユーザーのパスワードを設定すると、パスワード認証でリモートログインができます。
(キー認証があるのでいらないけど。)
kusanagi init --passwd
のように、オプションをつけると個別に設定できるとなっていますが、どうやら全設定になっているみたいです。
(タイムゾーンの設定から始まった。)
以上、久しぶりの作業でハマってしまった記録です。
コメント