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

More Related Content

Viewers also liked

Viewers also liked (12)

Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化
 
Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献
 
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAよろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
 
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]
 
Ansibleを使ってみよう ~Windowsターゲット編~
Ansibleを使ってみよう~Windowsターゲット編~Ansibleを使ってみよう~Windowsターゲット編~
Ansibleを使ってみよう ~Windowsターゲット編~
 
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - Ansible
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
Ansible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみたAnsible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみた
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
AnsibleをWerckerでCIして
テストが終わると
本番環境が出来てる話
AnsibleをWerckerでCIして
テストが終わると
本番環境が出来てる話AnsibleをWerckerでCIして
テストが終わると
本番環境が出来てる話
AnsibleをWerckerでCIして
テストが終わると
本番環境が出来てる話
 

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

HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Masakazu Muraoka
 

Similar to DockerHubを活用してAnsibleのPlaybookを自動ビルドする (20)

Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
vscode pipenv docker
vscode pipenv dockervscode pipenv docker
vscode pipenv docker
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境
 
Confluence と DITA による Webマニュアル作成フロー
Confluence と DITA によるWebマニュアル作成フローConfluence と DITA によるWebマニュアル作成フロー
Confluence と DITA による Webマニュアル作成フロー
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
ChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かすChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かす
 
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat ops
 
K8sjp11 KubeCon-Recap Multi-Cluster Operations
K8sjp11 KubeCon-Recap Multi-Cluster OperationsK8sjp11 KubeCon-Recap Multi-Cluster Operations
K8sjp11 KubeCon-Recap Multi-Cluster Operations
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
clominal
clominalclominal
clominal
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
 

More from Koji Shiraishi

More from Koji Shiraishi (10)

りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
りんな風 女子高生Bot - docomo雑談対話API +α を使って 自分専用Botを作る -
 
Salon Bot 〜ヘアサロンLINEアシスタントの対話を Repl-AIを使ってプロトタイピング〜
Salon Bot 〜ヘアサロンLINEアシスタントの対話を Repl-AIを使ってプロトタイピング〜Salon Bot 〜ヘアサロンLINEアシスタントの対話を Repl-AIを使ってプロトタイピング〜
Salon Bot 〜ヘアサロンLINEアシスタントの対話を Repl-AIを使ってプロトタイピング〜
 
IT勉強会を支えるコミュニケーション
IT勉強会を支えるコミュニケーションIT勉強会を支えるコミュニケーション
IT勉強会を支えるコミュニケーション
 
MFT打上げLT
MFT打上げLTMFT打上げLT
MFT打上げLT
 
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
 
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
Tech-Circle Pepperで機械学習体験ハンズオン勉強会inアトリエ秋葉原
 
Techcircle005 welcome
Techcircle005 welcomeTechcircle005 welcome
Techcircle005 welcome
 
Techcircle001-OpenStackハンズオン勉強会
Techcircle001-OpenStackハンズオン勉強会Techcircle001-OpenStackハンズオン勉強会
Techcircle001-OpenStackハンズオン勉強会
 
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発! SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
 
セマンティック・ウェブのためのRDF/OWL 入門 6章 後半
セマンティック・ウェブのためのRDF/OWL 入門 6章 後半セマンティック・ウェブのためのRDF/OWL 入門 6章 後半
セマンティック・ウェブのためのRDF/OWL 入門 6章 後半
 

Recently uploaded

Recently uploaded (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

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