Ansible入門...?

  • 5,530 views
Uploaded on

Ansible 紹介 at #pyfes 2013.11

Ansible 紹介 at #pyfes 2013.11

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,530
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
45
Comments
0
Likes
29

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ansible 入門 #pyfes 2013.11 in Tokyo by @r_rudi(しろう) …?
  • 2. Ansible
  • 3. Ansible 間違い 正しい 正解
  • 4. Chef Puppet Salt cfengine juju …..
  • 5. 構成管理 ツール Provisiong tool
  • 6. 構成 管理
  • 7. by Lee Thompson at Velocity 2010
  • 8. 一部誇張表現があります
  • 9. 本日の前提知識 Assumptions
  • 10. Task - name: install python homeblew: name=python installs_options={{ option }} state=present
  • 11. Task タスク名(省略可) - name: install python 引数 homeblew: name=python モジュール名 installs_options={{ option }} 変数 state=present 状態: absent を指定すると消せる (moduleによる)
  • 12. Playbook == Taskのセット - hostname: name=AnsibleDemo - apt_repository: repo=’deb http://….’ - apt_key: url=http://….. 実行順
  • 13. 実行方法 % ansible-playbook hoge.yml -i inventory file (接続先ホストのリスト) -u username -k ssh pass -C check mode -D diff表示
  • 14. OK Let' Go !
  • 15. unarchive module - unarchive: src=blah.tar.gz dest=/tmp/ copy Remote unzip untar Local Remote
  • 16. shell module - shell: foo.sh copy Remote Run Local Remote Run
  • 17. ec2 - local_action: ec2 args: instance_type: c1.medium image: emi-329394 count: 3
  • 18. Launch Instances module - Google Compute Engine - Digital Ocean - Linode - Rackspace - Docker :
  • 19. インスタンスはいくつ? - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3
  • 20. インスタンスはいくつ? - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3 9
  • 21. インスタンスはいくつ? - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3 - local_action: ec2 args: count: 3 9 冪等性...?
  • 22. ec2 elb - local_action: ec2_elb args: instance_id: “{{ ansible_ec2_instance_id }}” state: present
  • 23. 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 :
  • 24. rolling update - serial: 1 Remote - 一台ずつ実行できる Remote - 数台まとめてもできる Remote
  • 25. Python API #pyfes ですから…
  • 26. 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)
  • 27. AnsibleWorks AWX
  • 28. Demo or Die
  • 29. Web UI demo
  • 30. 本当のデモ: 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
  • 31. module 作成 - 超簡単 - スクリプト言語ならなんでも書ける - 残念ながらgoは無理 - YAMLで書きにくいなら気軽にmoduleを作成 - サーバの./libraryに置いておけば使ってく れる
  • 32. handler tasks: - template: src=/srv/hoge.j2 dest=/etc/hoge notify: - restart apache handlers: - name: restart apache service: name=httpd state=restarted
  • 33. 何台ぐらい扱えるの?
  • 34. We have users using Ansible in push mode against 5000 machines at a time
  • 35. Accelarated mode - SSHでdaemonを起動 - あとはdaemonと直接通信 - このdaemonは通信が 終わると自動で終わる - hosts: all accelerate: true tasks: ... - 2-8x faster than SSH
  • 36. モジュール紹介
  • 37. Arista networks - 10G/40G/100Gのスイッチ - sshで入れる - pythonが入っている - Ansibleの初期からのスポンサー
  • 38. Arista modules - name: enable interface Ethernet 1 arista_interface: interface_id=Ethernet1 admin=up speed=10g duplex=full logging=true
  • 39. DB - mongodb_user - mysql_db - mysql_replication - postgres_user - postgres_db - riak - redis
  • 40. notification - irc - hipchat - jabber - mail - osx_say
  • 41. まとめ - Ansibleは自動実行ツールとしても使えるよ - moduleたくさんうれしいな - notification moduleは便利 - 欲しいものがなければ簡単に作れるよ - python必要ないよ - 実行速度は十分速いよ
  • 42. Ansible 本 - 最近出ました - 平易な英語 - 広い範囲をカバー - 今日飛ばした部分