萌えキャラとは何だったのか

ギークにも絵描きにもなれない者の末路

社内isuconで新卒にボッコボコにされたので、役立たずとして社内に居場所がなくなりそうです、mix3です。

@acidlemonmirage を「使ってテスト環境を立てまくるぜー」みたいなことが割と当たり前になりつつあって今関わってるプロジェクトもいずれはそうしたいなぁということがありまして。(CentOS6だと不都合があるっぽくてCentOS7に移行するなりそこクリアしてからだけど)

いざ「環境作れよ、あくしろよ」となっても困らないように練習しておこうと思い立って、持て余してるさくらvpsの一つをdocker専用にしてみた。ついでにCoreOSなんかも使ってみた。

ISOのアップロードしてリモートコンソールを開く

ところまでは さくらのVPSにCoreOSをインストールしてDocker専用機にする - Qiita を参考にした

sshで繋ぐ

ところは CoreOSをさくらVPSサーバに入れようとして嵌ったのでメモ - Qiita を参考に /etc/systemd/network/static.network を作らずに以下を実行した

sudo ifconfig <network port> <ip address> netmask <netmask>  
sudo route add default gw <default gateway IP>
$ sudo vi /etc/resolv.conf
nameserver <DNS1>

cloud-config

CoreOSをさくらVPSサーバに入れようとして嵌ったのでメモ - Qiita を参考にした

#cloud-config

coreos:  
  units:
    - name: static.network
      content: |
        [Match]
        Name=eth0

        [Network]
        Address=<IPアドレス>/<サブネットマスク>
        Gateway=<ゲートウェイ>
        DNS=<DNS1>
        DNS=<DNS2>

ssh_authorized_keys:
  - ssh-rsa ABCDABCDABCDABCDABCDABCDABCDABCDABCD...

CoreOS のインストールと reboot

インストールは さくらのVPSにCoreOSをインストールしてDocker専用機にする - Qiita を参考に以下のようにした。 記事では -C alpha だけど -C stable にしておいた。

$ sudo coreos-install -d /dev/vda -c cloud-config -C stable

reboot は VPS の管理画面から。 sudo reboot とかすると再度 LiveCD で boot されてしまう。

ログイン

cloud-configの設定によって公開鍵が設定されてるはずなので、それでログイン出来るようになってるハズ。

Docker 無しで mirage を動かしてみる

最新の mirage を落としてくる https://github.com/acidlemon/mirage/releases/download/v0.2.0/mirage-v0.2.0-linux-amd64.zip

解凍したら cp config_sample.yml config.yml して編集

host:
  # web api host
  # you can use API and Web interface through this host
  # webapi: docker.dev.example.net
  webapi: mirage.sakura

  # host suffix
  # if you access to foo.dev.example.net, mirage search "foo" subdomain container
  reverse_proxy_suffix: .sakura

listen:
  # listen address
  # default is only listen from localhost
  foreign_address: 0.0.0.0

  # listen port and reverse proxy port
  http:
    # listen 8080 and transport to container's 5000 port
    - listen: 80
      target: 5000

  # not implemented
  # we recommend to use frontend http(like nginx) to SSL termination
  # HTTPS:
  #   - 443

docker:
  # if you use docker through http, specify like "http://localhost:4243"
  endpoint: unix:///var/run/docker.sock

  # if you specify this, fill the form as default value on web interface.
  # default_image: myapp:latest

storage:
  datadir: ./data
  htmldir: ./html

で ./mirage として起動すると mirage.sakura でアクセスすると *.sakura で名前解決できるようになっていれば mirage の web interface が見える

dnsmasq

ドメイン持ってる場合は「*」でAレコード設定して mirage.sakura, .sakura をそれに合わせて設定すれば良いかと思う。持ってない場合は dnsmasq 使うと良い感じに名前解決が設定できるのでおすすめ。

brew install dnsmasq して指示に従って起動する

$ brew install dnsmasq
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
$ sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
$ sudo chown root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

設定はさっきの *.sakura であればこんな感じで良いかと思う。

$ sudo vim /etc/resolver/sakura
nameserver 127.0.0.1
$ vim /usr/local/etc/dnsmasq.conf
address=/sakura/<IP>

Docker で mirage を起動する

mirage は Dockerfile が用意されていて Docker で起動することもできるので試してみる。

Dockerfileconfig.yml を持ってきて config.yml を少し変更する

host:
  # web api host
  # you can use API and Web interface through this host
  # webapi: docker.dev.example.net
  webapi: mirage.sakura

  # host suffix
  # if you access to foo.dev.example.net, mirage search "foo" subdomain container
  reverse_proxy_suffix: .sakura

listen:
  # listen address
  # default is only listen from localhost
  foreign_address: 0.0.0.0

  # listen port and reverse proxy port
  http:
    # listen 8080 and transport to container's 5000 port
    - listen: 8080
      target: 5000

  # not implemented
  # we recommend to use frontend http(like nginx) to SSL termination
  # HTTPS:
  #   - 443

docker:
  # if you use docker through http, specify like "http://localhost:4243"
  endpoint: unix:///var/run/docker.sock

  # if you specify this, fill the form as default value on web interface.
  # default_image: myapp:latest

storage:
  datadir: /mirage
  htmldir: /opt/mirage/html

コンテナを起動するときのポートフォワードの設定に listen port を合わせておくのと storage をDocker 用のものに合わせておく。

あとは docker build, docker run するだけ

$ docker build -t acidlemon/mirage:latest .
$ docker run -d --name mirage -p 80:8080 acidlemon/mirage:latest

あとは mirage を使うだけ

予習完璧やで(完璧とは言っていない)