Vagrantfile
vagrant initで作られるやつの和訳とか、便利なプロビジョニング記述とか
code:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# すべてのVagrantの設定は、以下で行います。
# Vagrant.configureの"2"は、コンフィギュレーションバージョンを設定します。
# (古いスタイルを、後方互換性のためにサポートしています)
# あなたがこの事をよく分からない場合、変更しないでください。
# すでに設定が完了しています。
Vagrant.configure("2") do |config|
# 最も一般的な設定オプションについては、以下のコメントによって説明しています。
# 完全なリファレンスについては、以下のオンラインドキュメントを参照してください。
# 全てのVagrant開発環境にはボックスが必要です。
config.vm.box = "centos/7"
# ボックスの自動アップデート確認を無効にします。
# これを無効にすると、ユーザーは vagrant box outdated を実行したときにのみボックスの更新がチェックされます。
# これはおすすめしません。
# config.vm.box_check_update = false
# ホストマシン上のポートから、マシン内の特定のポートにアクセスするための、転送されたポートマッピングを作成します。
# 以下の例では、"localhost:8080"にアクセスすると、ゲストマシンの80番ポートにアクセスされます。
# ※:これにより、開いているポートへのパブリックアクセスが可能になります。
# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 3000, host: 3000
# ホストマシン上のポートから、マシン内の特定のポートにアクセスするための、転送されたポートマッピングを作成し、
# 公開アクセスを無効にするために、"127.0.0.1"を介したアクセスのみを許可します。
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# プライベートネットワークを作成することで、特定のIPを使用してゲストマシンへの
# ホストオンリーアクセスが可能になります
config.vm.network "private_network", ip: "192.168.33.10"
# ブリッジ接続によるパブリックネットワークを作成します。
# ブリッジネットワークにより、ゲストマシンはネットワーク上の別の物理デバイスとして表示されます。
# config.vm.network "public_network"
# 追加のフォルダを、ゲストVMに共有します。
# 最初の引数は、ホスト上の実際のフォルダへのパスです。
# 2番目の引数は、ゲスト上のフォルダをマウントするパスです。
# 3番目の引数は、必須でないオプションのセットです。
# config.vm.synced_folder "../data", "/vagrant_data"
# Windows向け
# config.vm.synced_folder ".", "/vagrant"
# mac向け
config.vm.synced_folder ".", "/vagrant", nfs: true
# 動作不安定
# プロバイダー固有の設定により、様々なバッキングプロバイダーを、vagrantのために微調整することができます。
# これはプロバイダ固有のオプションを公開します。
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # マシン起動時にVirtualBox GUIを表示する。
# vb.gui = true
#
# # VM上のメモリ量をカスタマイズする。
# vb.memory = "1024"
# end
#
# 使用可能なオプションの詳細については、使用しているプロバイダのドキュメントを参照してください。
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 1 # ホストのコア数-1
vb.customize [
"modifyvm", :id,
"--hwvirtex", "on",
"--nestedpaging", "on",
"--largepages", "on",
"--ioapic", "on",
"--pae", "on",
"--paravirtprovider", "kvm"
]
end
# Atlasにプッシュ(デプロイ)するための、Vagrantプッシュ方法の定義
# FTPやHerokuなどの、ほかのプッシュ方法も利用できます。
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end
# シェルスクリプトによるプロビジョニングを有効にします。
# Puppet, Chef, Ansible, Salt, Dockerなどのプロビジョナも利用できます。
# 具体的な構文と使用方法の詳細については、ドキュメントを参照してください。
# ※Vagrantにおけるプロビジョナは、自動的にソフトウェアをインストールしたり、設定を変更したり、
# そのほかいろいろなことをvagrant upプロセスの一部としてできるようにする。
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
# ---------- ここからプロビジョニング関連の記述 ----------
# パッケージのアップデート
config.vm.provision :shell, :inline => "sudo yum -y update"
# ロケールを日本に設定し直し
config.vm.provision :shell, :inline => <<-SHELL
sudo yum -y reinstall glibc-common
sudo localectl set-locale LANG=ja_JP.utf8
sudo localectl set-keymap jp106
SHELL
# タイムゾーンをJSTに
config.vm.provision :shell, :inline => "sudo timedatectl set-timezone Asia/Tokyo"
# gitインストール
config.vm.provision :shell, :inline => "sudo yum -y install git"
# epelインストール
config.vm.provision :shell, :inline => "sudo yum -y install epel-release"
# # AmazonLinux2でepelインストール
# config.vm.provision :shell, :inline => "sudo amazon-linux-extras install epel"
# 開発ツール(Cコンパイラなど)
config.vm.provision :shell, :inline => <<-SHELL
sudo yum -y groupinstall "Development Tools"
sudo yum -y install make glibc gcc-c++ python-devel
sudo yum -y install nodejs npm --enablerepo=epel
sudo yum -y install libxml2-devel libxslt-devel
sudo yum -y install wget
sudo yum -y install libffi-devel
sudo yum -y install sqlite-devel
SHELL
# nodejsインストール
config.vm.provision :shell, :inline => <<-SHELL
sudo yum install -y nodejs
sudo yum install -y yarn
SHELL
# rbenvインストール
config.vm.provision :shell, :inline => <<-SHELL
sudo echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
sudo echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
sudo yum -y install bzip2 gcc openssl-devel readline-devel zlib-devel
SHELL
# MariaDBの削除
config.vm.provision :shell, :inline => <<-SHELL
sudo yum -y remove mariadb-libs
sudo rm -rf /var/lib/mysql
SHELL
# MySQL5.6インストール
config.vm.provision :shell, :inline => <<-SHELL
sudo yum -y install yum-utils
sudo yum-config-manager --disable mysql57-community
sudo yum-config-manager --enable mysql56-community
sudo yum -y install mysql-community-server
sudo yum -y install mysql-devel
sudo systemctl start mysqld
sudo systemctl enable mysqld
SHELL
# redisインストール
config.vm.provision :shell, :inline => <<-SHELL
sudo yum -y install --enablerepo=epel redis
sudo systemctl start redis.service
sudo systemctl enable redis.service
SHELL
# Javaインストール
# config.vm.provision :shell, :inline => "sudo yum install -y java"
# postgresqlインストール
# config.vm.provision :shell, :inline => <<-SHELL
# sudo yum remove postgresql
# sudo yum install -y postgresql-devel
# sudo yum install -y postgresql96-server postgresql96-contrib
# sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
# # うまくいかない
# sudo echo <<-EOF > /var/lib/pgsql/9.6/data/pg_hba.conf
# local all all trust
# host all all 127.0.0.1/32 trust
# host all all ::1/128 trust
# EOF
# sudo systemctl start postgresql-9.6.service
# sudo systemctl enable postgresql-9.6.service
# SHELL
# ImageMagicのインストール
# config.vm.provision :shell, :inline => "sudo yum -y install ImageMagick ImageMagick-devel"
end