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