開発者ドキュメント

AnsiblePlaybookでテンプレートを作成して使用する方法

テンプレートを使用すると、Jinja2テンプレートシステムに基づく事前定義されたモデルを使用してノード上に新しいファイルを作成できます。 Ansibleテンプレートは通常、次のように保存されます .tpl ファイルを作成し、変数、ループ、および条件式の使用をサポートします。

テンプレートは通常、プレイブック自体、含まれている変数ファイル、またはfactsを介して取得できる変数値に基づいてサービスを構成するために使用されます。 これにより、動的な情報に基づいて動作を適応させる、より用途の広いセットアップを作成できます。

実用的な例でこの機能を試すには、プレイブック以外のファイルを保持する新しいディレクトリを作成します。 ansible-practice ディレクトリ:

  1. mkdir ~/ansible-practice/files

次に、HTMLランディングページの新しいテンプレートファイルを作成します。 後で、Nginxでランディングページを提供するようにリモートノードを構成するプレイブックを設定します。

  1. nano ~/ansible-practice/files/landing-page.html.j2

次のコンテンツをテンプレートファイルに追加します。

〜/ ansible-practice / files / landing-page.html.j2
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>{{ page_title }}</title>
  <meta name="description" content="Created with Ansible">
</head>
<body>
    <h1>{{ page_title }}</h1>
    <p>{{ page_description }}</p>
</body>
</html>

完了したら、ファイルを保存して閉じます。

このテンプレートは、テンプレートがプレイブックに適用されるたびに提供する必要がある2つの変数を使用します。 page_titlepage_description.

次のプレイブックは、必要な変数を設定し、Nginxをインストールしてから、指定されたテンプレートを適用して、にある既存のデフォルトのNginxランディングページを置き換えます。 /var/www/html/index.nginx-debian.html. 最後のタスクは ufw ポートでtcpアクセスを有効にするモジュール 80、サーバーの初期設定ガイドで推奨されているようにファイアウォールを有効にしている場合。

と呼ばれる新しいファイルを作成します playbook-11.yml あなたの中で ansible-practice ディレクトリ:

  1. nano ~/ansible-practice/playbook-11.yml

次のコンテンツを新しいプレイブックファイルに追加します。

〜/ ansible-practice / playbook-11.yml
---
- hosts: all
  become: yes
  vars:
    page_title: My Landing Page
    page_description: This is my landing page description.
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: latest

    - name: Apply Page Template
      template:
        src: files/landing-page.html.j2
        dest: /var/www/html/index.nginx-debian.html

    - name: Allow all access to tcp port 80
      ufw:
        rule: allow
        port: '80'
        proto: tcp    

提供することを忘れないでください -K このプレイブックを実行する場合は、オプションが必要です。 sudo 権限:

  1. ansible-playbook -i inventory playbook-11.yml -u sammy -K
Output
BECOME password: PLAY [all] ********************************************************************************************** TASK [Gathering Facts] ********************************************************************************** ok: [203.0.113.10] TASK [Install Nginx] ************************************************************************************ changed: [203.0.113.10] TASK [Apply Page Template] ****************************************************************************** changed: [203.0.113.10] TASK [Allow all access to tcp port 80] ****************************************************************** changed: [203.0.113.10] PLAY RECAP ********************************************************************************************** 203.0.113.10 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

再生が終了すると、ブラウザからWebサーバーのパブリックIPアドレスにアクセスできます。 次のようなページが表示されます。

つまり、プレイブックは期待どおりに機能し、デフォルトのNginxページは作成したテンプレートに置き換えられました。

モバイルバージョンを終了