SlideShare a Scribd company logo
Ansible 入門
#pyfes 2013.11 in Tokyo
by @r_rudi(しろう)

…?
Ansible
Ansible
間違い
正しい

正解
Chef
Puppet
Salt
cfengine
juju
…..
構成管理
ツール
Provisiong tool
構成
管理
Ansible入門...?
by Lee Thompson at Velocity 2010
一部誇張表現があります
本日の前提知識
Assumptions
Task
- name: install python
homeblew: name=python
installs_options={{ option }}
state=present
Task
タスク名(省略可)

- name: install python
引数
homeblew: name=python
モジュール名
installs_options={{ option }}
変数
state=present
状態: absent を指定すると消せる
(moduleによる)
Playbook == Taskのセット
- hostname:
name=AnsibleDemo
- apt_repository:
repo=’deb http://….’
- apt_key:
url=http://…..

実行順
実行方法
% ansible-playbook hoge.yml
-i inventory file (接続先ホストのリスト)
-u username
-k ssh pass
-C check mode
-D diff表示
OK
Let' Go !
unarchive module
- unarchive: src=blah.tar.gz dest=/tmp/
copy

Remote

unzip
untar

Local

Remote
shell module
- shell: foo.sh
copy

Remote

Run

Local

Remote

Run
ec2
- local_action: ec2
args:
instance_type: c1.medium
image: emi-329394
count: 3
Launch Instances module
- Google Compute Engine
- Digital Ocean
- Linode
- Rackspace
- Docker
:
インスタンスはいくつ?
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3
インスタンスはいくつ?
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3

9
インスタンスはいくつ?
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3
- local_action: ec2
args:
count: 3

9
冪等性...?
ec2 elb
- local_action: ec2_elb
args:
instance_id:
“{{ ansible_ec2_instance_id }}”
state: present
deploy !!
- local_action: ec2_elb
args: state=absent
- nagios: action=disable_alert
- git: repo=.... dest=/www version=release-11
- service: name=foo state=restarted
- wait_for: port=8080 state=started
:
rolling update
- serial: 1
Remote

- 一台ずつ実行できる
Remote

- 数台まとめてもできる
Remote
Python API
#pyfes ですから…
ansible + flask
from ansible.inventory import Inventory
from ansible.playbook import PlayBook
from ansible import callbacks

from flask import Flask, render_template
import json
app = Flask(__name__)

@app.route("/play")
def play():
inventory = Inventory('localhost.conf')

stats = callbacks.AggregateStats()
playbook_cb =
callbacks.PlaybookCallbacks()

runner_cb =
callbacks.PlaybookRunnerCallbacks(stats)
results = PlayBook(playbook='pyfesdemo.yml',
forks=1,
remote_user='shirou',
sudo=False,

module_path='module',
callbacks=playbook_cb,

runner_callbacks=runner_cb,
stats=stats,

inventory=inventory).run()
return json.dumps(results)
AnsibleWorks AWX
Demo
or Die
Web UI demo
本当のデモ: twilio module
- twilio APIを使うshell script
#!/usr/bin/env sh
AccountSid=AAAAAAAAA
AuthToken=07999999999999
curl -X POST 'https://api.twilio.com/2010-0401/Accounts/ACe0361e5b6236a8948191d08635bcd449/Calls.json' ¥
-d 'From=%2B815031596145' -d 'To=%2B81999999993' ¥
-d 'Url=http%3A%2F%2Fexample.com%2Fansible.html' -u
${AccountSid}:${AuthToken}
echo "changed=True"
exit 0
module 作成
- 超簡単
- スクリプト言語ならなんでも書ける
- 残念ながらgoは無理
- YAMLで書きにくいなら気軽にmoduleを作成
- サーバの./libraryに置いておけば使ってく
れる
handler
tasks:
- template: src=/srv/hoge.j2 dest=/etc/hoge
notify:
- restart apache
handlers:
- name: restart apache
service: name=httpd state=restarted
何台ぐらい扱えるの?
We have users using Ansible in push
mode against 5000 machines at a time
Accelarated mode
- SSHでdaemonを起動
- あとはdaemonと直接通信
- このdaemonは通信が
終わると自動で終わる

- hosts: all
accelerate: true
tasks: ...

- 2-8x faster than SSH
モジュール紹介
Arista networks
- 10G/40G/100Gのスイッチ

- sshで入れる
- pythonが入っている
- Ansibleの初期からのスポンサー
Arista modules
- name: enable interface Ethernet 1
arista_interface:
interface_id=Ethernet1 admin=up
speed=10g duplex=full logging=true
DB
- mongodb_user
- mysql_db
- mysql_replication
- postgres_user
- postgres_db
- riak
- redis
notification
- irc
- hipchat
- jabber
- mail
- osx_say
まとめ
- Ansibleは自動実行ツールとしても使えるよ
- moduleたくさんうれしいな
- notification moduleは便利
- 欲しいものがなければ簡単に作れるよ
- python必要ないよ
- 実行速度は十分速いよ
Ansible 本
- 最近出ました
- 平易な英語
- 広い範囲をカバー
- 今日飛ばした部分

More Related Content

