SlideShare a Scribd company logo
入門Ansible
@takuan_osho
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibleを使うと何が嬉しいのか?
• 他の類似ツールとは何が違うのか?
• Ansibleを動かすのに必要なシステム要件は?
• どんな企業が実際に使っているのか?
๏ Ansibleの基本的な使い方
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibleを使うと何が嬉しいのか?
• 他の類似ツールとは何が違うのか?
• Ansibleを動かすのに必要なシステム要件は?
• どんな企業が実際に使っているのか?
๏ Ansibleの基本的な使い方
13年9月15日日曜日
自己紹介
๏清水 琢(しみず たく)
• @takuan_osho
• Blog : http://takuan-osho.hatenablog.com/
๏趣味でプログラミングをしている
• Python関連の勉強会
(Sphinx関連、PyFesなど)に
よく出ています
๏PyCon JP 2012 副座長
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibleを使うと何が嬉しいのか?
• 他の類似ツールとは何が違うのか?
• Ansibleを動かすのに必要なシステム要件は?
• どんな企業が実際に使っているのか?
๏ Ansibleの基本的な使い方
13年9月15日日曜日
Ansibleとは何か?
一言で言うと
サーバ構築を自動化する
ツール
13年9月15日日曜日
Ansibleとは
๏共通したインターフェースで
メジャーなIT自動化の機能を提供してくれる
1. 構成管理
(Configuration Management)
2. アプリケーションのデプロイ
(Application Deployment)
3. 継続的デリバリー
(Continuous Delivery)
13年9月15日日曜日
Ansibleとは
๏共通したインターフェースで
メジャーなIT自動化の機能を提供してくれる
1. 構成管理
(Configuration Management)
2. アプリケーションのデプロイ
(Application Deployment)
3. 継続的デリバリー
(Continuous Delivery)
13年9月15日日曜日
作者
๏ Michael DaHaan氏
• AnsibleWorksの
Co-Founder、CTO
• Cobbler, Funcに
携わっていた
• 2012年にAnsibleの
Projectを立ち上げる
• 現実世界における
サーバ自動化の問題を
単純化したかった
13年9月15日日曜日
Ansibleとは何か?
一言で言うと
サーバ構築を自動化する
ツール
13年9月15日日曜日
本セッションの
対象者
๏初心者
•サーバー構築をやったことが無い人
•サーバー構築を手作業では
やったことがあるが、
ツールを利用してやったことは無い人
•Ansibleのことを初めて聞いた人
13年9月15日日曜日
本セッションで
話すこと
๏Ansibleをインストールした後、
デフォルトで出来ることに限定
•公式ドキュメントに書かれている
ことの中からポイント抜粋
      +
今まで集めてきた
Ansible関連の有用な情報
13年9月15日日曜日
本セッションで
話さないこと
๏インストールした後、
デフォルトではできないこと
๏具体的には…
• 他のツールやWebサービスとの連携
(Vagrant、AWSなど)
• モジュール開発、API
• Ansible AWX (WebUIサービス)
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibleを使うと何が嬉しいのか?
• 他の類似ツールとは何が違うのか?
• Ansibleを動かすのに必要なシステム要件は?
• どんな企業が実際に使っているのか?
๏ Ansibleの基本的な使い方
13年9月15日日曜日
Ansibleを使うと
何が嬉しいのか?
๏ サーバーの環境構築を自動化できる
• 手作業によるミスの減少
• 新規環境をすぐに用意できる
• 実験的な環境構築・破壊が楽に
๏ 同じ環境を「複数台に」「並列に」
適用できる
• 開発・ステージング・本番環境を
全く同じように用意することが可能に
➡アプリケーションのデプロイ時の
トラブルを減らせる
13年9月15日日曜日
他の類似ツールとは
何が違うのか?
13年9月15日日曜日
13年9月15日日曜日
先日のPyConの
セッションで
こんなセッションがありました
13年9月15日日曜日
Pythonユーザの
ための構成管理入門
13年9月15日日曜日
よくまとまっているので
そちらから引用します
13年9月15日日曜日
詳しく知りたい方は
引用元を参照
• 「Pythonユーザのため
 の構成管理入門」
