SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
入門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日日曜日

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

ガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツールガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツール
 
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
 
Ansible勉強会資料
Ansible勉強会資料Ansible勉強会資料
Ansible勉強会資料
 
ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方
 
Goss入門
Goss入門Goss入門
Goss入門
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりましたジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 

Andere mochten auch

OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
外道 父
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
Takayuki Hayashi
 
[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.
 

Andere mochten auch (20)

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

入門Ansible