Saturday, November 23, 2024

[Ansible] Template trong Ansible

-

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ế.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories