radiko を録音したりする radicast を docker で動かす

soh335/radicast · GitHub

radiko を録音したり、podcast 形式の xml を配信する radicast というのを前に作った。これを動かすには radicast 以外に

が必要だった。

録音する環境を移動しようかと考えていたので Dockerfile に記述しポータビリティを高めてみようと思った。 なので Dockerfile を用意し、docker-hub で automated build を行うようにした

$ mkdir -p workspace
$ cd workspace
$ docker pull soh335/radicast
$ docker run --rm soh335/radicast:latest --setup > config.json
$ docker run --rm -p 3355:3355 -v `pwd`:/workspace soh335/radicast:latest --config /workspace/config.json --output /workspace/output

利用するには、このような感じで mp3 が保存されたり設定ファイルを置いておくディレクトリを作成し、docker-hub から pull する。 後は radicast 単体で動かすように setup flag で設定ファイルを生成してから、setup flag なしでもう一度コマンドを打つと起動出来る。

所感

最初は wercker で build, test を行っているので tag が打たれた際に github release にクロスコンパイルされたものがアップロードされ、docker-hub の build trigger を利用して、github release からダウンロードしたバイナリでイメージの build が行われるようなフローを期待して作業をしていた。

なので、soh335/wercker-step-docker-hub-build-trigger · GitHub というのを作った。ただ、これは最終的には利用しなかった。

build trigger の場合は、登録されている Dockerfile で処理が行われるので、Dockerfile に更新があった場合などに対応出来ない。 なので結局は go get を単純に行い、master のものが常に build されるということにした。

PLANTRONICS BACKBEAT FIT を買った

ランニング用に購入。軽くてずれない、カナル式じゃないので外でも聞けるので良かった。 思ってた以上に有線で運動するのがストレスだったという知見を得た。

ハリオ V60 ドリップスケール VST-2000B を買った

  • 豆の量がちゃんと量れる
  • 淹れてる量がちゃんと量れる
  • 淹れてる時間がちゃんと計れる

一台で珈琲淹れるのにちゃんと出来るので便利

ansible の role を wercker 上で serverspec で test する

ansible の role を serverspec で test をしてみたいと思い、普段使っている wercker で試してみた。

まず、serverspec と ansible が install されている wercker の box を用意した。 次に sample となる role を作った。

soh335/ansible-role-tmux1.9 · GitHub

ディレクトリ構成はこのようにした。

 $ tree
.
├── LICENSE
├── README.md
├── tasks
│   └── main.yml
├── tests
│   ├── Rakefile
│   ├── inventory.ini
│   ├── roles
│   │   └── tmux1.9 -> ../../
│   ├── site.yml
│   └── spec
│       ├── localhost
│       │   └── tmux_spec.rb
│       └── spec_helper.rb
└── wercker.yml

tests ディレクトリ

tests ディレクトリの下に wercker 上で実行される ansible から role を呼び出すための site.yml, inventory.ini を用意した。 また、roles ディレクトリの下に適当な名前(ここでは tmux1.9 ) でシンボリックリンクを貼り、ansible の通常のディレクトリ構成とした。

server spec の test は local 用で生成した。

site.yml

---
- hosts: localhost
  roles:
    - tmux1.9

inventory.ini

[localhost]
127.0.0.1

wercker.yml

box: soh335/serverspec-ansible@0.0.1
build:
  steps:
    - script:
        name: apt-get update
        code: sudo apt-get update

    - script:
        name: ansible-playbook
        code: |
          cd $WERCKER_SOURCE_DIR
          sudo ansible-playbook -v tests/site.yml -i tests/inventory.ini -c local

    - script:
        name: rake spec
        code: |
          cd $WERCKER_SOURCE_DIR/tests
          rake spec

このような感じで上で用意した site.yml で ansible-playbook の実行、tests ディレクトリで rake spec を実行するようにした。

所感

  • wercker の box に対して操作を行っているので os, version が固定されていてるという問題がある 。docker のコンテナに対して操作すべき?(時間かかりそう)
  • role ごとの簡単なテストとしては書いといても損はないかもしれない
  • 結局綺麗な状態のホストに対してプロビジョニングしているので意味ないような気もする。