Ansible Playbookの 短時間デバッグ方法 Ansible ハンズオン@Tech-Circle #6 @ks888sk
Ansible Playbookの短時間デバッグ方法
Ansible ハンズオン@Tech-Circle #6
@ks888sk
自己紹介
● @ks888sk (やがみ)
○ メーカー系企業のインフラエンジニア
○ Ansibleはここ一年くらい実サービスで使ってみています
今日のお話
● Playbook書いてるときにありがちなこと
➢ 修正&再実行を短時間化する方法の紹介
修正&再実行に意外と時間かかる
方法紹介、の前に...
なぜ修正&再実行に時間がかかる?
1. 修正では...
○ エラーについての情報不足
■ モジュールのパラメータ、registerした変数の値など
2. 再実行では...
○ Playbook全体を適用しなおしている
■ できればエラーの起きたタスク以降だけ実行したい
では、どうするか?
● 修正&再実行を短時間化する方法を2つ紹介
1. Ansibleのオプション/モジュールをつかう
2. 外部のデバッグツールをつかう
Ansibleのオプション/モジュールをつかう
● 以下のオプション/モジュールをつかいます
○ -vv オプション
○ debugモジュール
○ --start-at-taskオプション
Ansibleのオプション/モジュールをつかう
● 修正時の情報不足問題(1/2)
○ -vv オプション
■ モジュールのパラメータを表示
■
■ -vvv オプションにすると、SSH接続情報も表示される
Ansibleのオプション/モジュールをつかう
● 修正時の情報不足問題(2/2)
○ debugモジュール http://docs.ansible.com/debug_module.html
■ 指定した変数の値を表示
- command: /usr/bin/uptime register: result
- debug: var=result ← Playbookに追記
Ansibleのオプション/モジュールをつかう
● 再実行時のPlaybook適用しなおし問題
○ --start-at-taskオプション
■ 指定したタスクから実行を開始できる
●
■ タスクにtagsをつけている場合、--tagsオプションでも
よさそう
ansible-playbook site.yml -i inventory --start-at-task="restart apache2"
Ansibleのオプション/モジュールをつかう
● この方法の良い点
○ 試しやすい
■ インストール不要
■ 使い方がすぐに覚えられる
Ansibleのオプション/モジュールをつかう
● 今ひとつな点
○ Playbookの修正が必要
■ debugモジュール
○ 使えないケースがある
■ -vv: いくつかのモジュールではパラメータ出ない
● template, synchronizeなど
外部のデバッグツールをつかう
● ansible-playbook-debugger
○ Ansible Playbook用のデバッガ
■ https://github.com/ks888/ansible-playbook-debugger
■ 手前味噌ですみません...フィードバック等あったらTwitterとかで教え
て下さい
○ 導入すると、エラー時にデバッガが起きるようになります
○ デバッガ内のプロンプトから各種コマンドを発行できます
外部のデバッグツールをつかう
● 修正時の情報不足問題
○ デバッガのprintコマンド
■ モジュールのパラメータを表示
●
■ 変数の値を表示
●
外部のデバッグツールをつかう
● 再実行時のPlaybook適用しなおし問題
○ デバッガ内で問題を修正し、そのまま実行を継続する
■ デバッガのassignコマンド
● モジュールのパラメータを動的に修正
○
■ デバッガのredoコマンド
● エラーが起きたタスクの再実行
● 成功したら、後続のタスクもどんどん実行されていく
外部のデバッグツールをつかう
● この方法の良い点
○ Playbookを書き換えずに、気になる変数を調べられる
■ 変数一覧とかも出せる
○ エラーが起きたら、その場で問題を修正し、実行を継続
できる
■ ansible-playbookの再実行をしなくていい
外部のデバッグツールをつかう
● 今ひとつな点
○ ツールの導入が必要
○ デバッガが起動しないエラーケースがある
■ Playbookの文法エラーなど
○ デバッガ内での問題修正ができないケースがある
■ 定義する変数の名前を間違えていた、とか
まとめ
● Playbookの修正&再実行を短時間化する方法
1. Ansibleのオプション/モジュールをつかう
○ 使えないケースはあるが、楽に導入できる
2. 外部のデバッグツールをつかう
○ ツールの導入は必要、でも、より時間短縮できるかも
ご清聴ありがとうございました