Home > アーカイブ > 2014-04
2014-04
Vagrant体験入門ハンズオンの資料を公開します
2014/04/24 DevLove関西にて、Vagrant体験入門を行いました。
これからVagrantを使ってみようという方向けに、Vagrantを触ってみようというイベントです。
前半にVagrantの概要を話すセッションを行ない、その後ハンズオンで実際にVagrantに触れてみるという構成でした。
発表資料
前半で、Vagrantの概要を話した際の資料です。
ハンズオンをはじめるにあたって、下地となる内容を話しました。
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入門」を発表してきました
第3回 コンテナ型仮想化の情報交換会@大阪 で行った発表です。
コンテナ超人みたいな人ばかりで、この内容で発表して良いものやらと思ったのですが、アプリケーションを書く側からの視点で話してきました。
Vagrant ユーザのための Docker 入門
Docker を知った時は、速くなった Vagrant のようなものだと思っていたのですが、色々と見る内にそもそも別のもので、ユースケースとして重なるところはあれど、別のツールだと認識した方が良いです。
Docker の入り口としては、デモを見てもらうのが、手っ取り早いので、そのあたりが伝わったなら良かったです。
Introduction to Docker
発表で引用した「Introduction to Docker」は下記です。公式の資料なので、色々ググる前に、まずはこれを読むのがおすすめです:D
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オートログインのこと
Authフィルタによるオートログインについてです。
「ひとり 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
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
参考
- コメント (Close): 0
- トラックバック (Close): 0
Home > アーカイブ > 2014-04
- 検索
- フィード
- メタ情報