آموزش جامع ساخت و استفاده از Templateها در Ansible Playbookها

تمپلیت‌ها اجازه می‌دهند تا فایل‌های جدید را روی نودها با استفاده از مدل‌های از پیش تعریف‌شده مبتنی بر سیستم قالب‌بندی Jinja2 ایجاد کنید. تمپلیت‌های Ansible معمولاً با پسوند .tpl ذخیره می‌شوند و از متغیرها، حلقه‌ها و عبارات شرطی پشتیبانی می‌کنند.

تمپلیت‌ها معمولاً برای پیکربندی سرویس‌ها بر اساس مقادیر متغیر که می‌تواند در خود playbook، فایل‌های متغیر مجزا یا از طریق facts به دست آید، استفاده می‌شوند. این موضوع به شما امکان می‌دهد تنظیماتی پویا و قابل تطبیق با اطلاعات متغیر ایجاد کنید.

برای آزمایش این ویژگی با یک مثال عملی، یک دایرکتوری جدید برای نگهداری فایل‌های غیر-playbook داخل دایرکتوری ansible-practice خود ایجاد کنید:

mkdir ~/ansible-practice/files
سپس یک فایل قالب جدید برای صفحه فرود HTML ایجاد کنید. بعداً یک playbook راه‌اندازی خواهیم کرد که نودهای ریموت شما را پیکربندی کند تا صفحه فرود با 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>

پس از اتمام کار، فایل را ذخیره و ببندید.

این قالب از دو متغیر استفاده می‌کند که باید هنگام اعمال قالب در playbook مقداردهی شوند: page_title و page_description.

playbook زیر مقادیر متغیرهای لازم را تنظیم، Nginx را نصب کرده و سپس قالب مشخص‌شده را برای جایگزینی صفحه فرود پیش‌فرض Nginx در مسیر /var/www/html/index.nginx-debian.html اعمال می‌کند. آخرین تسک نیز از ماژول ufw برای فعال‌سازی دسترسی TCP روی پورت 80 استفاده می‌کند که در صورت داشتن فایروال طبق راهنمای اولیه سرور توصیه می‌شود.

یک فایل جدید به نام playbook-11.yml در دایرکتوری ansible-practice خود ایجاد کنید:
nano ~/ansible-practice/playbook-11.yml

محتوای زیر را به فایل playbook اضافه کنید:
---
- 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

به یاد داشته باشید هنگام اجرای این playbook از گزینه -K استفاده کنید، چون به دسترسی sudo نیاز دارد:
ansible-playbook -i inventory playbook-11.yml -u sammy -K

پس از اتمام اجرا، می‌توانید آدرس IP عمومی وبسرور را از مرورگر خود باز کنید. صفحه‌ای مشابه تصویر زیر مشاهده می‌کنید:

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

این نشان می‌دهد playbook شما به درستی اجرا شده و صفحه پیش‌فرض Nginx با قالب ایجادشده شما جایگزین شده است.

از همراهی شما با ParminCloud سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *