【Ansible Tower/AWX】デバッグに最適!debugモジュールの使い方


この記事はプロモーションを含みます。

Ansible

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

コメント

タイトルとURLをコピーしました