• 資料
• http://www.slideshare.net/
TakeshiKomiya/python-26185953
• 動画
• http://www.youtube.com/watch?
v=VDIxJjZEJJA
13年9月15日日曜日
類似ツールの比較図
13年9月15日日曜日
Ansibleの特徴
13年9月15日日曜日
Ansibleの特徴
๏ 冪等性(Idempotency)
• 何回やっても同じ結果になること
๏ Battery included
• 標準モジュールの豊富さ
๏ Push型のアーキテクチャが基本
• リモートホストに特別なプログラムを
事前にインストールする必要がない
(Python2.4以上があるリモートホストにssh接続できればOK)
๏ シンプル
• 設定はYAML - 読みやすい(書きやすい)
13年9月15日日曜日
Ansibleの特徴
๏ 冪等性(Idempotency)
• 何回やっても同じ結果になること
๏ Battery included
• 標準モジュールの豊富さ
๏ Push型のアーキテクチャが基本
• リモートホストに特別なプログラムを
事前にインストールする必要がない
(Python2.4以上があるリモートホストにssh接続できればOK)
๏ シンプル
• 設定はYAML - 読みやすい(書きやすい)
13年9月15日日曜日
Ansibleを動かすのに
必要なシステム要件は?
๏必要なシステム要件は2種類ある
•ローカルホスト側のシステム要件
•リモートホスト側のシステム要件
13年9月15日日曜日
ローカルホスト側に
必要なもの
๏Python 2.6 (or later)
•easy_install ansible
-> 以下のPythonモジュールも入る
‣paramiko
‣PyYAML
‣jinja2
13年9月15日日曜日
リモートホスト側に
必要なもの
๏Python 2.4 (or later)
•Python2.4の場合、
以下も必要
‣python-simplejson
13年9月15日日曜日
どんな企業が実際に
使っているのか?
13年9月15日日曜日
どんな企業が実際に
使っているのか?
13年9月15日日曜日
•https://github.com/edx/
configuration
•http://code.hootsuite.com/
automating-our-scala-deploys-
with-ansible-case-study/
使用例
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibleを使うと何が嬉しいのか?
• 他の類似ツールとは何が違うのか?
• Ansibleを動かすのに必要なシステム要件は?
• どんな企業が実際に使っているのか?
๏ Ansibleの基本的な使い方
13年9月15日日曜日
シナリオ
✦リモートホスト(のOS)は
Ubuntu 12.04 LTS
• SSHで接続できる状態
✦リモートホストに設定したい内容
• build-essentialなど
各種パッケージをインストール
• apacheをインストール
• MySQLをインストール
13年9月15日日曜日
ディレクトリ構成
├── hosts
└── setup.yml
13年9月15日日曜日
ファイルの中身
├── hosts
└── setup.yml
(playbook = YAML形式)
13年9月15日日曜日
setup.ymlの中身
---
- hosts: all
user: vagrant
sudo: True
tasks:
- name: 基本的なパッケージをインストール
apt: pkg={{ item }} state=latest
with_items:
- build-essential
(省略)
- git
13年9月15日日曜日
setup.ymlの中身
- name: apacheのインストール
apt: pkg=apache2 state=latest
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present
13年9月15日日曜日
使用するコマンド
• 以下のコマンドを実行する
• ansible-playbook -i hosts setup.yml
13年9月15日日曜日
実行すると
どうなるか?
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール]
******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-
dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tk-
dev,zip,git)
TASK: [apacheのインストール]
*********************************************************
changed: [192.168.33.50]
TASK: [MySQLのインストール]
**********************************************************
changed: [192.168.33.50]
PLAY RECAP
********************************************************************
192.168.33.50 : ok=6 changed=3 unreachable=0
failed=0
13年9月15日日曜日
とても楽!
13年9月15日日曜日
冪等性を
体感しよう
13年9月15日日曜日
もう一度
同じコマンドを実行
ansible-playbook -i hosts setup.yml
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール]
******************************************************
ok: [192.168.33.50] => (item=build-essential,libsqlite3-
dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tk-
dev,zip,git)
TASK: [apacheのインストール]
*********************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール]
**********************************************************
ok: [192.168.33.50]
PLAY RECAP
********************************************************************
192.168.33.50 : ok=6 changed=0 unreachable=0
failed=0
13年9月15日日曜日
比較してみると…
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール]
******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-
dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tk-
dev,zip,git)
TASK: [apacheのインストール]
*********************************************************
changed: [192.168.33.50]
TASK: [MySQLのインストール]
**********************************************************
changed: [192.168.33.50]
PLAY RECAP
********************************************************************
192.168.33.50 : ok=6 changed=3 unreachable=0
failed=0
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール]
******************************************************
ok: [192.168.33.50] => (item=build-essential,libsqlite3-
dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tk-
dev,zip,git)
TASK: [apacheのインストール]
*********************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール]
**********************************************************
ok: [192.168.33.50]
PLAY RECAP
********************************************************************
192.168.33.50 : ok=6 changed=0 unreachable=0
failed=0
13年9月15日日曜日
冪等性
• 何回やっても結果が同じになること
• 今回の場合
• 1度目
• 各種パッケージ・apache・MySQLが
新しくインストールされる
(=changed)
• 2度目
• 各種パッケージ・apache・MySQLは
既にインストールされているので無視される
(=ok)
13年9月15日日曜日
ファイルの中身
├── hosts
(inventory file = INI形式)
└── setup.yml
13年9月15日日曜日
hostsの中身
[local]
192.168.33.50
ansible_ssh_user=vagrant
ansible_ssh_port=22
13年9月15日日曜日
復習したい人は
๏以下のgithub, bitbucket上の
リポジトリに復習用のものを作りました
•https://github.com/takuan-osho/
pyconapac2013-ansible-session
•https://bitbucket.org/
takuan_osho/pyconapac2013-
ansible-session
13年9月15日日曜日
参考資料
๏ドキュメント
✦公式
• http://www.ansibleworks.com/
docs/
✦日本語訳
• https://github.com/shkumagai/
ansible-doc-ja
13年9月15日日曜日
参考資料
๏チュートリアル(非公式)
✦英語
• https://github.com/leucos/
ansible-tuto
✦日本語
• http://yteraoka.github.io/
ansible-tutorial/
13年9月15日日曜日
参考資料
๏ 構成管理ツールの比較記事
✦ 英語
• (Ansible, SaltStack)
• http://missingm.co/2013/06/ansible-and-salt-a-
detailed-comparison/
• (Ansible, Chef, Puppet)
• http://jjasghar.github.io/blog/2013/06/26/ansible-vs-
chef-vs-puppet/
✦ 日本語
• (Ansible, Chef, Fabric)
• http://hnakamur.github.io/blog/2013/09/01/tried-chef-
ansible-fabric/
13年9月15日日曜日
参考資料
• Continuous Deploymentについて
• http://www.youtube.com/watch?
v=PDRdCqFp2sY
• Flask/WSGI Applicationをデプロイする例
• http://mattupstate.com/python/devops/
2012/08/07/flask-wsgi-application-
deployment-with-ubuntu-ansible-nginx-
supervisor-and-uwsgi.html
13年9月15日日曜日
参考資料
๏ベストプラクティスの例
✦英語
๏http://www.stavros.io/
posts/example-
provisioning-and-
deployment-ansible/
13年9月15日日曜日
質問
13年9月15日日曜日

