他の言語で読む:
英語, 日本語, ブラジルポルトガル語, フランス語, スペイン語.
演習 1.5 では、Ansible 内での Jinja2 テンプレーティングが紹介されます。これは、テンプレートから動的なファイルを生成するための強力な機能です。ホスト固有のデータを組み込んだテンプレートを作成する方法を学び、管理されている各ホストに合わせた設定ファイルを作成できるようになります。
Ansible は Jinja2 を活用しています。Jinja2 は Python 用の広く使用されているテンプレート言語で、ファイル内で動的なコンテンツの生成を可能にします。この機能は、ホストごとに異なる必要がある設定ファイルを構成する場合に特に便利です。
テンプレートは .j2
拡張子で終わり、静的なコンテンツと {{ }}
で囲まれた動的なプレースホルダーを混在させます。
次の例では、動的なホスト情報を含む「本日のメッセージ」(MOTD) のテンプレートを作成しましょう。
テンプレートを整理するために、lab_inventory ディレクトリ内にテンプレートディレクトリが存在することを確認してください。
mkdir -p ~/lab_inventory/templates
テンプレートディレクトリに motd.j2
という名前のファイルを作成し、以下の内容を含めます:
{{ ansible_hostname }} へようこそ。
OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
アーキテクチャ: {{ ansible_architecture }}
このテンプレートは、管理されている各ホストのホスト名、OS の配布、バージョン、およびアーキテクチャを動的に表示します。
プレイブック内で ansible.builtin.template
モジュールを使用して、管理されているホストにテンプレートを配布し、レンダリングします。
以下の内容で system_setup.yml
プレイブックを変更します:
---
- name: 基本的なシステムセットアップ
hosts: all
become: true
tasks:
- name: Jinja2 テンプレートから MOTD を更新
ansible.builtin.template:
src: templates/motd.j2
dest: /etc/motd
handlers:
- name: ファイアウォールの再読み込み
ansible.builtin.service:
name: firewalld
state: reloaded
ansible.builtin.template
モジュールは motd.j2
テンプレートを取り、各ホストに /etc/motd
ファイルを生成し、テンプレートのプレースホルダーを実際のホストの事実で埋めます。
管理されているすべてのホストにカスタム MOTD を適用するために、プレイブックを実行します:
[student@ansible-1 lab_inventory]$ ansible-navigator run system_setup.yml -m stdout
PLAY [基本的なシステムセットアップ] *********************************************
.
.
.
TASK [Jinja2 テンプレートから MOTD を更新] **************************************
changed: [node1]
changed: [node2]
changed: [node3]
changed: [ansible-1]
RECAP ************************************************************************
ansible-1 : ok=6 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
node1 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ノードにSSHで接続して変更を確認し、その日のメッセージが表示されるはずです:
[rhel@control ~]$ ssh node1
node1 へようこそ。
OS: RedHat 8.7
アーキテクチャ: x86_64
このシステムを Red Hat Insights に登録する:insights-client --register
アカウントを作成するか、https://red.ht/insights-dashboard で全てのシステムを表示する
最終ログイン:2024年1月29日 月曜日 16:30:31 から 10.5.1.29