dockerhubを活用してansibleのplaybookを自動ビルドする

20
DockerHubを活用してAnsible Playbookを自動ビルドする tech-circle #6 LT 2015/6/8 @shiraco

Upload: koji-shiraishi

Post on 05-Aug-2015

344 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

DockerHubを活用してAnsibleのPlaybookを自動ビルドする

tech-circle #6 LT 2015/6/8

@shiraco

Page 2: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

自己紹介

白石康司 @shiraco

TIS株式会社 戦略技術センター Tech-Circle 運営スタッフ 機械学習/自然言語処理 Python/R言語

Page 3: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

最近の仕事:ロボットの対話エンジンの開発

Page 4: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

構成管理ツール導入の動機• めったにやらないけど、複雑なので毎回ハマる機械学習の開発環境構築を再実行可能にする

• ブラックボックス化しがちで、だれが作ったかわからなくなるデモ環境構築を見える化する

Page 5: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

Ansibleに注目している理由• 複雑な環境構築手順でも確実に再現できる

• コマンドと大体1:1のタスクで記述可能

• 覚えることが少なく、誰でも簡単に扱える

• YAMLでサーバの状態を共有(Python知らないメンバーでも大丈夫)

WEB APP DB

・task1 ・task2 ・task3

・task1 ・task2 ・task3

・task1 ・task2 ・task3

Page 6: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

15min. ok

Ansibleの課題• デバッグに時間がかかる

• Playbookが動作確認済の状態かどうか分からない

・task1・task2・task3

・task1・task2・task3

10min. ok

20min. error

・task1・task2・task3

・task1・task2・task3

? ? ?

Page 7: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

Playbookを自動でビルドしたいPlaybookをビルド結果とセットで管理したい

Page 8: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

ansible-docker-base

Page 9: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

ansible-docker-base

• AnsibleのみインストールされているDockerコンテナ

• Ubuntu版とCentOS版がある

• Ansibleを実行するだけのサンプルDockerfileあり

• DockerHubでDockerfileを自動ビルドできる

Page 10: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

DockerとDockerHubDocker

• Docker社が開発しているオープンソースのコンテナ型仮想化ソフトウェア

• Ansibleと違って起点を明示的に指定するため冪等性を考慮する必要がない

DockerHub

• Docker向けのコンテナ共有クラウドサービス(SaaS)

• GitHubのリポジトリと1:1で連携することができる

• ビルド、テスト、デプロイの一連の継続的インテグレーションを実現

Page 11: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

例えば

Page 12: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

ansible

めったにやらないので 毎回ハマる機械学習の開発環境構築を

Ansibleで実行する

python3

pyenv

python libraries

playbook

numpy

scikit-learn

scipy

ipython

Trial & Error でPlaybookを作成

Page 13: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

docker container

ansible

めったにやらないので 毎回ハマる機械学習の開発環境構築を

Ansibleで実行する

python3

pyenv

python libraries

playbook

numpy

scikit-learn

scipy

ipython

Dockerfile

Page 14: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

ipython notebook

Page 15: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

ディレクトリ構成FROM ansible/ubuntu14.04-ansible:stable

# Dockerイメージにansibleディレクトリを追加ADD ansible /srv/example/WORKDIR /srv/example

# Playbookをローカルマシンで実行RUN ansible-playbook site.yml -c local

# 動作確認のための設定EXPOSE 22 3000 80

. ├── Dockerfile └── ansible ├── hosts ├── roles │   ├── common │   └── ipython └── site.yml

Page 16: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

要注意• ansible-docker-baseのコンテナにはubuntuユーザや、centosユーザが居ない

• remote_userにubuntu/centosを指定している場合、事前にrootでユーザを作る必要がある

• さらに、AWSなどの場合、rootユーザでは接続できないのでubnutuユーザチェックが必要

---

- name: create ubuntu group group: name=ubuntu state=present gid=1000

- name: create ubuntu user user: name=ubuntu shell=/bin/bash groups=ubuntu uid=1000

Page 17: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

要注意• 環境が必ずしも一致しているとは限らない

• aptitudeがなくて怒られる

Page 18: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

DockerHubでPlaybookの状態がわかる!

Page 19: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

まとめ• Dockerの知識なしに安易にDockerHubでPlaybookをビルドしようとするとうまくいかないよ

• Dockerもちゃんと抑えて(理解して)有効活用しよう

Page 20: DockerHubを活用してAnsibleのPlaybookを自動ビルドする

Thank you!