SlideShare una empresa de Scribd logo
1 de 27
ansibleを使って
Dockerコンテナを
プロビジョニングする
GMO AD MARKETING インフラ開発本部
Adachi Ryo
For APG Engineer Night
アジェンダ
• 自己紹介
• 今までの検証環境/docker使うとなにがいいのか
• ansibleとdocker
• docker connection pluginとは
• 環境構築
• dockerホストの監視とdockerホストWebUIについて紹介
• デモ
• まとめ
• @adachin0817
• Ryo Adachi
• GMO AD MARKETING
• Infra Engineer
• http://adachin.server-on.net/
そもそもなんでansibleなのか!
• 今まで様々な構成管理ツールを使っていたが、
ansibleに統一することにした
• 様々なモジュールがあるため今後の将来性があ
る
• やっぱり学習コストが低い
今までの検証環境
• Vagrantを使いまくっていた
• 構築するのに手間がかかる(Macでは限界)
• 複数仮想マシンつくると管理がめんどくさい
• dockerで全て検証したい!
dockerを使うとなにがいいのか
• コンテナ技術が軽すぎる
• ゲストイメージの起動が一瞬
• IPも自動で振られる
• インフラの人じゃなくてもすぐに構築ができる
• サーバに優しい、サーバ構成管理が簡単に可視化でき
る
• 学習コストはそこまで高くない
ansibleとdocker
• dockerホストにansibleを入れれば
OKじゃないの?
→そもそもそんなことしなくていい
• ansible2.0からdockerのConnection Pluginに対応
した
イメージ図
• docker connection pluginとは
• Docker Remote APIを利用したコンテナのプロビ
ジョニングが可能
• ansible実行環境からDockerホストへRemote API
を実行できる環境であれば、Dockerコンテナで
sshdを起動しておく必要はない
ちなみに現実の世界だと
環境構築
• # docker -v
Docker version 1.12.1, build b9f10c9
• $ docker-machine -v
docker-machine version 0.8.1
ローカルにansibleインストール
• $ brew install ansible
• $ ansible —version
ansible 2.1.1.0
dockerホスト環境設定
• $ docker-machine ls
docker01 - virtualbox Running
tcp://192.168.99.100:2376 v1.12.0
• $ eval "$(docker-machine env docker01)"
• $ docker info
Containers: 0
Running: 0
ansibleイベントファイルの作成
• $ vim hosts
[docker_host]
docker01
• [container]
test-container
ansibleイベントファイルの作成
• $ vim ssh_config
Host docker01
HostName 192.168.99.100
User docker
UserKnownHostsFile /dev/null
IdentityFile
~/.docker/machine/machines/docker01/id_rsa
StrictHostKeyChecking no
ansibleイベントファイルの作成
• $ vim ansible.cfg
[defaults]
inventory = hosts
[ssh_connection]
ssh_args = -F ssh_config
scp_if_ssh = True
• cp /etc/ansible or /usr/local/etc/ansible/
dockerホストにPythonのインストール
• docker@docker01:~$ tce-load -wi python
• docker@docker01:~$ python --version
Python 2.7.10
• docker@docker01:~$ curl https://bootstrap.pypa.io/get-pip.py | sudo
python -
• docker@docker01:~$ sudo pip install docker-py
• docker@docker01:~$ sudo ln -s /usr/local/bin/python /usr/bin/python
dockerホストとの接続確認
• $ ansible -i hosts docker01 -m ping
docker01 | SUCCESS = {
"changed": false,
"ping": "pong"
}
プロビジョニング
• ---
- hosts: docker01
become: yes
remote_user: docker
tasks:
- name: deploy centos container
docker: image=centos:centos6 name=test-container ports=80:80 expose=80 tty=yes
- hosts: test-container
connection: docker #Docker Connection Plugin
- include: roles/common/tasks/yum_update.yml
tags: yum_update.yml
- include: roles/common/tasks/yum_repos.yml
tags: yum_repos.yml
- include: roles/common/tasks/user.yml
tags: common
実行
• $ ansible-playbook docker-site.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [docker01]
TASK [deploy centos container] *************************************************
changed: [docker01]
PLAY [test-container] ************************************************************
TASK [setup] *******************************************************************
ok: [test-container]
TASK [yum_update.yml] ********************************************************
changed: [test-container] > (item=[u'yum_update.yml'])
TASK [yum_repos.yml] **********************************************************
changed: [test-container] > (item= yum_repos.yml)
TASK [common] **********************************************************
changed: [test-container] > (item= common)
PLAY RECAP *********************************************************************
docker01 : ok=2 changed=1 unreachable=0 failed=0
test-container : ok=3 changed=2 unreachable=0 failed=0
コンテナが立ち上がってる確認
• docker@docker01:~# docker ps
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES
9fbc512669a2 centos:6 "/bin/bash" 54 minutes
ago Up 54 minutes 0.0.0.0:80-80/tcp test-
container
コンテナログイン
• docker attach ハッシュ値だとコマンドが打てな
い
• docker exec -it Containername /bin/bashすれば
問題なし
• dockerホストの監視と
dockerホストWebUIについて紹介
・netdata(リアルタイムモニタリングツール)
• dockerホストの監視と
dockerホストWebUIについて紹介
・shipyard(dockerホストWebUI)
デモやります
まとめ
• dockerでも問題なくansible使って検証できる
• vagrantと違ってすぐ消してほかにも試せる
• 社内検証用dockerサーバも構築予定
• アプリチームにはansibleで作ったplaybook(コン
テナ)をイメージ側して起動するだけで環境を整
えさせる
ご清聴ありがとう
ございました!

Más contenido relacionado

La actualidad más candente

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

La actualidad más candente (20)

Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
Dockerと継続的インテグレーション
Dockerと継続的インテグレーションDockerと継続的インテグレーション
Dockerと継続的インテグレーション
 
僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
 
Using LXC on Production
Using LXC on ProductionUsing LXC on Production
Using LXC on Production
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Wocker 秒速で WordPress 開発環境を構築する
Wocker 秒速で WordPress 開発環境を構築するWocker 秒速で WordPress 開発環境を構築する
Wocker 秒速で WordPress 開発環境を構築する
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 

Destacado

OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
外道 父
 
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
Insight Technology, Inc.
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
Takayuki Hayashi
 

Destacado (20)

Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた
 
リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法
 
ほんとうはこわいAnsible
ほんとうはこわいAnsibleほんとうはこわいAnsible
ほんとうはこわいAnsible
 
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
 
運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールAnsibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
 
2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話
 
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
 
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube Channels
 
2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
 

Similar a Ansibleを使ってdockerコンテナをプロビジョニングする

20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
Shugo Numano
 

Similar a Ansibleを使ってdockerコンテナをプロビジョニングする (20)

Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
130412 kayac-cinnamon
130412 kayac-cinnamon130412 kayac-cinnamon
130412 kayac-cinnamon
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Fig
FigFig
Fig
 
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 

Ansibleを使ってdockerコンテナをプロビジョニングする