入門Ansible
@takuan_osho
13年9月15日日曜日
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibl...
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibl...
自己紹介
๏清水 琢(しみず たく)
• @takuan_osho
• Blog : http://takuan-osho.hatenablog.com/
๏趣味でプログラミングをしている
• Python関連の勉強会
(Sphinx関連、Py...
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibl...
Ansibleとは何か?
一言で言うと
サーバ構築を自動化する
ツール
13年9月15日日曜日
Ansibleとは
๏共通したインターフェースで
メジャーなIT自動化の機能を提供してくれる
1. 構成管理
(Configuration Management)
2. アプリケーションのデプロイ
(Application Deployment)...
Ansibleとは
๏共通したインターフェースで
メジャーなIT自動化の機能を提供してくれる
1. 構成管理
(Configuration Management)
2. アプリケーションのデプロイ
(Application Deployment)...
作者
๏ Michael DaHaan氏
• AnsibleWorksの
Co-Founder、CTO
• Cobbler, Funcに
携わっていた
• 2012年にAnsibleの
Projectを立ち上げる
• 現実世界における
サーバ自...
Ansibleとは何か?
一言で言うと
サーバ構築を自動化する
ツール
13年9月15日日曜日
本セッションの
対象者
๏初心者
•サーバー構築をやったことが無い人
•サーバー構築を手作業では
やったことがあるが、
ツールを利用してやったことは無い人
•Ansibleのことを初めて聞いた人
13年9月15日日曜日
本セッションで
話すこと
๏Ansibleをインストールした後、
デフォルトで出来ることに限定
•公式ドキュメントに書かれている
ことの中からポイント抜粋
      +
今まで集めてきた
Ansible関連の有用な情報
13年9月15日日曜日
本セッションで
話さないこと
๏インストールした後、
デフォルトではできないこと
๏具体的には…
• 他のツールやWebサービスとの連携
(Vagrant、AWSなど)
• モジュール開発、API
• Ansible AWX (WebUIサービ...
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibl...
Ansibleを使うと
何が嬉しいのか?
๏ サーバーの環境構築を自動化できる
• 手作業によるミスの減少
• 新規環境をすぐに用意できる
• 実験的な環境構築・破壊が楽に
๏ 同じ環境を「複数台に」「並列に」
適用できる
• 開発・ステージン...
他の類似ツールとは
何が違うのか?
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://w...
類似ツールの比較図
13年9月15日日曜日
Ansibleの特徴
13年9月15日日曜日
Ansibleの特徴
๏ 冪等性(Idempotency)
• 何回やっても同じ結果になること
๏ Battery included
• 標準モジュールの豊富さ
๏ Push型のアーキテクチャが基本
• リモートホストに特別なプログラムを
事前...
Ansibleの特徴
๏ 冪等性(Idempotency)
• 何回やっても同じ結果になること
๏ Battery included
• 標準モジュールの豊富さ
๏ Push型のアーキテクチャが基本
• リモートホストに特別なプログラムを
事前...
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/
使...
Agenda
๏ 自己紹介
๏ 本セッションについて
• 本セッションの扱う対象である Ansible とは何か?
• 本セッションの対象者
• 本セッションで話すこと・話さないこと
๏ Ansibleを使う前に思いそうなこと
• Ansibl...
シナリオ
✦リモートホスト(のOS)は
Ubuntu 12.04 LTS
• SSHで接続できる状態
✦リモートホストに設定したい内容
• build-essentialなど
各種パッケージをインストール
• apacheをインストール
• M...
ディレクトリ構成
├── 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
wi...
setup.ymlの中身
- name: apacheのインストール
apt: pkg=apache2 state=latest
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=pres...
使用するコマンド
• 以下のコマンドを実行する
• ansible-playbook -i hosts setup.yml
13年9月15日日曜日
実行すると
どうなるか?
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
**************************...
とても楽!
13年9月15日日曜日
冪等性を
体感しよう
13年9月15日日曜日
もう一度
同じコマンドを実行
ansible-playbook -i hosts setup.yml
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
**************************...
比較してみると…
13年9月15日日曜日
PLAY [all]
********************************************************************
GATHERING FACTS
**************************...
PLAY [all]
********************************************************************
GATHERING FACTS
**************************...
冪等性
• 何回やっても結果が同じになること
• 今回の場合
• 1度目
• 各種パッケージ・apache・MySQLが
新しくインストールされる
(=changed)
• 2度目
• 各種パッケージ・apache・MySQLは
既にインストー...
ファイルの中身
├── 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:/...
参考資料
๏ドキュメント
✦公式
• 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月...
参考資料
๏ 構成管理ツールの比較記事
✦ 英語
• (Ansible, SaltStack)
• http://missingm.co/2013/06/ansible-and-salt-a-
detailed-comparison/
• (A...
参考資料
• Continuous Deploymentについて
• http://www.youtube.com/watch?
v=PDRdCqFp2sY
• Flask/WSGI Applicationをデプロイする例
• http://m...
参考資料
๏ベストプラクティスの例
✦英語
๏http://www.stavros.io/
posts/example-
provisioning-and-
deployment-ansible/
13年9月15日日曜日
質問
13年9月15日日曜日
Upcoming SlideShare
Loading in...5
×

入門Ansible

29,223

Published on

2 Comments
129 Likes
Statistics
Notes
  • @tednag コメントありがとうございます。何かしらのお役に立てたなら何よりです。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Ansibleを試してみたい気持ちになりました。素晴らしい資料を公開していただいてありがとうございます!!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
29,223
On Slideshare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
148
Comments
2
Likes
129
Embeds 0
No embeds

No notes for slide

入門Ansible

  1. 1. 入門Ansible @takuan_osho 13年9月15日日曜日
  2. 2. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日
  3. 3. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日
  4. 4. 自己紹介 ๏清水 琢(しみず たく) • @takuan_osho • Blog : http://takuan-osho.hatenablog.com/ ๏趣味でプログラミングをしている • Python関連の勉強会 (Sphinx関連、PyFesなど)に よく出ています ๏PyCon JP 2012 副座長 13年9月15日日曜日
  5. 5. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日
  6. 6. Ansibleとは何か? 一言で言うと サーバ構築を自動化する ツール 13年9月15日日曜日
  7. 7. Ansibleとは ๏共通したインターフェースで メジャーなIT自動化の機能を提供してくれる 1. 構成管理 (Configuration Management) 2. アプリケーションのデプロイ (Application Deployment) 3. 継続的デリバリー (Continuous Delivery) 13年9月15日日曜日
  8. 8. Ansibleとは ๏共通したインターフェースで メジャーなIT自動化の機能を提供してくれる 1. 構成管理 (Configuration Management) 2. アプリケーションのデプロイ (Application Deployment) 3. 継続的デリバリー (Continuous Delivery) 13年9月15日日曜日
  9. 9. 作者 ๏ Michael DaHaan氏 • AnsibleWorksの Co-Founder、CTO • Cobbler, Funcに 携わっていた • 2012年にAnsibleの Projectを立ち上げる • 現実世界における サーバ自動化の問題を 単純化したかった 13年9月15日日曜日
  10. 10. Ansibleとは何か? 一言で言うと サーバ構築を自動化する ツール 13年9月15日日曜日
  11. 11. 本セッションの 対象者 ๏初心者 •サーバー構築をやったことが無い人 •サーバー構築を手作業では やったことがあるが、 ツールを利用してやったことは無い人 •Ansibleのことを初めて聞いた人 13年9月15日日曜日
  12. 12. 本セッションで 話すこと ๏Ansibleをインストールした後、 デフォルトで出来ることに限定 •公式ドキュメントに書かれている ことの中からポイント抜粋       + 今まで集めてきた Ansible関連の有用な情報 13年9月15日日曜日
  13. 13. 本セッションで 話さないこと ๏インストールした後、 デフォルトではできないこと ๏具体的には… • 他のツールやWebサービスとの連携 (Vagrant、AWSなど) • モジュール開発、API • Ansible AWX (WebUIサービス) 13年9月15日日曜日
  14. 14. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日
  15. 15. Ansibleを使うと 何が嬉しいのか? ๏ サーバーの環境構築を自動化できる • 手作業によるミスの減少 • 新規環境をすぐに用意できる • 実験的な環境構築・破壊が楽に ๏ 同じ環境を「複数台に」「並列に」 適用できる • 開発・ステージング・本番環境を 全く同じように用意することが可能に ➡アプリケーションのデプロイ時の トラブルを減らせる 13年9月15日日曜日
  16. 16. 他の類似ツールとは 何が違うのか? 13年9月15日日曜日
  17. 17. 13年9月15日日曜日
  18. 18. 先日のPyConの セッションで こんなセッションがありました 13年9月15日日曜日
  19. 19. Pythonユーザの ための構成管理入門 13年9月15日日曜日
  20. 20. よくまとまっているので そちらから引用します 13年9月15日日曜日
  21. 21. 詳しく知りたい方は 引用元を参照 • 「Pythonユーザのため  の構成管理入門」 • 資料 • http://www.slideshare.net/ TakeshiKomiya/python-26185953 • 動画 • http://www.youtube.com/watch? v=VDIxJjZEJJA 13年9月15日日曜日
  22. 22. 類似ツールの比較図 13年9月15日日曜日
  23. 23. Ansibleの特徴 13年9月15日日曜日
  24. 24. Ansibleの特徴 ๏ 冪等性(Idempotency) • 何回やっても同じ結果になること ๏ Battery included • 標準モジュールの豊富さ ๏ Push型のアーキテクチャが基本 • リモートホストに特別なプログラムを 事前にインストールする必要がない (Python2.4以上があるリモートホストにssh接続できればOK) ๏ シンプル • 設定はYAML - 読みやすい(書きやすい) 13年9月15日日曜日
  25. 25. Ansibleの特徴 ๏ 冪等性(Idempotency) • 何回やっても同じ結果になること ๏ Battery included • 標準モジュールの豊富さ ๏ Push型のアーキテクチャが基本 • リモートホストに特別なプログラムを 事前にインストールする必要がない (Python2.4以上があるリモートホストにssh接続できればOK) ๏ シンプル • 設定はYAML - 読みやすい(書きやすい) 13年9月15日日曜日
  26. 26. Ansibleを動かすのに 必要なシステム要件は? ๏必要なシステム要件は2種類ある •ローカルホスト側のシステム要件 •リモートホスト側のシステム要件 13年9月15日日曜日
  27. 27. ローカルホスト側に 必要なもの ๏Python 2.6 (or later) •easy_install ansible -> 以下のPythonモジュールも入る ‣paramiko ‣PyYAML ‣jinja2 13年9月15日日曜日
  28. 28. リモートホスト側に 必要なもの ๏Python 2.4 (or later) •Python2.4の場合、 以下も必要 ‣python-simplejson 13年9月15日日曜日
  29. 29. どんな企業が実際に 使っているのか? 13年9月15日日曜日
  30. 30. どんな企業が実際に 使っているのか? 13年9月15日日曜日
  31. 31. •https://github.com/edx/ configuration •http://code.hootsuite.com/ automating-our-scala-deploys- with-ansible-case-study/ 使用例 13年9月15日日曜日
  32. 32. Agenda ๏ 自己紹介 ๏ 本セッションについて • 本セッションの扱う対象である Ansible とは何か? • 本セッションの対象者 • 本セッションで話すこと・話さないこと ๏ Ansibleを使う前に思いそうなこと • Ansibleを使うと何が嬉しいのか? • 他の類似ツールとは何が違うのか? • Ansibleを動かすのに必要なシステム要件は? • どんな企業が実際に使っているのか? ๏ Ansibleの基本的な使い方 13年9月15日日曜日
  33. 33. シナリオ ✦リモートホスト(のOS)は Ubuntu 12.04 LTS • SSHで接続できる状態 ✦リモートホストに設定したい内容 • build-essentialなど 各種パッケージをインストール • apacheをインストール • MySQLをインストール 13年9月15日日曜日
  34. 34. ディレクトリ構成 ├── hosts └── setup.yml 13年9月15日日曜日
  35. 35. ファイルの中身 ├── hosts └── setup.yml (playbook = YAML形式) 13年9月15日日曜日
  36. 36. setup.ymlの中身 --- - hosts: all user: vagrant sudo: True tasks: - name: 基本的なパッケージをインストール apt: pkg={{ item }} state=latest with_items: - build-essential (省略) - git 13年9月15日日曜日
  37. 37. setup.ymlの中身 - name: apacheのインストール apt: pkg=apache2 state=latest - name: MySQLのインストール apt: pkg=mysql-server-5.5 state=present 13年9月15日日曜日
  38. 38. 使用するコマンド • 以下のコマンドを実行する • ansible-playbook -i hosts setup.yml 13年9月15日日曜日
  39. 39. 実行すると どうなるか? 13年9月15日日曜日
  40. 40. 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日日曜日
  41. 41. とても楽! 13年9月15日日曜日
  42. 42. 冪等性を 体感しよう 13年9月15日日曜日
  43. 43. もう一度 同じコマンドを実行 ansible-playbook -i hosts setup.yml 13年9月15日日曜日
  44. 44. 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日日曜日
  45. 45. 比較してみると… 13年9月15日日曜日
  46. 46. 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日日曜日
  47. 47. 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日日曜日
  48. 48. 冪等性 • 何回やっても結果が同じになること • 今回の場合 • 1度目 • 各種パッケージ・apache・MySQLが 新しくインストールされる (=changed) • 2度目 • 各種パッケージ・apache・MySQLは 既にインストールされているので無視される (=ok) 13年9月15日日曜日
  49. 49. ファイルの中身 ├── hosts (inventory file = INI形式) └── setup.yml 13年9月15日日曜日
  50. 50. hostsの中身 [local] 192.168.33.50 ansible_ssh_user=vagrant ansible_ssh_port=22 13年9月15日日曜日
  51. 51. 復習したい人は ๏以下のgithub, bitbucket上の リポジトリに復習用のものを作りました •https://github.com/takuan-osho/ pyconapac2013-ansible-session •https://bitbucket.org/ takuan_osho/pyconapac2013- ansible-session 13年9月15日日曜日
  52. 52. 参考資料 ๏ドキュメント ✦公式 • http://www.ansibleworks.com/ docs/ ✦日本語訳 • https://github.com/shkumagai/ ansible-doc-ja 13年9月15日日曜日
  53. 53. 参考資料 ๏チュートリアル(非公式) ✦英語 • https://github.com/leucos/ ansible-tuto ✦日本語 • http://yteraoka.github.io/ ansible-tutorial/ 13年9月15日日曜日
  54. 54. 参考資料 ๏ 構成管理ツールの比較記事 ✦ 英語 • (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日日曜日
  55. 55. 参考資料 • 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日日曜日
  56. 56. 参考資料 ๏ベストプラクティスの例 ✦英語 ๏http://www.stavros.io/ posts/example- provisioning-and- deployment-ansible/ 13年9月15日日曜日
  57. 57. 質問 13年9月15日日曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×