19
Ansible Playbook短時間デバッグ方法 Ansible ハンズオン@Tech-Circle #6 @ks888sk

Ansible Playbookの短時間デバッグ方法

  • Upload
    yagami

  • View
    681

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Ansible Playbookの短時間デバッグ方法

Ansible Playbookの短時間デバッグ方法

Ansible ハンズオン@Tech-Circle #6

@ks888sk

Page 2: Ansible Playbookの短時間デバッグ方法

自己紹介

● @ks888sk (やがみ)

○ メーカー系企業のインフラエンジニア

○ Ansibleはここ一年くらい実サービスで使ってみています

Page 3: Ansible Playbookの短時間デバッグ方法

今日のお話

● Playbook書いてるときにありがちなこと

➢ 修正&再実行を短時間化する方法の紹介

修正&再実行に意外と時間かかる

Page 4: Ansible Playbookの短時間デバッグ方法

方法紹介、の前に...

Page 5: Ansible Playbookの短時間デバッグ方法

なぜ修正&再実行に時間がかかる?

1. 修正では...

○ エラーについての情報不足

■ モジュールのパラメータ、registerした変数の値など

2. 再実行では...

○ Playbook全体を適用しなおしている

■ できればエラーの起きたタスク以降だけ実行したい

Page 6: Ansible Playbookの短時間デバッグ方法

では、どうするか?

● 修正&再実行を短時間化する方法を2つ紹介

1. Ansibleのオプション/モジュールをつかう

2. 外部のデバッグツールをつかう

Page 7: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● 以下のオプション/モジュールをつかいます

○ -vv オプション

○ debugモジュール

○ --start-at-taskオプション

Page 8: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● 修正時の情報不足問題(1/2)

○ -vv オプション

■ モジュールのパラメータを表示

■ -vvv オプションにすると、SSH接続情報も表示される

Page 9: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● 修正時の情報不足問題(2/2)

○ debugモジュール http://docs.ansible.com/debug_module.html

■ 指定した変数の値を表示

- command: /usr/bin/uptime register: result

- debug: var=result ← Playbookに追記

Page 10: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● 再実行時のPlaybook適用しなおし問題

○ --start-at-taskオプション

■ 指定したタスクから実行を開始できる

■ タスクにtagsをつけている場合、--tagsオプションでも

よさそう

ansible-playbook site.yml -i inventory --start-at-task="restart apache2"

Page 11: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● この方法の良い点

○ 試しやすい

■ インストール不要

■ 使い方がすぐに覚えられる

Page 12: Ansible Playbookの短時間デバッグ方法

Ansibleのオプション/モジュールをつかう

● 今ひとつな点

○ Playbookの修正が必要

■ debugモジュール

○ 使えないケースがある

■ -vv: いくつかのモジュールではパラメータ出ない

● template, synchronizeなど

Page 13: Ansible Playbookの短時間デバッグ方法

外部のデバッグツールをつかう

● ansible-playbook-debugger

○ Ansible Playbook用のデバッガ

■ https://github.com/ks888/ansible-playbook-debugger

■ 手前味噌ですみません...フィードバック等あったらTwitterとかで教え

て下さい

○ 導入すると、エラー時にデバッガが起きるようになります

○ デバッガ内のプロンプトから各種コマンドを発行できます

Page 14: Ansible Playbookの短時間デバッグ方法

外部のデバッグツールをつかう

● 修正時の情報不足問題

○ デバッガのprintコマンド

■ モジュールのパラメータを表示

■ 変数の値を表示

Page 15: Ansible Playbookの短時間デバッグ方法

外部のデバッグツールをつかう

● 再実行時のPlaybook適用しなおし問題

○ デバッガ内で問題を修正し、そのまま実行を継続する

■ デバッガのassignコマンド

● モジュールのパラメータを動的に修正

■ デバッガのredoコマンド

● エラーが起きたタスクの再実行

● 成功したら、後続のタスクもどんどん実行されていく

Page 16: Ansible Playbookの短時間デバッグ方法

外部のデバッグツールをつかう

● この方法の良い点

○ Playbookを書き換えずに、気になる変数を調べられる

■ 変数一覧とかも出せる

○ エラーが起きたら、その場で問題を修正し、実行を継続

できる

■ ansible-playbookの再実行をしなくていい

Page 17: Ansible Playbookの短時間デバッグ方法

外部のデバッグツールをつかう

● 今ひとつな点

○ ツールの導入が必要

○ デバッガが起動しないエラーケースがある

■ Playbookの文法エラーなど

○ デバッガ内での問題修正ができないケースがある

■ 定義する変数の名前を間違えていた、とか

Page 18: Ansible Playbookの短時間デバッグ方法

まとめ

● Playbookの修正&再実行を短時間化する方法

1. Ansibleのオプション/モジュールをつかう

○ 使えないケースはあるが、楽に導入できる

2. 外部のデバッグツールをつかう

○ ツールの導入は必要、でも、より時間短縮できるかも

Page 19: Ansible Playbookの短時間デバッグ方法

ご清聴ありがとうございました