More Related Content

PDF
Ansibleで始めるインフラ構築自動化
PDF
AnsibleによるInfrastructure as code入門
PDF
サーバ構築を自動化する 〜Ansible〜
PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
PPTX
Redisの特徴と活用方法について
PDF
DockerとPodmanの比較
PPTX
さくっと理解するSpring bootの仕組み
PPTX
Docker Tokyo
Ansibleで始めるインフラ構築自動化
AnsibleによるInfrastructure as code入門
サーバ構築を自動化する 〜Ansible〜
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Redisの特徴と活用方法について
DockerとPodmanの比較
さくっと理解するSpring bootの仕組み
Docker Tokyo

What's hot (20)

PDF
Docker Compose 徹底解説
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PDF
忙しい人の5分で分かるDocker 2017年春Ver
PPTX
そろそろSELinux を有効にしてみませんか?
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
PDF
ネットワークエンジニア的Ansibleの始め方
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
できる!並列・並行プログラミング
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
コンテナにおけるパフォーマンス調査でハマった話
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
PPTX
本当は恐ろしい分散システムの話
PDF
Jenkins 再入門
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
Ansible勉強会資料
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
PDF
AWSのログ管理ベストプラクティス
Docker Compose 徹底解説
コンテナの作り方「Dockerは裏方で何をしているのか?」
Docker道場オンライン#1 Docker基礎概念と用語の理解
忙しい人の5分で分かるDocker 2017年春Ver
そろそろSELinux を有効にしてみませんか?
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
ネットワークエンジニア的Ansibleの始め方
ドメイン駆動設計のための Spring の上手な使い方
Dockerfile を書くためのベストプラクティス解説編
できる!並列・並行プログラミング
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
コンテナにおけるパフォーマンス調査でハマった話
Java開発の強力な相棒として今すぐ使えるGroovy
本当は恐ろしい分散システムの話
Jenkins 再入門
BuildKitによる高速でセキュアなイメージビルド
Ansible勉強会資料
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
AWSのログ管理ベストプラクティス
Ad