PPTX
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
PDF
Ansible 入門 #01 (初心者向け)
PDF
Ansible入門
PDF
ChefとPuppetの比較
KEY
Fabricでサーバー管理をDRYにしよう
PDF
Fabric Essentials
PDF
What is an Ansible?
PDF
2日間Fabricを触った俺が
 色々解説してみる
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansible 入門 #01 (初心者向け)
Ansible入門
ChefとPuppetの比較
Fabricでサーバー管理をDRYにしよう
Fabric Essentials
What is an Ansible?
2日間Fabricを触った俺が
 色々解説してみる

What's hot (20)

PPTX
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
PDF
Ansible 2.0 のサマライズとこれから
PPT
Puppet Best Practices? at COOKPAD
PDF
Puppet on AWS
PPTX
Open Source System Administration Framework - Func
PPTX
Itamae-Serverspec入門
PPTX
Ansible ではじめるインフラのコード化入門
PDF
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
PDF
Lisp Tutorial for Pythonista Day 6
PDF
実"戦"CakePHP Plugin
PDF
Webサーバ勉強会03
PDF
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
PDF
Ansible troubleshooting 101_2021
PDF
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
PDF
Ansible 2.0を使って組む kubernetesクラスタ vol.1
PPT
Using Windows Azure
PPTX
明日から始める Chef 入門 #bpstudy
PDF
Webサーバのチューニング
PDF
FuelPHPで3種のprofilerを使ってみた
PDF
今日から使い始めるChef
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Ansible 2.0 のサマライズとこれから
Puppet Best Practices? at COOKPAD
Puppet on AWS
Open Source System Administration Framework - Func
Itamae-Serverspec入門
Ansible ではじめるインフラのコード化入門
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Lisp Tutorial for Pythonista Day 6
実"戦"CakePHP Plugin
Webサーバ勉強会03
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Ansible troubleshooting 101_2021
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Using Windows Azure
明日から始める Chef 入門 #bpstudy
Webサーバのチューニング
FuelPHPで3種のprofilerを使ってみた
今日から使い始めるChef
Ad

Viewers also liked (20)

PPTX
サーバーの動くメモをAnsibleでとろう
DOCX
тестове завдання
PDF
Tinkerer for pyfes 201303
DOC
Bai 1. th la nganh kh tiet 1
PPT
Nota 1 bahagian luar ikan hiasan
DOCX
госы все
PDF
ansible-playbook useful command line options
PDF
Ansible meetup201409
PDF
EdisonでMQTT
PDF
MQTT meetup in Tokyo 機能概要
PDF
Ansible Playbookの短時間デバッグ方法
PDF
Ansible for beginners ...?
PPTX
Using Google+ As A Marketing Channel
PDF
Vagrant環境のAnsibleを速くしたい
PDF
Railsチュートリアルの歩き方 (第3版)
PDF
Enjoy the Ansible
PDF
Vagrant+Ansibleで検証環境を簡単構築
PDF
Ansible はじめてみました
PDF
Ansible ではじめるサーバ作業の自動化
PDF
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
サーバーの動くメモをAnsibleでとろう
тестове завдання
Tinkerer for pyfes 201303
Bai 1. th la nganh kh tiet 1
Nota 1 bahagian luar ikan hiasan
госы все
ansible-playbook useful command line options
Ansible meetup201409
EdisonでMQTT
MQTT meetup in Tokyo 機能概要
Ansible Playbookの短時間デバッグ方法
Ansible for beginners ...?
Using Google+ As A Marketing Channel
Vagrant環境のAnsibleを速くしたい
Railsチュートリアルの歩き方 (第3版)
Enjoy the Ansible
Vagrant+Ansibleで検証環境を簡単構築
Ansible はじめてみました
Ansible ではじめるサーバ作業の自動化
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Ad

Similar to Ansible入門...? (20)

KEY
ひのきのぼうだけで全クリ目指す
PDF
PostgreSQLとpython
PDF
Subprocess no susume
PDF
Ansible quickstart
PDF
kunibiki.rb #5 発表資料
PPTX
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
PPTX
Puppet入門
PDF
Niigata.pm #1
PDF
boost::shared_ptr tutorial
PPTX
Puppetのススメ
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
PDF
Mock and patch
PDF
Distutil setuptools distribute
PDF
Ansibleで始めるインフラ構築自動化
PDF
React Native GUIDE
PDF
Modern PHP Programming @ PFI Seminar
PDF
debexpo(mentors.d.n)をハックするには
PDF
2013.07.15 はじパタlt scikit-learnで始める機械学習
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
Infinite Debian - Platform for mass-producing system every second
ひのきのぼうだけで全クリ目指す
PostgreSQLとpython
Subprocess no susume
Ansible quickstart
kunibiki.rb #5 発表資料
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
Puppet入門
Niigata.pm #1
boost::shared_ptr tutorial
Puppetのススメ
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
Mock and patch
Distutil setuptools distribute
Ansibleで始めるインフラ構築自動化
React Native GUIDE
Modern PHP Programming @ PFI Seminar
debexpo(mentors.d.n)をハックするには
2013.07.15 はじパタlt scikit-learnで始める機械学習
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Infinite Debian - Platform for mass-producing system every second

Ansible入門...?