AnsiblePlaybookでテンプレートを作成して使用する方法
テンプレートを使用すると、Jinja2テンプレートシステムに基づく事前定義されたモデルを使用してノード上に新しいファイルを作成できます。 Ansibleテンプレートは通常、次のように保存されます .tpl
ファイルを作成し、変数、ループ、および条件式の使用をサポートします。
テンプレートは通常、プレイブック自体、含まれている変数ファイル、またはfactsを介して取得できる変数値に基づいてサービスを構成するために使用されます。 これにより、動的な情報に基づいて動作を適応させる、より用途の広いセットアップを作成できます。
実用的な例でこの機能を試すには、プレイブック以外のファイルを保持する新しいディレクトリを作成します。 ansible-practice
ディレクトリ:
- mkdir ~/ansible-practice/files
次に、HTMLランディングページの新しいテンプレートファイルを作成します。 後で、Nginxでランディングページを提供するようにリモートノードを構成するプレイブックを設定します。
- nano ~/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_title
と page_description
.
次のプレイブックは、必要な変数を設定し、Nginxをインストールしてから、指定されたテンプレートを適用して、にある既存のデフォルトのNginxランディングページを置き換えます。 /var/www/html/index.nginx-debian.html
. 最後のタスクは ufw
ポートでtcpアクセスを有効にするモジュール 80
、サーバーの初期設定ガイドで推奨されているようにファイアウォールを有効にしている場合。
と呼ばれる新しいファイルを作成します playbook-11.yml
あなたの中で ansible-practice
ディレクトリ:
- nano ~/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
権限:
- ansible-playbook -i inventory playbook-11.yml -u sammy -K
OutputBECOME 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ページは作成したテンプレートに置き換えられました。