Trong Ansible, bạn có thể sử dụng module “template” để tạo các file cấu hình dựa trên mẫu (template). Module này cho phép bạn sử dụng các biến và điều kiện để tạo ra các file cấu hình tùy chỉnh dựa trên các mẫu có sẵn. Điều này có thể giúp bạn tạo ra các cấu hình động dựa trên các thông số đầu vào, giảm thiểu các lỗi phát sinh khi viết cấu hình thủ công.
Để sử dụng module “template”, bạn cần tạo ra một file template với định dạng jinja2. Ví dụ, nếu bạn muốn tạo một file cấu hình Nginx, bạn có thể tạo một file template có tên nginx.conf.j2 với nội dung như sau:
user {{ nginx_user }};
worker_processes {{ nginx_worker_processes }};
error_log {{ nginx_error_log }} warn;
pid {{ nginx_pid_file }};
events {
worker_connections {{ nginx_worker_connections }};
}
http {
include {{ nginx_include_file }};
server {
listen {{ nginx_listen_port }};
server_name {{ nginx_server_name }};
location / {
root {{ nginx_root }};
index {{ nginx_index }};
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root {{ nginx_root }};
}
}
}
Bạn có thể sử dụng các biến trong mẫu này để tạo ra các file cấu hình Nginx tùy chỉnh dựa trên các thông số đầu vào.
Để sử dụng mẫu này, bạn cần tạo ra một file playbook Ansible với các nhiệm vụ như sau:
- name: Generate nginx.conf
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
vars:
nginx_user: nginx
nginx_worker_processes: 4
nginx_error_log: /var/log/nginx/error.log
nginx_pid_file: /var/run/nginx.pid
nginx_worker_connections: 1024
nginx_include_file: /etc/nginx/conf.d/*.conf
nginx_listen_port: 80
nginx_server_name: example.com
nginx_root: /usr/share/nginx/html
nginx_index: index.html
Trong đó, các biến được khai báo trong phần “vars” được sử dụng để thay thế các giá trị tương ứng trong file template. Khi chạy playbook này, Ansible sẽ tạo ra một file /etc/nginx/nginx.conf dựa trên mẫu nginx.conf.j2 với các giá trị biến đã được thay thế.