ホーム > 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
  
  
  
  


コメント