演習04

レポートを作成してみよう

ここでは、AnsibleとJinja2を使ったレポートの動的作成方法について説明します。 Jinja2でレポートの元となるテンプレートを作成しておき、それを使ってレポートを生成することが出来ます。 テンプレートは自由に作成できるためMarkdownやcsvといった形式で作成することも可能です。

Step 1. レポート生成するファイルの確認する

本演習ディレクトリへ移動します。

cd ansible-vmware-workshops/docs/exercises/exercises04/

移動したディレクトリに report_generate_vmware.ymlreport_template_csv.j2 が存在していることを確認します。

ls
README.md  inventory  report_generate_vmware.yml  report_template_csv.j2

Step 2. レポート生成するファイルの説明

report_generate_vmware.yml の中身を見て見ましょう。

cat report_generate_vmware.yml
---
- name: GENERATE REPORT FOR VMS
  hosts: all
  gather_facts: no
  tasks:
    - name: GATHER VM GUEST FACTS
      vmware_guest_facts:
        hostname: 127.0.0.1
        username: user
        password: pass
        validate_certs: no
        datacenter: DC0
        name: "{{ item }}"
      loop:
        - DC0_H0_VM0
        - DC0_H0_VM1
      register: gather_vm_guest_facts_result

    - name: GENERATE REPORT
      template:
        src: report_template_csv.j2
        dest: vms_report.csv
  • VM情報を取得する処理に loop が追加されています。loopは、そのタスクを要素分だけ繰り返し実行します。ここではVM2台に対して情報を取得します。loopで回す時は展開するための変数を指定する必要があります。デフォルトは "{{ item }}" です。

  • template モジュールを使って、レポートを生成します。src にはテンプレートの元になるファイルを指定し dest にはアウトプットするファイル名を指定します。

次に report_template_csv.j2 の中身を見て見ましょう。

  • 1行目はカラムの名前です。

  • 2行目以降は for を使ってVM情報が格納されている gather_vm_guest_facts_result の中からレポートに必要な変数を抽出しています。

Jinja2を使ったテンプレートは、このようにコードを書いておくことで自由なレポートを生成することが出来ます。

Step 3. レポートを生成する

以下のコマンドを実行してレポートを生成してみましょう。

問題なく実行できれば、結果は以下のように表示されます。

生成されたレポートを確認してみましょう。

csv形式でレポートが生成されていることが確認できます。

これをExcelで表示して編集することも可能です。 このようにAnsibleでは動的なレポート作成も自動化できます。 棚卸しや構成の状態を確認したい時などもAnsibleが役に立ちます。

完了

お疲れ様でした。 演習04は終了です。

Last updated

Was this helpful?