dockerhubを活用してansibleのplaybookを自動ビルドする
TRANSCRIPT
![Page 1: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/1.jpg)
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
tech-circle #6 LT 2015/6/8
@shiraco
![Page 2: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/2.jpg)
自己紹介
白石康司 @shiraco
TIS株式会社 戦略技術センター Tech-Circle 運営スタッフ 機械学習/自然言語処理 Python/R言語
![Page 3: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/3.jpg)
最近の仕事:ロボットの対話エンジンの開発
![Page 4: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/4.jpg)
構成管理ツール導入の動機• めったにやらないけど、複雑なので毎回ハマる機械学習の開発環境構築を再実行可能にする
• ブラックボックス化しがちで、だれが作ったかわからなくなるデモ環境構築を見える化する
![Page 5: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/5.jpg)
Ansibleに注目している理由• 複雑な環境構築手順でも確実に再現できる
• コマンドと大体1:1のタスクで記述可能
• 覚えることが少なく、誰でも簡単に扱える
• YAMLでサーバの状態を共有(Python知らないメンバーでも大丈夫)
WEB APP DB
・task1 ・task2 ・task3
・task1 ・task2 ・task3
・task1 ・task2 ・task3
![Page 6: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/6.jpg)
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を自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/7.jpg)
Playbookを自動でビルドしたいPlaybookをビルド結果とセットで管理したい
![Page 8: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/8.jpg)
ansible-docker-base
![Page 9: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/9.jpg)
ansible-docker-base
• AnsibleのみインストールされているDockerコンテナ
• Ubuntu版とCentOS版がある
• Ansibleを実行するだけのサンプルDockerfileあり
• DockerHubでDockerfileを自動ビルドできる
![Page 10: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/10.jpg)
DockerとDockerHubDocker
• Docker社が開発しているオープンソースのコンテナ型仮想化ソフトウェア
• Ansibleと違って起点を明示的に指定するため冪等性を考慮する必要がない
DockerHub
• Docker向けのコンテナ共有クラウドサービス(SaaS)
• GitHubのリポジトリと1:1で連携することができる
• ビルド、テスト、デプロイの一連の継続的インテグレーションを実現
![Page 11: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/11.jpg)
例えば
![Page 12: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/12.jpg)
ansible
めったにやらないので 毎回ハマる機械学習の開発環境構築を
Ansibleで実行する
python3
pyenv
python libraries
playbook
numpy
scikit-learn
scipy
ipython
Trial & Error でPlaybookを作成
![Page 13: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/13.jpg)
docker container
ansible
めったにやらないので 毎回ハマる機械学習の開発環境構築を
Ansibleで実行する
python3
pyenv
python libraries
playbook
numpy
scikit-learn
scipy
ipython
Dockerfile
![Page 14: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/14.jpg)
ipython notebook
![Page 15: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/15.jpg)
ディレクトリ構成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を自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/16.jpg)
要注意• 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を自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/17.jpg)
要注意• 環境が必ずしも一致しているとは限らない
• aptitudeがなくて怒られる
![Page 18: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/18.jpg)
DockerHubでPlaybookの状態がわかる!
![Page 19: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/19.jpg)
まとめ• Dockerの知識なしに安易にDockerHubでPlaybookをビルドしようとするとうまくいかないよ
• Dockerもちゃんと抑えて(理解して)有効活用しよう
![Page 20: DockerHubを活用してAnsibleのPlaybookを自動ビルドする](https://reader034.vdocuments.net/reader034/viewer/2022052700/55c15386bb61eb041e8b4765/html5/thumbnails/20.jpg)
Thank you!