LoginSignup
41
39

More than 5 years have passed since last update.

【Mac OS X限定】バックエンド開発環境の構築をこうするとよさそうだ

Posted at

社内共有用

開発環境の構築方法

バックエンドの開発環境の構築は、
インストールするソフトウェアのあれこれがあって複雑だ。

wikiに手順をドキュメント化して、
プロダクトが出てくるたびにwikiに書いた
手順をコピペするのがだるいので、以下の感じで環境を整える流れを作りたい。

  1. ホスト側(Mac OS Xマシン)でhomebrew環境を構築する
  2. ホスト側でansibleを利用するため、ansibleをインストールしておく
  3. packerを利用し、Vagrant用のVirtualboxゲストマシンを作成する 
  4. ansible playbookを作成し、マシンの環境を構築する
  5. Vagrantのansible provisionerを利用し、ansible playbookを使いミドルウェアの設定を行う

Mac OS X以外の人

がんばって。といってもhomebrewのような
パッケージシステムを利用すればなんとかなるのだろう。

事前準備は何が必要か

homebrewのセットアップ。
Xcodeをインストールしておく必要がある。

サンプルとなるansible playbookを作成した

サンプルとなるansible playbookを用意した。

.
├── Brewfile
├── README.md
├── Vagrantfile
├── group_vars
│   └── vagrant.box
├── packer
│   ├── builds
│   ├── http
│   │   └── ks.cfg
│   ├── scripts
│   │   ├── base.sh
│   │   ├── cleanup.sh
│   └── template.json
├── roles
│   ├── common
│   │   └── tasks
│   │       ├── base.yml
│   │       └── main.yml
│   ├── mysql
│   │   └── tasks
│   │       ├── install.yml
│   │       ├── main.yml
│   │       ├── repo.yml
│   │       └── setup-the-root.yml
│   ├── nginx
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   ├── copy-file-in-server.yml
│   │   │   ├── create-of-log-dir-for-wordpress.yml
│   │   │   ├── install.yml
│   │   │   ├── main.yml
│   │   │   └── repo.yml
│   │   └── templates
│   │       ├── conf.d
│   │       │   └── wordpress.conf
│   │       ├── nginx.conf
│   │       └── nginx.repo
│   ├── php
│   │   └── tasks
│   │       ├── install.yml
│   │       ├── main.yml
│   │       └── start-of-php-fpm.yml
│   └── wordpress
│       ├── files
│       │   └── wp-config.php
│       └── tasks
│           ├── install.yml
│           ├── main.yml
│           └── mysql.yml
├── site.yml
└── vagrant.box

playbook-wordpress

Brewfile, packerのテンプレート,Vagrantfile, ansibleのplaybook
それぞれを同梱することで、あんま考えずすぐに開発環境を構築できるようにしている。

このplaybookはnginx, mysql, php, wordpressのインストールを行う。

ホストで実行すべきコマンド

すでにhomebrewをインストールしているのであれば、
以下のコマンドを続けて叩けば終わる。

> brew bundle
> vagrant up --provision
> open http://vagrant.192.168.33.123.xip.io/

Brewfileにより、homebrewでセットアップ可能な
ソフトウェアがマシンにインストールされる。便利。

スクリーンショット 2014-03-10 10.48.29.png

packerやらvagrantやらがインストールされる。

vagrant up --provision を実行すると、
packerによりVagrant向けのマシンイメージが作成され、
続けてansible-playbookが実行される。

一回packerでマシンイメージを作成しとけば ~/.box 以下に
Vagrant boxイメージが置かれるようにした。
ただ、vagrant destory時に~/.boxの状態が変わるとpackerが再度buildするのがアレ感ある

setup-centos65.png

ansible-playbookによるplaybookのゲストマシンへの適用後、
http://vagrant.192.168.33.123.xip.io/にアクセスすると、
wordpressの初設定画面が表示される。

スクリーンショット 2014-03-10 10.39.34.png

ゲストマシンで起動するwordpressへの書き込みが行える状態になる。

スクリーンショット 2014-03-09 15.35.04.png

スクリーンショット 2014-03-09 15.35.24.png

ホスト側のディレクトリをゲストから使いたい...

Vagrantは、デフォルトで/vagrant ディレクトリに対し、
Vagrantfileがあるディレクトリをマウントしている。

rails sをしてゲストマシン上でRailsアプリの立ちあげを実行したい場合は
以下のようにすれば良い。

> cd /vagrant
> rails s

コードを書くのは常にホスト側で良い。

今後の方針

  1. packer, vagrantの組み合わせは利用していきたい
  2. ミドルウェアのインストールについて、chefを利用してもよいのだけど、簡便なansibleなplaybookを作る方向で頑張りたい
  3. localhostへのアクセスはxip.io(か、xipd)を利用してアクセスするようにすればDNSサーバが...(/etc/hosts)の問題はなんとかなるのかな、ホスト名違うからSSL証明書問題(まあ厳密にしなければいいのかな)がありそうだけど...

3ヶ月後にはまた変わってそうだけど。

開発環境構築を簡略化する意味

  1. 伝えるのが3行で済むので、連絡ミスやオペミスは発生しなさそう
  2. マシンを作成するレシピはgithubに上がっているので取り違えたりすることはないだろう
  3. マシンを構築する手順がレシピ化(playbook)されているので、レビューが可能なのが良い。
  4. wikiに開発環境手順を逐一順序立てて書いていく必要がなくなるので負担が減る

参考

packer templateのレシピ

brew cask

みんなhomebrew-caskって知ってるか?

41
39
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
39