Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ansible 2.8 アップデート情報 -機能追加と注意点-

7,641 views

Published on

Ansible Night in Osaka 2019.05 での発表資料です。
https://ansible-users.connpass.com/event/130456/

Published in: Technology
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Ansible 2.8 アップデート情報 -機能追加と注意点-

  1. 1. 株式会社 エーピーコミュニケーションズ 横地 晃(@akira6592) 2019/05/31 Ansible Night in Osaka 2019.05
  2. 2. はじめに l 2019/05/16 に Ansible 2.8.0 がリリースされました。 l 様々な仕様変更や機能追加の中から、気になった な点をご紹介します。 2 便利 地味に 便利 ちょっと 注意
  3. 3. 本発表の位置づけ 3 全変更 解説ブログ 本発表 CHNAGELOG https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst Porting Guide https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html Commits https://github.com/ansible/ansible/compare/v2.8.0...devel Ansible 2.8 リリース、便利機能や注意点まとめ https://tekunabe.hatenablog.jp/entry/2019/05/16/ansible28
  4. 4. ⾃⼰紹介 4 名前 横地 晃 所属 株式会社エーピーコミュニケーションズ 業務 ネットワーク⾃動化関連の技術開発 @akira6592 Software Design 2018年12⽉号 Ansible 特集 https://tekunabe.hatenablog.jp https://www.slideshare.net/akira6592/ ブログ(てくなべ) 過去発表資料 https://gihyo.jp/magazine/SD/archive/2018/201812 JANOG44 Meeting in Kobe Day3 (2019/7/26) ここからはじめよう、運⽤⾃動化
  5. 5. ⾃⼰紹介(最近のできごと) 5 先週 EX407 に受かりました https://techblog.ap-com.co.jp/entry/2019/05/27/ansible_ex407 受験体験記(勉強⽅法など) Red Hat Certificate of Expertise in Ansible Automation
  6. 6. 内容 6 l 仕様変更・追加 l 追加プラグイン l 追加モジュール l まとめ
  7. 7. 7 仕様変更・追加
  8. 8. 8 Python Interpreter Discovery 機能 l リモートホスト上で利⽤する Python の インタープリターを探す機能 ◦ /usr/bin/python がない場合に本機能で⾒つけ出す ◦ Ansible 2.8 時点のデフォルトの挙動、将来は変更される予定 ◦ 例えば RHEL8 のように /usr/bin/python がない環境 でも、ansible_python_interpreter を指定せずに、 /usr/libexec/platform-python を⾒つけ出せる https://rheb.hatenablog.com/entry/ansible_interpreter_discovery https://docs.ansible.com/ansible/2.8/reference_appendices/interpreter_discovery.html 便利
  9. 9. 9 PLAY RECAP に skipped、rescued、ignored 追加 https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html#plugins 地味に 便利 ※rescue された fail は failed にカウントされなくなった 追加
  10. 10. 10 retry file の⽣成がデフォルトで無効に l Playbook 実⾏エラー時に、エラーホスト名 が記載される retry ファイルの⽣成が デフォルトで無効になった $ ansible-config dump | grep RETRY_FILES_ENABLED RETRY_FILES_ENABLED(default) = False https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html#retry-file-creation-default 地味に 便利 $ ls –l (…略…) playbook.yml (…略…) playbook.retry デフォルトでこれが ⽣成されなくなった
  11. 11. 11 https://docs.ansible.com/ansible/2.8/cli/ansible.html https://docs.ansible.com/ansible/2.8/cli/ansible-playbook.html --su / --sudo 系オプションが削除 ちょっと 注意 削除された オプション --su、--su-user、--ask-su-pass --sudo、--sudo-user 、--ask-sudo-pass 今後も利⽤できる オプション --become --become-user --become-method(sudo | su | runas | enalbe など) --ask-become-pass l ansible/ansible-playbook コマンドの 権限昇格オプションが --become 系に統⼀
  12. 12. 12 l now() ◦ 第⼀引数: UTC 指定かどうか(True/False)。 デフォ ルトは False。 ◦ 第⼆引数: フォーマット ◦ 書式 https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior https://docs.ansible.com/ansible/2.8/user_guide/playbooks_templating.html#get-the-current-time jinja2 で現在時刻を now() で取得可能に - name: display date time debug: msg: "{{ now() }}" # 2019-04-29 21:03:16.958620 - name: display date time debug: msg: "{{ now(False, '%Y%m%d_%H%M%S') }}" # 20190429_210316 【例】 地味に 便利
  13. 13. 13 https://docs.ansible.com/ansible/2.8/user_guide/playbooks_templating.html#get-the-current-time jinja2 で現在時刻を now() で取得可能に 書式 どこの時刻か now() コントロールホストの時刻 lookup('pipe', 'date') コントロールホストの時刻 ansible_facts.date_time リモートホストの fact 収集時の時刻 地味に 便利 (続き) NEW
  14. 14. 14 l ⼊れ⼦になった未定義のキー、インデックス に default フィルターを利⽤可能に https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html#jinja-undefined-values 未定義変数へのアクセス柔軟性が向上 "{{ foo.bar.baz | default('DEFAULT') }}" 【例】foo ⾃体が未定義の場合でもこのように書ける * 2.7 では エラー「The error was: ‘foo’ is undefined」になってしまう {{ foo.bar.baz if (foo is defined and foo.bar is defined and foo.bar.baz is defined) else 'DEFAULT' }} {{ ((foo | default({})).bar | default({})).baz | default('DEFAULT') }} 【参考】2.7 での実現⽅法 または 地味に 便利
  15. 15. 15 https://github.com/ansible/ansible/pull/49737 - hosts: iosal gather_facts: no vars: command: version tasks: - name: ios_command: commands: - show version register: "result_{{ command }}” # ^ 変数名 result_version を期待 - name: debug: msg: - "{{ result_version }}" register でこのような テンプレート構⽂は 使⽤できなくなった register 変数名等でテンプレートが使⽤不可に 変数未定義エラーになってしまう ちょっと 注意
  16. 16. 16 https://github.com/ansible/ansible/pull/49737 register 変数名等でテンプレートが使⽤不可に TASK [ios_command] ****************************************** [WARNING]: "register" is not templatable, but we found: result_{{ command }}, it will not betemplated and will be used "as is". (…略…) ok: [iosal1] TASK [debug] ************************************************ fatal: [iosal1]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'result_version' is undefined¥n¥nThe error appears to be in (…略…) テンプレート構⽂使⽤不可のWARNING 変数未定義エラー 前述のPlaybook実⾏時 ちょっと 注意 (続き)
  17. 17. 17 https://docs.ansible.com/ansible/2.8/plugins/connection/ssh.html https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html#plugins 認証情報の変数名の標準化 ちょっと 注意 ユーザー名の変数 パスワードの変数 利⽤可能 ansible_<conn-type>_user ansible_<conn-type>_password 利⽤可能だが 将来⾮推奨になる 可能性あり ansible_<conn-type>_username ansible_<conn-type>_pass コネクションタイプ に⾮依存な変数 ※特に理由がなければこれを利⽤ ansible_user ansible_password <conn-type> には、コネクションタイプ ssh などが⼊る
  18. 18. 18 https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html#module-option-conversion-to-string https://docs.ansible.com/ansible/2.8/reference_appendices/config.html#string-conversion-action ⽂字列変換時の WARNING - name: command test ios_command: commands: - yes TASK [command test] ********************************************* [WARNING]: The value True (type bool) in a string field was converted to u'True' (type string). If this does not look like what you expect, quote the entire value to ensure it does not change. Playbook実⾏時 'True' という⽂字に列変換された旨の WARNING ⽂字列を指定するオプションに yes を クォーテーションなしで指定した場合・・ ちょっと 注意
  19. 19. 19 paramiko が同梱されなくなる ちょっと 注意 https://docs.ansible.com/ansible/2.8/installation_guide/intro_installation.html https://tekunabe.hatenablog.jp/entry/2019/05/19/ansible_paramiko_error - hosts: testsv gather_facts: no connection: paramiko tasks: - name: yum test yum: name: httpd paramiko を利⽤しようとすると・・ l「paramiko is not installed: No module named paramiko」というエラーに l 必要な場合は「pip install paramiko」 でインストール l 明⽰的に paramiko を指定していなくても、内部で利⽤されていることがある
  20. 20. 20 Windows ホストへの SSH 接続サポート https://speakerdeck.com/hiyokotaisa/rhtn-ansible-2-dot-8-x-windows https://docs.ansible.com/ansible/2.8/user_guide/windows_faq.html#can-i-connect-to-windows-hosts-over-ssh https://docs.ansible.com/ansible/2.8/user_guide/windows_setup.html#windows-ssh-setup 便利 l WinRM に加えて SSH 接続をサポート(experimental) 追加サポート Windows ansible_connection: ssh ansible_connection: winrm
  21. 21. 21 グループ名に利⽤できる⽂字の厳格化 ちょっと 注意 https://docs.ansible.com/ansible/2.8/reference_appendices/config.html#transform-invalid-group-chars https://github.com/ansible/ansible/pull/52748 l 数字はじまりや、ハイフンなどの記号(*1)は不正 ◦ TRANSFORM_INVALID_GROUP_CHARS の設定によって置換するかどうか 決める。デフォルトでは WARNING 表⽰(*2) のみで置換しない。 正当な例 不正な例 testgroup 英字から始まる 1testgroup 数字から始まる testgroup1 数字を含む test-group ハイフンを含む test_group アンダーバーを含む test.group ドットを含む *1 正規表現 ^[¥d¥W]|[^¥w] にマッチする⽂字列 *2 [DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
  22. 22. 22 新規プラグイン https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst#new-plugins
  23. 23. 23 https://docs.ansible.com/ansible/2.8/plugins/inventory/netbox.html NetBox をインベントリとして利⽤可能に l デバイスやIPアドレスなどをWebで管理 できるツール NetBox をインベントリとして 利⽤可能に 便利
  24. 24. 24 https://docs.ansible.com/ansible/2.8/plugins/inventory/netbox.html NetBox をインベントリとして利⽤可能に plugin: netbox api_endpoint: https://<endpoint>/ token: <token> group_by: # グループ化したい定義単位(任意) - manufacturers - device_roles - sites 便利 このようなファイルを ansible-playbook などのコマンドの -i オプションに指定 (続き)
  25. 25. 25 https://docs.ansible.com/ansible/2.8/plugins/inventory/netbox.html NetBox をインベントリとして利⽤可能に $ ansible-inventory -i i_nb.yml --host cat3750-1 { "ansible_host": "172.16.0.101", "device_roles": [ "switch" ], (…略…) } $ ansible-inventory -i i_nb.yml --graph @all: |--@device_roles_firewall: | |--vsrx1 | |--vsrx2 | |--vsrx3 |--@device_roles_switch: | |--cat3750-1 | |--cat3750-2 |--@manufacturers_cisco: | |--cat3750-1 | |--cat3750-2 |--@manufacturers_juniper: | |--vsrx1 | |--vsrx2 | |--vsrx3 |--@sites_my_site: | |--cat3750-1 | |--cat3750-2 | |--vsrx1 | |--vsrx2 | |--vsrx3 |--@ungrouped: インベントリ としての NetBox グループ化も可能 便利 (続き)
  26. 26. 26 新規モジュール Ansible 2.7 2078個 Ansible 2.8 2832個 https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst#new-modules
  27. 27. 27 https://docs.ansible.com/ansible/devel/modules/read_csv_module.html https://tekunabe.hatenablog.jp/entry/2019/03/29/ansible_read_csv_intro read_csv モジュール l CSVファイルをリストやディクショナリとして 読み込む - hosts: testsv gather_facts: no tasks: - name: Read users read_csv: path: users.csv register: users delegate_to: localhost # ^ 省略するとリモートのファイルを参照 - name: debug csv debug: msg: "{{ users }}" "msg": { (…略…) "list": [ { "gid": "500", "name": "dag", "uid": "500" }, { "gid": "500", "name": "jeroen", "uid": "501" } ] } name,uid,gid dag,500,500 jeroen,501,500 読み込んだ Playbook 実⾏ 地味に 便利 CSV
  28. 28. 28 サンプル引⽤元 https://docs.ansible.com/ansible/2.8/modules/ios_bgp_module.html#examples *_bgp モジュール - name: configure global bgp as 64496 ios_bgp: config: bgp_as: 64496 router_id: 192.0.2.1 log_neighbor_changes: True neighbors: - neighbor: 203.0.113.5 remote_as: 64511 timers: keepalive: 300 holdtime: 360 min_neighbor_holdtime: 360 - neighbor: 198.51.100.2 remote_as: 64498 networks: - prefix: 198.51.100.0 route_map: RMAP_1 - prefix: 192.0.2.0 masklen: 23 address_family: - afi: ipv4 safi: unicast redistribute: - protocol: ospf id: 223 metric: 10 operation: merge 広報設定 ネイバー設定 再配布設定 * 今まではコマンドを直接指定する ios_config で設定 便利 ios_bgp の例
  29. 29. 29 https://docs.ansible.com/ansible/2.8/modules/list_of_cloud_modules.html#alicloud クラウド系モジュール 便利 (⼀例) 分類 追加数(*1) ★ alicloud 2 amazon 7 azure 75 docker 11 google 33 ★ podman 2 vmware 30 ★: 本分類のモジュール⾃体が今回初登場 *1: ansible-doc -j コマンド出⼒によるカウント
  30. 30. 30 まとめ
  31. 31. まとめ 31 l Ansible 2.8 では多数のモジュール追加や、 仕様変更、便利な機能追加のほかに、 ちょっとした注意点もありました。 l アップデートの際の参考になれば幸いです。 便利 地味に 便利 ちょっと 注意 • Python Interpreter Discovery • NetBox をインベントリとして利⽤可能に • retry file の⽣成がデフォルトで無効に • read_csv モジュール • register 変数名等でテンプレートが使⽤不可に • グループ名に利⽤できる⽂字の厳格化 例:
  32. 32. 参考資料 32 l CHANGELOG l https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst#v2-8-0 l Porting Guide l https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html l 公式ブログ Ansible 2.8 情報 l https://www.ansible.com/blog/whats-new-in-red-hat-ansible-engine-2.8 l ⽇本語解説個⼈ブログ l https://tekunabe.hatenablog.jp/entry/2019/05/16/ansible28

×