ホーム > Ansible AWX・Tower リファレンス
Ansibleで、メッセージの表示や変数の内容確認など、デバッグに使える「debug」モジュールの使用方法について解説します。
debugモジュールについて
debugモジュールは、画面やログに任意の文字列を出力したり、変数に格納された値を確認する際に使用します。
パラメーター
debugモジュールでよく使用されるパラメーターになります。
これらを組み合わせることで、様々な処理を行うことが可能です。
パラメーター | 機能 |
---|---|
msg | 画面に表示する(ログに出力する)メッセージの内容を指定する |
var | 内容を表示したい変数を指定する *変数を使用する際は通常、「{{ 変数名 }}」とするが、本パラメーターを使用する場合は「{{ }}」は不要 |
verbosity | テンプレートで設定した詳細(ログレベル)以下の場合のみ実行する(デフォルトは[0]) 0:Normal 1:Verbose 2:More Verbose 3:Debug 4:Connection Debug |
実行環境について
本記事の実行環境は「Ansible AWX」としています。
以下は、Ansible AWX での各種定義について記載しています。
テンプレート
今回実行するテンプレートの設定になります。
- 名前:Module Debug Template
- 説明:debugモジュール
- ジョブタイプ:実行
- インベントリー:SyuTaku Server Inventory
- プロジェクト:秋拓プロジェクト
- PLAYBOOK:debug.yml
- 認証情報:awx
- 詳細:0(Normal)
認証情報
今回使用する認証情報の設定になります。
- 名前:awx
- 説明:awxユーザ
- 認証情報タイプ:マシン
- ユーザー名:awx
- パスワード:「ユーザー名」に設定したユーザーに対応したパスワード
インベントリー
インベントリー変数やホスト変数などは使用していないため割愛します。
メッセージを表示する
debugモジュールの最もシンプルな使い方である、画面やログに任意のメッセージを表示する方法です。
プレイブック
画面に「テスト文字列」を表示するサンプルです。
---
- hosts: all
gather_facts: False
tasks:
- name: メッセージの表示
debug:
msg: テスト文字列
実行結果
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [メッセージの表示] ****************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "テスト文字列"
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
変数の内容を確認する
debugモジュールのパラメーターの1つである「var」を使用することで、変数の内容を確認することが出来ます。
プレイブック
変数「sample_vars」の内容を表示するサンプルです。
---
- hosts: all
gather_facts: False
vars:
- sample_vars: 秋拓技術学院
tasks:
- name: メッセージの表示
debug:
var: sample_vars
実行結果
変数「sample_vars」に格納している文字列「秋拓技術学院」が表示されることが確認出来ます。
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [メッセージの表示] ****************************************************************
ok: [SYUTAKUAPL01] => {
"sample_vars": "秋拓技術学院"
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
変数と文字列を組み合わせてメッセージを表示する
変数に格納された文字列と任意の文字列を組み合わせたメッセージを表示する方法です。
プレイブック
任意の文字列「ホスト名:」とマジック変数「inventory_hostname」を組み合わせたサンプルです。
---
- hosts: all
gather_facts: False
tasks:
- name: メッセージの表示
debug:
msg: "ホスト名:{{ inventory_hostname }}"
実行結果
サンプルの実行結果です。
マジック変数「inventory_hostname」から、接続先ホスト(サンプルでは、SYUTAKUAPL01)が取得され、メッセージとして表示されます。
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [メッセージの表示] ****************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "ホスト名:SYUTAKUAPL01"
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
メッセージを複数行に分けて表示する
長いメッセージを複数行に分けて表示する方法を説明します。
プレイブック
ファイルパス、ファイル名などの情報を1行で出力するタスクと、複数行に分けて出力するタスクを記述したサンプルです。
---
- hosts: all
gather_facts: False
vars:
- file_path: /home/ansible/
- file_name: playbook.yml
tasks:
- name: 1行で表示する例
debug:
msg: "■ファイル情報■/【パス】{{ file_path }}/【ファイル名】{{ file_name }}"
- name: 複数行で表示する例
debug:
msg:
- ■ファイル情報■
- "【パス】{{ file_path }}"
- "【ファイル名】{{ file_name }}"
実行結果
実行結果です。出力する内容にもよりますが、複数行で表示することで、すごく読みやすくなったと思います。
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [1行で表示する例] ****************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "■ファイル情報■/【パス】/home/ansible//【ファイル名】playbook.yml"
}
TASK [複数行で表示する例] ***************************************************************
ok: [SYUTAKUAPL01] => {
"msg": [
"■ファイル情報■",
"【パス】/home/ansible/",
"【ファイル名】playbook.yml"
]
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ログレベルに合わせて出力するメッセージを変更する
テンプレートに設定した「詳細(ログレベル)」に合わせて、debugモジュールで出力するメッセージを変更する方法です。
テンプレートに設定したログレベルより、設定されているverbosityの値が大きいタスクはスキップされます。
プレイブック
処理は同じですが、verbosityの値が 0 から 2 までをそれぞれのタスクに設定したサンプルです。
テンプレート側のログレベルは「1」に変更しています。
---
- hosts: all
gather_facts: False
tasks:
- name: verbosity:0(デフォルト)
debug:
msg: テスト文字列
- name: verbosity:1
debug:
msg: テスト文字列
verbosity: 1
- name: verbosity:2
debug:
msg: テスト文字列
verbosity: 2
実行結果
実行結果です。テンプレート側のログレベルが「1」なので、タスクの実行結果は下記のようになります。
verbosity | タスクの実行結果 |
---|---|
0(デフォルト) | 実行された |
1 | 実行された |
2 | スキップされた |
Using /etc/ansible/ansible.cfg as config file
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [verbosity:0(デフォルト)] ******************************************************
ok: [SYUTAKUAPL01] => {
"msg": "テスト文字列"
}
TASK [verbosity:1] *************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "テスト文字列"
}
TASK [verbosity:2] *************************************************************
skipping: [SYUTAKUAPL01] => {"skipped_reason": "Verbosity threshold not met."}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
コメント