padrinoでアプリケーション開発 2 : 環境構築

まじは、 vagrant でtpadrino を利用するための環境を作っていきます。

目次

     
  • 環境
  •  

  • vagrant 環境へ ansible_local で初期設定・もろもろインストール
  •  

  • gemで必要なパッケージのインストール

環境

     
  • vagrant (centOS v6.8)
  •  

  • ruby 2.3.0

vagrant 環境へ ansible_local で初期設定・もろもろインストール

vagrant はインストールしている前提です。

まず適当にディレクトリを作成して、次のコマンドを実行します。

vagrant init 

Vagrant ファイルをかきます。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
  config.vm.box = "cantos64box"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.network "forwarded_port", guest: 3000, host: 3006
  config.vm.synced_folder "data", "/vagrant", mount_options: ['dmode=777','fmode=755']

  # Patch for https://github.com/mitchellh/vagrant/issues/6793
  config.vm.provision "shell" do |s|
      s.inline = ['sudo yum -y update']
      s.inline = '[[ ! -f $1 ]] || grep -F -q "$2" $1 || sed -i "/__main__/a \\    $2" $1'
      s.args = ['/usr/bin/ansible-galaxy', "if sys.argv == ['/usr/bin/ansible-galaxy', '--help']: sys.argv.insert(1, 'info')"]
  end 

  config.vm.provision "ansible_local" do |ansible|
    ansible.playbook = "./ansible/site.yml"
  end
  
  # SSHエージェントの有効化
  config.ssh.forward_agent = true
end

続いてplaybookをかきます。今回は次のようにかきました。ベストプラクティス完全無視で汚いんですが・・・

- hosts: all
  sudo: yes
  user: vagrant
  tasks:
  - name: Install requirements library
    yum: name={{ item }} state=latest update_cache=yes
    with_items:
      - vim
      - git
      - gcc
      - gcc-c++
      - openssl-devel
      - readline-devel
      - zlib-devel
      - ImageMagick
      - ImageMagick-devel
      - mysql
      - mysql-devel

  - name: Clone rbenv repository
    git: repo=git://github.com/sstephenson/rbenv.git dest=/usr/local/src/rbenv accept_hostkey=yes

  - name: Clone ruby-build repository
    git: repo=git://github.com/sstephenson/ruby-build.git dest=/usr/local/src/rbenv/plugins/ruby-build accept_hostkey=yes

  - name: Add /etc/profile.d/rbenv.sh
    copy: src=rbenv.sh dest=/etc/profile.d

  - name: Register ruby version status
    command: /bin/bash -lc "rbenv versions | grep 2.3.0 | wc -l"
    register: ruby_version_stat

  - block:

      - name: Install ruby
        command: /bin/bash -lc "rbenv install 2.3.0"

    when: ruby_version_stat.stdout != "1"

  - name: Use ruby version
    command: /bin/bash -lc "rbenv global 2.3.0"

  - name: Install bundler
    command: /bin/bash -lc "gem install bundler"

ついで、rbenv.sh を作成します。

#!/bin/bash

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init --no-rehash -)"

ファイルが準備できたらプロビジョンを実行します。

vagrant provision

これで、基本的に必要なものがインストールされました。

ansible の話なんですが、ちょっと詰まったのが、ansible_local のplaybook の参照先が vagrant 環境のパスだったことです。
ローカルでplaybookを作ってそれを基本にパスを書いて、playbookがないとエラーを吐かれました。
config.vm.synced_folde で指定したローカルディレクトリ以下にplaybookをおいて実行すれば問題ありません。

gemでpadrinoをインストール

padrinoをグローバルにインストールします。

gem install padrino

これでpadrinoプロジェクトに必要なものはインストールされたので、
次はpadrinoでプロジェクトを作成していきます。

padrinoがインストール出来ない場合は…

sudoでrbenv をつかうと見つかりませんとエラーが出て失敗する

次の記事
padrinoでアプリケーション開発 3 : padrino プロジェクト作成

padrinoでアプリケーション開発

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク