Home > アーカイブ > 2014-04

2014-04

Vagrant体験入門ハンズオンの資料を公開します

この記事の所要時間: 226

2014/04/24 DevLove関西にて、Vagrant体験入門を行いました。

vagrant

これからVagrantを使ってみようという方向けに、Vagrantを触ってみようというイベントです。

前半にVagrantの概要を話すセッションを行ない、その後ハンズオンで実際にVagrantに触れてみるという構成でした。

発表資料

前半で、Vagrantの概要を話した際の資料です。

Vagrant体験入門 from Masashi Shinbara

ハンズオンをはじめるにあたって、下地となる内容を話しました。

Vagrant に関する発表は何度か行っていますし、本やblogを書く際にも何度と無く調べていますが、Vagrant自体の進化が速いので、見直すたびに発見があって面白いです。

ハンズオン資料

ハンズオンの手順は Gist にまとめることが多いのですが、今回は Qiita に書きました。Kobito があるとサクサク書けるのが良いですね。

http://qiita.com/shin1x1/items/3288d9de7f04192b6ad8

ハンズオンでは、メモリスティックで、Vagrant、VirtualBox、Box を配布しました。Boxは下記を利用したので、参加されていない方もこれをダウンロードすれば、Qiitaの手順でハンズオンが試せるようになっています。

今回は、「Vagrantを体験する」内容となっていますが、もう少し踏み込んで、プロビジョニングを書き進めたり、Vagrant Shareで公開、AWS or DigitalOceanで公開なども面白そうです。

ハンズオンの内容が良かったよ、とお褒めの言葉を頂いたので、別のイベントや研修などで活用してやって下さい。

さいごに

ハンズオンは、見学のみ(自分では作業しないけど見るだけ)もありということになっていたのですが、全員がノートPC持参で真剣に取り組んでいました。準備した甲斐がありました:D

すでに現場でVagrantを活用されている方も数名おられて、ハンズオンの合間などでお話できて楽しかったです。

これからさらにVagrantを活用する人が増えていくと思うので、そういった人たちで情報交換できるようなイベントもやってみたいですね。

  • コメント (Close): 0
  • トラックバック (Close): 0

「VagrantユーザのためのDocker入門」を発表してきました

この記事の所要時間: 414

第3回 コンテナ型仮想化の情報交換会@大阪 で行った発表です。

docker

コンテナ超人みたいな人ばかりで、この内容で発表して良いものやらと思ったのですが、アプリケーションを書く側からの視点で話してきました。

Vagrant ユーザのための Docker 入門

VagrantユーザのためのDocker入門 from Masashi Shinbara

Docker を知った時は、速くなった Vagrant のようなものだと思っていたのですが、色々と見る内にそもそも別のもので、ユースケースとして重なるところはあれど、別のツールだと認識した方が良いです。

Docker の入り口としては、デモを見てもらうのが、手っ取り早いので、そのあたりが伝わったなら良かったです。

Introduction to Docker

発表で引用した「Introduction to Docker」は下記です。公式の資料なので、色々ググる前に、まずはこれを読むのがおすすめです:D

Docker introduction from Docker

CentOS で Docker を動かす Vagrantfile

デモで使った Docker が動く CentOS を作る Vagrantfile です。

https://github.com/shin1x1/vagrant-centos-docker.git

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

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "opscode-centos65"
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"

  config.vm.provider :virtualbox do |vb|
    vb.name = "docker"
    vb.customize ["modifyvm", :id, "--memory", 1024]
  end

  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.network :forwarded_port, guest: 4243, host: 4243

  config.vm.provision :shell, :inline => <<-EOT
    #
    # iptables off
    #
    /sbin/iptables -F
    /sbin/service iptables stop
    /sbin/chkconfig iptables off
    #
    # yum repository
    #
    rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
    yum install -y vim-enhanced telnet
    #
    # docker
    #
    yum install -y docker-io
    sed -i 's,^other_args="",other_args="-H tcp://0.0.0.0:4243 -H unix:// -dns 8.8.8.8",g' /etc/sysconfig/docker
    chkconfig docker on
    service docker restart
  EOT
end

さいごに

Docker 盛り上がっていますね。

今後、本番環境としての Docker 活用例や、Docker コンテナをそのまま deploy できる DaaS(Docker as a Service)が増えてくると、面白くなりそうです。

なお、Docker が出たから、Vagrant は終わりとかそういう話では無いので、今後も Vagrant も活用していきたいですね。

  • コメント (Close): 0
  • トラックバック (Close): 0

