LoginSignup
10
12

More than 5 years have passed since last update.

Macで仮想環境

Last updated at Posted at 2016-09-02

サーバ周り(CentOS)を色々と弄ってみたかったのでローカルに仮想環境を構築することにした。
AWSで構築しようかとも思ったが敷居が高そうなので、先ずはローカルで頑張ってみることにする。

理由:負荷分散テストとか、セキュリティ関連の脆弱性テストを自分なりに試してみたいから。

2016.9.10(追記)

ゴチャゴチャと色々とやってみたけど...素直にDocker for Macを入れてdocker-compose.yml記述するだけの方が楽だな・・・。

Linux系サーバ関連の基礎知識

かつてUnix系OSと言えばSunのSolarisだったが、MicrosoftやLinux陣営に負けOracleに買収されるも今は殆ど息をしていない。

現在はRedHat社がUnixサーバ系の業界標準であり、同社はFedoraで最新カーネルやアプリを検証し、RedHatで商用サポート提供し、CentOSで裾野を広げる戦略をとっている。CentOSは商用RedHatの互換クローンとして有志ボランティアによる無償提供版だったが、2014年1月以降はRedHat社の支援を受け事実上の無償公認版になっているので、業務用サーバの勉強にはもってこいなOSだ。

開発環境

OS X EI Capitan 10.11.6
Xcode Version 7.3.1 (7D1014)
Homebrew導入済み(0.9.9)
Command Line Tools導入済み

brewでインストールしたもの

事前準備

VirtualboxVagrantのインストール

参考サイト

$brew update

$brew install Caskroom/cask/virtualbox Caskroom/cask/vagrant

$vagrant -v

$virtualbox

Vagrant 1.8.5のバグ対応

brewのvagrantは、2016/9/2時点ではバグverなので以下を直修正。
これをせずにvagrant upをするとSSH接続エラーでうまく起動せず。

その場合はvagrant destroyでVMイメージを削除するか、.vagrantフォルダと、~/VirtualBox VMsフォルダ内に作成されたイメージを一旦削除し、vagrant haltで停止させた上でバグ対応。

$mdfind public_key.rb

#sudo vim /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/linux/cap/public_key.rb

56行めに追記。 chmod 0600 ~/.ssh/authorized_keys

Vagrant設定

Vagrant images もしくはChef社で、CentOS7のイメージURLを探してコピー。

$mkdir ~/保存先

$cd ~/保存先

$vagrant box add CentOS7 "コピーしたURL"

$vagrant init

$vagrant up

$vagrant ssh

※vagrant sshを実行するとvagrantユーザでログインされる。
※vagrantユーザとrootのパスワードは"vagrant"

インストール後のCentOS設定

$su
#yum -y update
#yum -y groupinstall "Base" "Development tools"
#yum -y install yum-cron
#vi /etc/yum/yum-cron.conf

apply_updates = no

apply_updates = yes

#systemctl start yum-cron
#systemctl enable yum-cron
#systemctl is-enabled yum-cron

ホストOSとのファイル共有時のエラー対応

Macと仮想ゲストでフォルダ共有した際、SSHログインは可能だがフォルダ共有されず。
vagrant sshでログイン後にmountを試みるも怒られる。

原因はVirtualBoxのゲスト用プラグインのver違い(ホスト5.1.2 ゲスト4.3.14)であるっぽいのでGuest Additionsを入れ直す。

\$vagrant plugin install vagrant-vbguest
VBゲスト管理用プラグインを0.10.0から0.13.0にアップグレード

\$vagrant vbguest
Guest Additionsが5.1.2に入れ替わる。
途中ゲストOS側にX.org関連が無いぞと注意されるも使わんから無視。

\$vagrant reload
vagrantを再起動

\$vagrant ssh
ログイン後に共有フォルダがmountされていることを確認。
(Vagrantfileで記述したconfig.vm.synced_folderフォルダ)

Vagrantfileでの複数vmイメージを管理する場合

config.vm.define :web do | web |
   web.vm.hostname = "web"
   web.vm.network :private_network, ip: "192.168.33.10", virtualbox_intnet: "intnet"
end
config.vm.define :mysql do | db |
   db.vm.hostname = "mysql"
   db.vm.network :private_network, ip: "192.168.33.20", virtualbox
_intnet: "intnet"
end

Vagrant上のDockerで複数vmイメージを管理する場合

(参考サイト)複数Dockerコンテナ自動起動を参考にしつつ、docker-compose.ymlを記述。

config.vm.provision "docker"
config.vm.provision "shell", inline: <<-SHELL
   curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s-uname -m` > /usr/local/bin/docker-compose
   chmod +x /usr/local/bin/docker-compose
SHELL
config.vm.provision "shell",
   inline: "docker-compose -d -f /tmp/app/docker-compose.yml up",
   run: "always"

Dockerセキュリティ

Dockerでホストを乗っ取られた?
Dockerでハック

10
12
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
10
12