Vagrantでec2にインスタンスを作る

大まかな物は見つかるんだけど。 自分の要求通りにやっと情報が集められたから書いておく。

vagrant plugin install vagrant-aws
vagrant init

Vagrantファイルを作る

# 設定定義, あんま気にしてない
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # defineについて調べる
    config.vm.define :amazonlinux do |amazonlinux|
        # ec2用のダミーbox
        amazonlinux.vm.box = "dummy"
        amazonlinux.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
        # プロビジョニングをshellで行う
        config.vm.provision :shell, :path => "provision.sh"
        amazonlinux.vm.provider :aws do |aws, override|
        # instanceに名前を付ける
        aws.tags = {
            'Name' => 'make vagrant',
            'Description' => 'vagrant test'
        }
        # awsのインスタンスタイプ
        aws.instance_type = "t1.micro"
        # Amazon Linux AMI x86_64 EBS(amazon image)
        aws.ami = "ami-173fbf16"
        # awsのセキュリティグループ
        aws.security_groups = ["お好きなもの, defaultでも良いのかな"]
        # "Tokyo"
        aws.region = "ap-northeast-1" 
        aws.availability_zone = "ap-northeast-1a"
        # AWSへのアクセスキー設定
        aws.access_key_id = ENV['AWS_ACCESS_KEY_ID']
        aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
        # awsのキーペアネームを書く
        aws.keypair_name = "keypairname"
        # ec2で作業をするユーザー名にオーバーライドする, ec2に使う秘密鍵にする
        override.ssh.username = "ec2-user"
        override.ssh.private_key_path = '~/.ssh/hoge.pem'
        # sedでrequitettyのとこをコメントアウト
        aws.user_data = <<-USER_DATA
      # ググったら出て来た, プロビジョニングする際にsudoが出来ない問題を対処
      # user_dataという値にshellを書けるみたい, 実際は--provisionで起動しても
      # プロビジョニングが先に走ってしまうからエラーが出る、起動後にvagrant provisionする
      # あんまり良く無いと思う。。。
      # インデントすると動かないので注意
#!/bin/sh
sed -i -e 's/^\\(Defaults.*requiretty\\)/#\\1/' /etc/sudoers
      USER_DATA
        end
    end
end

中々ゴールにたどり着かなかったのは

  • プロビジョニングの前にsudoの設定を変える
  • awsのapi周りの設定

かな。

vagrant up amazonlinux --provider=aws #インスタンス起動, プロビジョニングでこけるけど気にしない
vagrant  amazonlinux provision # プロビジョニング実行
vagrant amazonlinux destroy # インスタンス破棄

楽しい楽しい。 次はchefだ。

Vagrantで起動と同時にプロビジョニングする

1.3以降はprovisionがオプションになったらしい。

まあその方が正しいか。

vagrant up --help                                                                                                                                        [outsource_shell]
Usage: vagrant up [vm-name] [options] [-h]

        --[no-]provision             Enable or disable provisioning
        --provision-with x,y,z       Enable only certain provisioners, by type.
        --[no-]destroy-on-error      Destroy machine if any fatal error happens (default to true).
        --[no-]parallel              Enable or disable parallelism if provider supports it.
        --provider provider          Back the machine with a specific provider.
    -h, --help                       Print this help
vagrant up --provision

fuelphpで管理画面を作ってみる

  • 参考

http://qiita.com/hokutoasari/items/6a39ee7524e679c6152a http://blog.kinjouj.net/fuelphp-29-ormauth.html

Ormのログイン機能を使う編集(OrmAuthを導入する)

fuel/app/config/auth.phpを編集

driver' => 'Ormauth',

とする

ログイン機能を使うdbをマイグレーション

oil r migrate --packages=auth

ログインが必要な配下にモデルとかを作ってデータを編集出来るようにする

oil g admin memo name:string

Auth_Userが見つからないとエラーが出たら これを編集して APPPATH/classes/controller/base.php

# これを↓
$this->current_user = Auth::check() ? Model_User::find_by_username(Auth::get_screen_name()) : null;
# こうする
$this->current_user = Auth::check() ? Auth\Model\Auth_User::find_by_username(Auth::get_screen_name()) : null;

デフォルトはadminのadminでログイン出来る

oil console

でコンソール立ち上げて

Auth::create_user('ユーザー名', 'パスワード', 'メアド');

でユーザー作る。

fuelphpでscaffoldとmigrationする

tbl

fuel/app/migrations/番号_マイグレーションファイル.php

scaffold

php oil g scaffold monkey name:string description:text

migration

php oil refine migrate

そうすっと

mysql> desc monkeys; +-------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | description | text | NO | | NULL | | | created_at | int(11) | YES | | NULL | | | updated_at | int(11) | YES | | NULL | | +-------------+------------------+------+-----+---------+----------------+

こんな感じのテーブルが作られる。

scaffoldの引数をもう少し知っておきたい, 個人レベルだと数値とtextだけあれば十分かな。 バリデーションとか考えるともう少し知っておいた方が良いんだろうけど。

変更(ALTER)したい時は

oil generate migration add_{コラム名}_to_{テーブル名} <fieldname1>:<type1>

favoriteカラムをmonkeysTBLにtext型で追加してみる

php oil generate migration add_favorite_to_monkeys favorite:text
php oil refine migrate

出来た。 その他tbl操作はリンク先で大体出来そう。