Laravel ユーザなら知っておくべきAuthオートログインのこと

この記事の所要時間: 425

Authフィルタによるオートログインについてです。

laravel

「ひとり Laravel Japan ツアー 2014」と称して、Laravel 福岡Laravel Meetup Tokyo vol.3 に参加してきました。

どちらでも発表を行ったのですが、ここでは、Laravel Meetup Tokyo で発表した Auth オートログインの資料を公開します。

知っておくべきAuthオートログイン

Laravel では Auth という認証を行う機能があるのですが、標準でオートログイン機能が実装されています。

Login::attempt() というログイン処理を行うメソッドの第二引数にtrueを渡すだけで、オートログイン用のクッキーが発行され、もしログインセッションが切れても、自動でオートログインが行われます。

とても簡単に使えるのは良いのですが、暗号化したクッキーでのみ認証を行うので、利用には注意が必要です。

詳細は資料を確認してみてください。

私は、オートログイン処理を自作して、カスタムドライバとして組み込むことで対応しています。
Laravel でカスタムドライバを使って Remember Me(オートログイン)を実装する

Auth フィルタによるオートログイン

このオートログインは、Auth フィルタを使っていると常に有効となっているので、アプリケーションでオートログインを使っているか否かに関わらず、影響があります。

該当のコードは以下です。

まず、Auth フィルタの定義です。app/filters.php で定義されており、Auth::guest() が認証が行われます。

Route::filter('auth', function () {
    if (Auth::guest()) {
        return Redirect::guest('login');
    }
});

Auth::guest() はファサードクラスで、実体は\Illuminate\Auth\Guard::guest()です。check()メソッドが呼ばれており、さらにその中でuser()メソッドが呼ばれます。

    public function guest()
    {
        return ! $this->check();
    }

user()メソッドが、認証の中核になります。前半では、セッションからログインユーザ情報を取得しています。もしセッションにユーザ情報が無ければ、後半でオートログイン処理を行います。

user()メソッドは、Authフィルタを呼べば、常に実行されるので、アプリケーションでオートログインを利用しているか否かに関わらず、オートログイン処理が実行されることが分かります。(セッションにログインユーザ情報が無く、オートログインクッキーの値があれば常に実行される)

    public function user()
    {
        if ($this->loggedOut) return;

        if ( ! is_null($this->user))
        {
            return $this->user;
        }

        $id = $this->session->get($this->getName());

        $user = null;

        if ( ! is_null($id))
        {
            $user = $this->provider->retrieveByID($id);
        }

        $recaller = $this->getRecaller(); // <--- オートログインクッキー値取得

        if (is_null($user) && ! is_null($recaller))
        {
            $user = $this->getUserByRecaller($recaller); // <--- オートログイン処理
        }

        return $this->user = $user;
    }

さいごに

このオートログイン仕様を受け入れるかどうかは使う人次第ですが、その場合、暗号鍵( app/config/app.php の key )は絶対に漏洩しないように扱う必要があります。

なお、Laravel ツアーは、福岡(+大分)と東京の Laravel ユーザと色々なアツい話ができて楽しかったです:D

日本では、まだ知っている人が使っているという感じですが、コミュニティとしての動きも出てきて、今後は盛り上がっていきそうですね。

  • コメント (Close): 0
  • トラックバック (Close): 0

Mac OSX をクリーンインストールしてからの環境構築メモ

  • 2014-04-04 (金)
  • mac
この記事の所要時間: 72

Macbook Air の OS をクリーンインストールしたので、OS 起動後に行った環境構築のメモです。

1. OSX 環境設定

OSX 関連の設定は、以前に書いた下記エントリの内容で行います。
下記は Moutain Lion のものなので、若干、設定項目の表記や位置が異なりますが、概ねこの通りで。

http://www.1×1.jp/blog/2012/06/macbook_air_system_preferences.html

2. Homebrew、コマンドラインツール、XCode インストール

アプリは、Homebrew cask と Brewfile を使ってインストールしたいので、Homebrew をインストールします。

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

コマンドラインツールが必要になるので、インストールするかダイアログが表示されます。

コマンドラインツールとついでに XCode もインストールしておきます。両ツールをインストール後に、利用許諾を承諾します。

再度、下記コマンドを実行すると Homebrew がインストールされます。

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
$ brew
Example usage:
  brew [info | home | options ] [FORMULA...]
  brew install FORMULA...
  brew uninstall FORMULA...
