Skip to content

Latest commit

 

History

History
165 lines (115 loc) · 5.46 KB

File metadata and controls

165 lines (115 loc) · 5.46 KB

ワークショップ演習 - テンプレート

他の言語でもお読みいただけます:
uk Englishjapan日本語brazil Portugues do Brasilfrance FrançaiseEspañol Español

目次

目的

この演習では、Jinja2 テンプレートについて説明します。Ansible は Jinja2 テンプレートを使用して、ファイルが管理対象ホストに配布される前にファイルを変更します。Jinja2は、Python で最も使用されているテンプレートエンジンの1つです (http://jinja.pocoo.org/)。

ガイド

ステップ 1 - Playbooks でのテンプレートの使用

ファイルのテンプレートが作成されると、template モジュールを使用して管理対象ホストに展開できます。これは、制御ノードから管理対象ホストへのローカルファイルの転送に対応しています。

テンプレートの使用例として、ホスト固有のデータを含むように motd ファイルを変更します。

最初に、テンプレートリソースを保持するディレクトリー templates~/ansible-files/ に作成します。

[student@ansible-1 ansible-files]$ mkdir templates

その後、~/ansible-files/templates/ ディレクトリーに、テンプレートファイル motd-facts.j2 を作成します。

Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture.

このテンプレートファイルには、後でコピーされる基本的なテキストが含まれています。また、ターゲットマシンで個別に置き換えられる変数も含まれています。

次に、このテンプレートを使用するための Playbook が必要です。~/ansible-files/ ディレクトリーで、Playbook motd-facts.yml を作成します。

---
- name: Fill motd file with host data
  hosts: node1
  become: true
  tasks:
    - template:
        src: motd-facts.j2
        dest: /etc/motd
        owner: root
        group: root
        mode: 0644

この操作はこれまで数回行ってきました。

  • Playbook の内容を把握します。
  • Playbook motd-facts.yml を実行します。
  • SSH 経由で node1 にログインし、その日の内容のメッセージを確認します。
  • node1 からログアウトします。

Ansible がシステムから検出したファクトに変数置き換える方法を確認してください。

ステップ 2 - チャレンジラボ

テンプレートに行を追加して、管理対象ノードの現在のカーネルを一覧表示します。

  • 「Ansible ファクト」の章で学習したコマンドを使用して、カーネルバージョンを含むファクトを見つけます。

ヒント*

カーネルのフィルター

新規作成された Playbook を実行してファクト名を検索します。

  • テンプレートを変更して、見つけたファクトを使用します。

  • 再び motd Playbook を実行します。

  • node1 にログインして motd を確認します

警告

回答を以下に示します。

  • ファクトを見つけます。
---
- name: Capture Kernel Version
  hosts: node1

  tasks:

    - name: Collect only kernel facts
      ansible.builtin.setup:
        filter:
        - '*kernel'
      register: setup

    - debug:
        var: setup

ワイルドカードが導入されると、出力は以下のようになります。

TASK [debug] *******************************************************************
ok: [node1] => {
    "setup": {
        "ansible_facts": {
            "ansible_kernel": "4.18.0-305.12.1.el8_4.x86_64"
        },
        "changed": false,
        "failed": false
    }
}

これにより、検索する変数に ansible_kernel というラベルが付けられます。

次に、motd-facts.j2 テンプレートを更新して、メッセージの一部として ansible_kernel を含めることができます。

  • テンプレート motd-facts.j2 変更します。
Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture
running kernel {{ ansible_kernel }}.
  • Playbook を実行します。
[student@ansible-1 ~]$ ansible-navigator run motd-facts.yml -m stdout
  • node1 への SSH ログインを介して新しいメッセージを確認します。
[student@ansible-1 ~]$ ssh node1
Welcome to node1.
RedHat 8.1
deployed on x86_64 architecture
running kernel 4.18.0-305.12.1.el8_4.x86_64.

ナビゲーション
前の演習 - 次の演習

Click here to return to the Ansible for Red Hat Enterprise Linux Workshop