演習04
レポートを作成してみよう
ここでは、AnsibleとJinja2を使ったレポートの動的作成方法について説明します。 Jinja2でレポートの元となるテンプレートを作成しておき、それを使ってレポートを生成することが出来ます。 テンプレートは自由に作成できるためMarkdownやcsvといった形式で作成することも可能です。
Step 1. レポート生成するファイルの確認する
本演習ディレクトリへ移動します。
cd ansible-vmware-workshops/docs/exercises/exercises04/移動したディレクトリに report_generate_vmware.yml と report_template_csv.j2 が存在していることを確認します。
ls
README.md inventory report_generate_vmware.yml report_template_csv.j2Step 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.csvVM情報を取得する処理に
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?