• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ansible入門...?
 

Ansible入門...?

on

  • 5,778 views

Ansible 紹介 at #pyfes 2013.11

Ansible 紹介 at #pyfes 2013.11

Statistics

Views

Total Views
5,778
Views on SlideShare
4,828
Embed Views
950

Actions

Likes
24
Downloads
34
Comments
0

5 Embeds 950

http://tdoc.info 844
https://twitter.com 93
http://feedly.com 10
http://webcache.googleusercontent.com 2
http://www.feedspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ansible入門...? Ansible入門...? Presentation Transcript

    • Ansible 入門 #pyfes 2013.11 in Tokyo by @r_rudi(しろう) …?
    • Ansible
    • Ansible 間違い 正しい 正解
    • Chef Puppet Salt cfengine juju …..
    • 構成管理 ツール Provisiong tool
    • 構成 管理
    • 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 本 - 最近出ました - 平易な英語 - 広い範囲をカバー - 今日飛ばした部分