memori

Alternative facts

IDCF クラウドの環境を terraform で構築したい

と思っているんですが、 ちょっと悩ましい問題があるんですよね。

  • Atlas + Terraform で構築したい
  • GitHub で tf ファイルを管理したい
  • サーバー追加時に初期セットアップもやりたい (ベースになるパッケージのインストールとかユーザー追加とか)

Atlas+Terraform+GitHub でインフラを用意することはできても、初期セットアップをどこでやるかという問題があって、

  • cloudstack_instanceremote-exec だと、まだ外部接続が不可 (ポートフォワーディングのルールは cloudstack_instance 実行後ではないとつけられないため)
  • それならば、と cloudstack_port_forward のタイミングで remote-exec すると、ポートフォワードのルールを書き換えるたびに実行されてしまう

素直に Packer で準備したものを配布しろよっていう気もするけど、Packer もどうせなら Atlas でビルドしたい。そうすると、IDCF のテンプレートには OVA しか使えないので厳しいという新たな問題が。

cloudstack_instanceremote-exec 実行中に次の cloudstack_port_forward も実行してくれると嬉しいんだけど、現状だと素直に待ち続けてしまうっぽくて、繋がるのを待つ、ということもできないし、あまり綺麗な解法が思いつかないなあ。

ベースになる VM は手動で立ててしまって、そこを Bastion Host として実行するのがいいのかな〜。うーん。


Packer でビルドした後のものを ovftool で変換し続けるだけのサーバーを用意してもいいのかもしれない。

HHVM on Heroku で Hack!

さて、今話題の Hack ですが、気軽に試したいけど HHVM とかインストールするのめんどくせーよ!っていう方、居ますよね。

そんな時、heroku-buildpack-hhvm をつかえば、ほんの数ステップで Heroku で Hack を試してみることが出来ますよ!

簡単に Hello World を作るまでの解説をすると、

1. git リポジトリ作る

git リポジトリを最初に作る必要も無いんですが、後々手間がかからないので僕はまず作っちゃいます。

mkdir hhvm-on-heroku-hack
cd hhvm-on-heroku-hack
vim index.php // <?hh echo "Hello Hack!";
git init
git add index.php
git commit -m "Initial commit"

2. Heroku アプリを作成する

heroku-buildpack-hhvm を buildpack に指定するだけですよ! アプリが作成されると、git remote (heroku) に heroku の git リポジトリ URL が登録されます。

heroku create --buildpack https://github.com/hhvm/heroku-buildpack-hhvm

3. デプロイ

はい、完了。

git push heroku master

僕がこの手順で作ったページは、http://hhvm-on-heroku-hack.herokuapp.com からアクセスできるようにしておきました。あと、デプロイしているのはこんなかんじ のファイルです。

簡単でしょ?