Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Ansible 2.0 のサマライズとこれから

5 353 vues

Publié le

Ansible 2.0 新機能および注意事項等
2.1 以降の計画などのまとめ。

Publié dans : Technologie
  • Soyez le premier à commenter

Ansible 2.0 のサマライズとこれから

  1. 1. Ansible 2.0 AUTOMATION FOR EVERYONE 2016/2/18 TIS OSS Promotion Office Takeshi Kuramochi
  2. 2. 自己紹介  倉持健史(くらもち たけし)  現職  2015/4/1 TIS 入社  OSS推進室 「OSSの推進活用」 を担当  職歴  2011- NetApp.KK  2005- SIOS Technology, Inc.  2001- Panasonic Solution Technologies Co., Ltd.
  3. 3. 目次  Ansible とは  Ansible v2.0 の特徴  Ansible v2.1 以降
  4. 4. Ansible とは
  5. 5. 一言で、 システム構築・運用で、 人が楽をできる 簡単な自動化エンジン
  6. 6. プロビジョニング アクティビティ アプリケーションサービス デプロイメント システムコンフィグレーション クラウド、 VM、コンテナ起動 OS インストレーション Orchestration Configuration Bootstrapping AWS Cobbler OpenStack Kickstart VMware Capistrano Fabric Puppet Chef Azure 引用元:Provisioning Toolchain (Velocity2010) by Lee Thompson Docker Ansible
  7. 7. Ansible の特徴  複雑ではない  共通“言語”  学習コスト低  広範囲に適用  冪等である  エージェント不要  本番環境に適用 し易い
  8. 8. UNIX/Linux の場合  構成される側にエージェント不要  SSH 接続  Python 必要 Ansible SSH 構成される側 UNIX/Linux
  9. 9. Windows の場合  構成される側にエージェント不要  HTTP/HTTPS 接続  PowerShell 3.0以上必要 Ansible Web Service Management プロトコル(SOAP) 構成される側 Windows
  10. 10. 使い方 必要なマシン  Ansible がインストールされているマシン 必要なファイル  Inventory(インベントリ)  Playbook(プレイブック) Inventory : my_hosts Playbook : playbook.yml
  11. 11. Ansible v2.0 の特徴
  12. 12. Topics  Blocks  エラーメッセージ改良  Strategy プラグイン追加  Include の改良  変数管理の改良  モジュールとプラグイン  Windows 対応のアップデート  他の改良点  注意点 ANSIBLE 2.0
  13. 13. Blocks  関連するタスクをグルーピング  become, when, tags 他のようなアトリビュートはblock 上にセットでき、含まれる全てのタスクにより継承される  タスク実行の間(ロールバックのように)エラーをキャッチし処 理するための方法を提供 http://docs.ansible.com/ansible/playbooks_blocks.html
  14. 14. Blocks – グルーピング tasks: - block: - yum: name={{ item }} state=installed with_items: - httpd - memcached - template: src=templates/src.j2 dest=/etc/foo.conf - service: name=bar state=started enabled=True when: ansible_distribution == ‘CentOS’ become: true become_user: root
  15. 15. Blocks – ネスト tasks: - block: - block: - name: Install (Debian) apt: name=apache2 state=present when: ansible_os_family == “Debian” - block: - name: Install (Red Hat) apt: name=httpd state=present when: ansible_os_family == “RedHat” tags: package
  16. 16. Blocks – 変数のスコープ - hosts: localhost vars: example1: lelo tasks: - block: - debug: var=example1 - debug: var=example2 vars: example2: lola - debug: var=example2 TASK [debug] *************************** ok: [localhost] => { "example1": "lelo" } TASK [debug] *************************** ok: [localhost] => { "example2": "lola" } TASK [debug] *************************** ok: [localhost] => { "example2": "VARIABLE IS NOT DEFINED!" }
  17. 17. Blocks – 変数のスコープ - hosts: localhost vars: example1: lelo tasks: - block: - debug: var=example1 - debug: var=example2 vars: example2: lola - debug: var=example2 TASK [debug] *************************** ok: [localhost] => { "example1": "lelo" } TASK [debug] *************************** ok: [localhost] => { "example2": "lola" } TASK [debug] *************************** ok: [localhost] => { "example2": "VARIABLE IS NOT DEFINED!" }
  18. 18. Blocks – 変数のスコープ - hosts: localhost vars: example1: lelo tasks: - block: - debug: var=example1 - debug: var=example2 vars: example2: lola - debug: var=example2 TASK [debug] *************************** ok: [localhost] => { "example1": "lelo" } TASK [debug] *************************** ok: [localhost] => { "example2": "lola" } TASK [debug] *************************** ok: [localhost] => { "example2": "VARIABLE IS NOT DEFINED!" }
  19. 19. Blocks – エラーハンドリング #1 - hosts: web tasks: - block: - debug: msg="Hello World" - command: /bin/false rescue: - debug: msg="I caught an error" - command: /bin/false when: ansible_os_family == "Debian" - debug: msg="I handled an error" always: - debug: msg="This always executes"
  20. 20. Blocks – エラーハンドリング #2 • 例# any_errors_fatal on blocks works with # 2.0.1+ (to be released) --- - hosts: web tasks: - block: - deploy task 1 ... - deploy task 2 ... rescue: - undo task ... - undo task ... any_errors_fatal: true Block内処理 に失敗したら リカバリ をして Playbook を抜ける(アボート)する
  21. 21. エラーメッセージ改良 # 1.9.4 ERROR: us is not a legal parameter in an Ansible task or handler # 2.0.1 ERROR! no action detected in task The error appears to have been in '/home/centos/linux/crm/playbook.yml': line 11, column 7, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: tasks: - name: Changing root password ^ here 構文に関連しない場合のエラーも 詳しい場所のサジェスチョン
  22. 22. Strategy プラグイン追加  新しく追加されたプラグイン  linear , free が用意されている linear(デフォルト、~1.9.xと同じ)  全ホストの実行終了を待つ  serial ディレクティブ(並列数)と併用可 free  全ホストの実行終了を待たずに実行する http://docs.ansible.com/ansible/playbooks_strategies.html
  23. 23. Include の改良(Loop) tasks: - include: users.yml vars: user: “{{ item }}” with_items: - user1 - user2 - user3 with によるループ処理が可能 以前は、エラーになった使い方 http://docs.ansible.com/ansible/playbooks_loops.html#loops-and-includes
  24. 24. Include の改良(Facts) # Before v2 - include: RedHat.yml when: ansible_os_family == "RedHat" - include: Debian.yml when: ansible_os_family == "Debian" # With v2 - include: "{{ ansible_os_family }}".yml 例:ディストリビューション毎にタスクを実行
  25. 25. 変数の優先順位 v1.* 1. extra vars 2. vars, vars_files, etc. 3. inventory vars – host vars 、group vars 4. facts 5. role defaults
  26. 26. 変数の優先順位 v2.0 1. extra vars(command line –e) 2. task vars (only for the task) 3. block vars (only for tasks in block) 4. role and include vars 5. play vars_files 6. play vars_prompt 7. play vars 8. set_facts 9. registered vars 10. host facts 11. playbook host_vars 12. playbook group_vars 13. inventory host_vars 14. inventory group_vars 15. inventory vars 16. role defaults 高 低 http://docs.ansible.com/ansible/playbooks_variables.html
  27. 27. ansible_ssh_* について “ssh”が取れて短くなっている ~ v1.9.4 v.2.0 ansible_ssh_user ansible_user ansible_ssh_host ansible_host ansible_ssh_port ansible_port http://docs.ansible.com/ansible/playbooks_variables.html
  28. 28. モジュール と プラグイン  新しいモジュール数 >200  EC2 , VMware , CloudStack , OpenStack , Windows 関連  Docker 関連モジュールの改良多し  inventory スクリプト、callbacks、lookups プラグイ ンなども数十追加された
  29. 29. Windows 対応のアップデート  WinRM 接続における以下の設定が行えるようになった  win_copy で大きなファイルコピー可能 ~v1.9では3MB以上のファイルはエラーとなっていた パラメータ 解説 ansible_winrm_schem httpかhttpsを指定 ansible_winrm_path WinRMエンドポイントのパスを指定 ansible_winrm_realm Kerberos認証のためのRealmを指定 ansible_winrm_transport 1つまたは複数(カンマ区切り)のトランスポートを 指定 ansible_winrm_server_cert_validation ignoreかvalidateを指定 ansible_winrm_* WinRMプロトコルが提供する追加の引数をサポート http://docs.ansible.com/ansible/intro_windows.html
  30. 30. Windows Module 2.0 Update Core win_lineinfile Extras win_acl win_iis_virtualdirectory win_regedit win_dotnet_ngen win_iis_webapplication win_scheduled_task win_environment win_iis_webapppool win_unzip win_firewall_rule win_iis_webbinding win_update win_nssm win_iis_website win_webpicmd
  31. 31. モジュール改良・修正  win_get_url プロキシ対応  azure 現在有効でないオプションを無効化 http://docs.ansible.com/ansible/win_get_url_module.html より
  32. 32. 他の改良点  meta: refresh_inventory  強制インベントリファイルの再読み込み  delegate_facts ディレクティブの追加  委任したホストにfactを適用するか否か  デフォルト:no(v1.9と以前と同様)  lookup , jinja2 filters
  33. 33. 注意点  Playbook , Role & Module  100%下位互換をめざしたが、実際は約98.5%達成  Include の動的実行の注意  include されるタスクは実行時に評価される  tags をつけるときは include にたいして設定する  include 内の handler からは notify が機能しない  内部 API の変更  callback , connection , cache , lookup プラグイン APIが変わったため、自作のプラグインに修正が必要  AnsibleのAPI(プラグインでない)と直接統合することで 重大な変更が発生する
  34. 34. Ansible v2.1 以降
  35. 35. ハイライト  Windowsインフラの整備継続  ネットワークオートメーションのサポート  モジュールの拡張と機能強化継続  Core モジュールリポジトリはメインリポジトリにマージ  Extra モジュールはインストールのために別パッケージに
  36. 36. v2.1 ロードマップ  暫定ターゲット  2016年4月末  Modules  Windows:ドメイン管理 , NTLM サポート  Network:ベンダー系(Cisco , Juniper , etc)  Docker:リファクタされる(一定の機能のまとまりで分離, docker_****)  VMware , Azure (要注意) https://github.com/ansible/ansible/blob/devel/ROADMAP.md
  37. 37. Ansible Contributor Summit  2016/2/17  Topics  CoreやExtrasのコントリビューションについて  PRs、ISSUEのワークフロー  ロードマップの在り方  アーキテクチャ  ドキュメント  テスト  Galaxy https://github.com/ansible/ansible/blob/devel/ROADMAP.md
  38. 38. 参考  Ansible 2.0 Launch  http://www.ansible.com/blog/ansible-2.0-launch  CHANGELOG.md  https://github.com/ansible/ansible/blob/devel/CHANGELOG.md  What’s New in Ansible 2.0 (Webinar)  https://www.ansible.com/webinars-training  Ansible 2.0 and Beyond (James Cammarata)  Roadmap  https://github.com/ansible/ansible/blob/devel/ROADMAP.md
  39. 39. 参考  Ansible 2.0 @r_rudi 若山史郎さん (in Ansible Meetup Tokyo)  https://speakerdeck.com/shirou/ansible-2-dot-0-at-ansible-meetup-in-tokyo-2015-dot-09  Ansible 2.0 変更点まとめ  http://qiita.com/yuta_h3/items/30dcfd939cb13b7e24fa  Ansible で Windows Server 2012を構成する  http://qiita.com/tksarah/items/5f5916ec9236f24ff2a8

×