(snip)

3. brew bundle でアプリケーションインストール

Brewfile は、PHP の composer.json のようなものです。あれの OSX アプリケーション版ですね。

Brewfile にインストールしたいアプリケーションを記述しておくだけで、brew bundle コマンドで一気にインストールしてくれます。これは楽ちん。

Brewfile を下記のように書きました。これを見るだけで普段必要なアプリが分かるので備忘録としても便利です。

update
upgrade

tap homebrew/versions
tap phinze/homebrew-cask
tap homebrew/binary
tap josegonzalez/php

install brew-cask
install zsh
install autojump
install git
install ctags
install tmux
install tig
install ansible
install wget
install curl
install jq
install vim
install boot2docker
install reattach-to-user-namespace
install php55 --with-pgsql --with-pdo-pgsql
install php55-mcrypt php55-xdebug php55-opcache composer

cask install dash
cask install phpstorm
cask install iterm2
cask install google-chrome
cask install firefox
cask install virtualbox
cask install vagrant
cask install kobito
cask install alfred
cask install dropbox
cask install evernote
cask install skitch
cask install github
cask install sequel-pro
cask install lastpass-universal
cask install openoffice
cask install bettertouchtool
cask install google-japanese-ime
cask install the-unarchiver
cask install coteditor
cask install istat-menus
cask install bartender
cask install skype

cask alfred link # for Alfred

Brewfile があるディレクトリで、brew bundleコマンドを実行します。

$ brew bundle

アプリケーションが続々とインストールされるので、しばし待ちます。

Brewfile は github に push したので、次回からはこれを使います。

$ git clone https://github.com/shin1x1/Brewfile
$ cd Brewfile
$ brew bundle

3. Dropbox, Evernote の同期

Dropbox と Evernote を起動して、同期を行います。

とくに Dropbox の同期は時間がかかるので、早めに実行しておきます。

4. ライセンスの登録

有償ライセンスを購入しているアプリケーションがあるので、ライセンスキーを設定していきます。

  • PhpStorm
  • Dash
  • Alfred Powerpack
  • Bartender
  • iStat Menus

5. CUIアプリケーションの設定

CUIアプリケーションの設定を行います。

下記の設定ファイルは Dropbox で共有しているので、インストール用シェルを実行して、シンボリックリンクを張ります。

  • ~/.vimrc
  • ~/.vim
  • ~/.zsh
  • ~/.zshrc
  • ~/.zshenv
  • ~/.tmux.conf
  • ~/.gitconfig
  • ~/.gitignore_global

ただ、Dropbox がまだ同期中なので、一部のディレクトリにプラグインのファイルなどがなく、正常に動作しない可能性があります。慌てて設定ファイルをいじらないように注意。
(今回、Vim で起動時にエラーが出ていましたが、Dropbox の同期が進むと自然に解消されました。)

6. GUIアプリケーションの設定

必要なものを順次設定していきます。

下記は、OS 起動時に自動で起動して欲しいので、設定しておきます。

  • Alfred 2
  • Bartender
  • iStat Menus
  • BetterTouchTools
  • Dropbox

Google 日本語入力は起動時にエラーが出たので、OS の再起動を行いました。

7. 秘密鍵、VPN の設定

あちらこちらに登録している公開鍵用の秘密鍵をインストールしておきます。もしくは新規の鍵ペアを作って、サーバやサービスに公開鍵を登録します。

あと外出前に VPN の設定を行っておきます。忘れると外から入れなくなるので注意を。

まとめ

OS インストール後の環境構築を一気にやりました。Dropbox の同期を除けば、4 時間程度あれば十分に構築できました。(今回は、Brewfile を書きながら調整していったので、次回はもっと短くできそう)

いやあ、Brewfile は、ほんと良いですね。OSX 環境の自動構築といえば Boxen が有名ですが、自分のニーズであれば Brewfile で十分です。インストールに割り切ってるのがシンプルで良いですね。

何度か Brewfile に追加して、brew bundle の実行を繰り返していたのですが、ちょうどリリースされたばかりの Vagrant 1.5.2 がインストールされました。地味に毎回インストールするの面倒だったので、Vagrant と VirtualBox のインストールだけでも使う価値ありそうです:D

参考

http://nanapi.co.jp/blog/2014/03/05/homebrew-cask/

  • コメント (Close): 0
  • トラックバック (Close): 0

Home > アーカイブ > 2014-04

検索
フィード
メタ情報

Return to page top