Viewers also liked (20)

PPTX
Ansible ではじめるインフラのコード化入門
PDF
Ansible Playbookの短時間デバッグ方法
PDF
OpenStackでつくる開発環境と外道塾
PPTX
新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた
PPTX
ほんとうはこわいAnsible
PDF
Ansible はじめてみました
PDF
はじめての UWP アプリ開発
PDF
Ansibleの現在とこれから
PPTX
サーバーの動くメモをAnsibleでとろう
PDF
2012/11/14 softlab_study 発表資料「SSDの基礎」
PDF
What is an Ansible?
PPTX
2人でOpenStackを開発環境に導入した話
PDF
運用のためのPlaybook (Playbook for Operation)
PDF
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
PDF
Favorite English YouTube Channels
PDF
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
PDF
リブセンスのインフラで使ってるAnsibleのお話
PDF
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
PPTX
Ansibleを使ってdockerコンテナをプロビジョニングする
PPTX
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Ansible ではじめるインフラのコード化入門
Ansible Playbookの短時間デバッグ方法
OpenStackでつくる開発環境と外道塾
新卒3年目のぼくが、でぶおぷす???なインフラおじさん方にAnsibleを導入してみた
ほんとうはこわいAnsible
Ansible はじめてみました
はじめての UWP アプリ開発
Ansibleの現在とこれから
サーバーの動くメモをAnsibleでとろう
2012/11/14 softlab_study 発表資料「SSDの基礎」
What is an Ansible?
2人でOpenStackを開発環境に導入した話
運用のためのPlaybook (Playbook for Operation)
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
Favorite English YouTube Channels
[B11] 基礎から知るSSD(いまさら聞けないSSDの基本) by Hironobu Asano
リブセンスのインフラで使ってるAnsibleのお話
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
Ansibleを使ってdockerコンテナをプロビジョニングする
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Ad

Similar to 入門Ansible (20)

PDF
Ansible quickstart
PDF
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
PDF
Ansible 入門 #01 (初心者向け)
PDF
Ansible ではじめるサーバ作業の自動化
PDF
Ansible handson
PDF
受託開発でAnsibleを導入した話
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
PDF
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
PPTX
ansible 社内お勉強会資料
PDF
Ansible入門
PDF
Ansible 2.0 のサマライズとこれから
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
PDF
Ansible入門 20151226
PDF
Ansible2.0と実用例
PDF
さくらのクラウド ホントのホントのことはじめ
PDF
もっと気軽に始めるAnsible
PDF
Ansible 2.8 アップデート情報 -機能追加と注意点-
PDF
Ansible入門...?
PDF
Enjoy the Ansible
Ansible quickstart
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Ansible 入門 #01 (初心者向け)
Ansible ではじめるサーバ作業の自動化
Ansible handson
受託開発でAnsibleを導入した話
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
ansible 社内お勉強会資料
Ansible入門
Ansible 2.0 のサマライズとこれから
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansible入門 20151226
Ansible2.0と実用例
さくらのクラウド ホントのホントのことはじめ
もっと気軽に始めるAnsible
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible入門...?
Enjoy the Ansible

入門Ansible