CentOS
vagrant

俺のVagrant - CentOS7のboxを作る

More than 1 year has passed since last update.


前提


  • Windowsで作業することとする


    • Windowsにはvagrant、virtualboxなどがインストール済みとする

    • Windowsのコンソールはcmderを前提とする

    • Macの場合はWindows特有の箇所を行わなければ可能



  • VirtualBoxでCentOS7のVMを作る。

  • 作ったVMをvagrantで使えるboxファイルにする。


CentOS7をインストールし設定する


  1. CentOS7のISOを落としておく



  2. VBで新規VMを作る


    • メモリ: 2048 MB

    • HDD: VMDK

    • 可変サイズ: 32GB



  3. 不要設定の解除


    • オーディオ: 不使用

    • USB: 不使用

    • システム: フロッピー不使用



  4. OSインストール


    • VMを起動する

    • ソフトウエア: 最小構成+開発ツール

    • ROOTパスワード: vagrant

    • 一般ユーザ: vagrant (パスワード: vagrant)

    • ログイン出来たら一旦終了させる


      • # shutdown -h now





  5. VitualBoxのサイトからVitualBoxと同じバージョンのGuestAdditionsを落としてくる


    • ダウンロード

    • VMにマウントしておく

    • VMを起動する

    • 以下のコマンドでインストールしておく


      • # mkdir /mnt/cdrom

      • # mount -r /dev/cdrom /mnt/cdrom

      • # /bin/sh /mnt/cdrom/VBoxLinuxAdditions.run

      • GUIを使ってないで、Xのエラーが出ても無視してOK





  6. 初期設定


    • SELinux無効化


      • # vi /etc/sysconfig/selinux

      • disabledにする



    • ファイアウォール停止


      • # systemctl stop firewalld

      • # systemctl disable firewalld



    • sudo設定


      • # visudo

      • 以下の行をコメントアウト


        • Defaults requiretty



      • 一番下に以下を追記


        • vagrant ALL=(ALL) NOPASSWD: ALL





    • MACアドレスの固定化を解除する


      • ln -s -f /dev/null /etc/udev/rules.d/70-persistent-ipoib.rules





  7. ネットワーク設定


    • 自動起動するように設定しておく


      • nmcli connection modify enp0s3 connection.autoconnect yes

      • enp0s3は別の名前かもしれないのでip aで調べておく





  8. VMを終了する


    • ネットワークをブリッジにしておく

    • 再度接続後ip aでIPアドレスを確認

    • 任意のターミナルなどで接続



  9. システムアップデート


    • VM側にログインしたら以下のコマンドでアップデートする

    • yum -y update



  10. 必要なライブラリを入れる


    • # yum -y install nkf expect lv kcc convmv cmake vim vim-enhanced wget rpmdevtools mailx whois tcpdump bind-utils p7zip p7zip-plugins tar libidn graphviz graphviz-gd net-tools jq nmap git gcc kernel-devel

    • viの設定を済ませておく


      • # vi ~/.bashrc


      • alias vi='vim -p'を追記





  11. 後は任意でパッケージなど入れておく


    • Nginx、PHP、MariaDB、Postfixなど

    • 上記をセットアップする前にboxして、vagrantで使えるか試すのもあり




CentOSの仮想環境をvagrant box化する


  1. vagrant box用のssh公開鍵を取得する


    • $ mkdir ~/.ssh

    • $ chmod 700 ~/.ssh

    • $ curl https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys

    • $ chmod 600 ~/.ssh/authorized_keys

    • authorized_keysの中身を必ず確認すること


      • 空だったらURLをブラウザで叩いて中身を貼り付ければOK





  2. VMを終了させる

  3. Windows側で以下のコマンドでbox化させる


    • > vagrant package --base <VM名> --output <box名>

    • VirtualBoxでのVM名が「CentOS7-1511」、出力したいbox名が「CentOS7」なら以下になる

    • > vagrant package --base CentOS7-1511 --output CentOS7

    • 環境によって結構時間がかかる場合もある(3~5分くらい)

    • 実行した場所にboxファイルが生成される




vagrantで起動


  1. 作ったboxをリストに追加する


    • > vagrant box add CentOS7 c:\Users\ogaaaan\CentOS7



  2. 構築したい場所へ移動する



    • > cd workspace/testなど



  3. boxから環境を構築する


    • > vagrant init CentOS7

    • 起動後Vagrantfileが作成されるので適宜編集する



  4. 起動する


    • > vagrant up




おまけ

authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key

Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :
Vagrant.configure(2) do |config|

# Vagrant box
config.vm.box = "CentOS7"

# set name vbox vm name
config.vm.provider :virtualbox do |vb|
vb.name = "CentOS7.0_lamp"
end

# Networks
# config.vm.network "public_network", ip: "192.168.10.15"

# Share an additional folder
config.vm.synced_folder "./", "/home/vagrant/htdocs", mount_options: ["dmode=777,fmode=666"]

# Public key modifing
config.ssh.insert_key = false

# Provisioning
#config.vm.provision :shell, :path => "setup.sh"

# Disable auto update
if Object.const_defined? 'VagrantVbguest'
config.vbguest.auto_update = false
config.vbguest.no_remote = true
end

end