User Tools

Site Tools


ansible_template

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ansible_template [2025/07/26 17:09] – - Imported by DokuWiki Advanced Plugin wikiadmansible_template [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Templates ====== 
-Templates são arquivos de configuração com conteúdo dinâmico, que substitui diversos arquivos estáticos em uma infraestrutura com um grande número de servidores. 
  
-Através de Templates precisamos apenas de um único arquivo que leva entradas dinâmicas, que são específicos para o host que está sendo executado. 
- 
-Templates utilizam Jinja2 que é uma linguagem de modelagem moderna para o designer que utiliza Python. Os arquivos de templates podem conter variáveis com base no template Jinja2 do Python. 
- 
-===== Tipos de Templates ===== 
-Tipos de tags que os templates Jinja2 aceitam: 
-  * **{ { } }:** Incorpora variáveis dentro de um template e imprime seu valor no arquivo resultante. Este é o uso mais comum de um template; 
-  * **{% %}:** Incorpora declarações de código dentro de um template, por exemplo, para um loop. Ele incorpora as declarações if-else, que são avaliadas em tempo de execução, mas não são impressas. 
- 
-**Exemplos de Tags:** 
-Incorporar variáveis: 
-<file bash> 
-{{ pacotes_php }} 
-</file> 
- 
-Incorporar declarações: 
-<file bash> 
-{{ ansible_default_ipv4 }} 
-</file> 
- 
-===== Gerenciar Roles com templates ===== 
-<file bash> 
-$ cd /etc/ansible/roles 
-$ sudo ansible-galaxy role init balancer 
-- Role balancer was created successfully 
-</file> 
- 
-<file bash> 
-$ sudo ansible-galaxy role list 
-# /etc/ansible/roles 
-- balancer, (unknown version) 
-- conf-base, 1.0.0 
-- nfs-server, 1.0.0 
-</file> 
- 
-<file bash> 
-$ sudo cp -r ~/roles/balancer/* balancer/ 
-$ sudo cp -r ~/roles/balancer/*.* balancer/ 
-</file> 
- 
-**Conteúdo do diretório tasks:** 
-  - **main.yml:** Arquivo principal responsável em carregar os arquivos install.yml e configure.yml; 
-  - **install.yml:** Arquivo responsável pela instalação do Nginx; 
-  - **configure.yml:** Arquivo responsável pela configuração do Nginx. 
- 
-Arquivo main.yml: 
-<file yaml> 
-$ cat balancer/tasks/main.yml 
---- 
-- name: Define instalacao do servidor Nginx 
-  import_tasks: install.yml 
- 
-- name: Define configuracao do servidor Nginx 
-  import_tasks: configure.yml 
-</file> 
- 
-**Arquivo install.yml:** 
-<file yaml> 
-$ cat balancer/tasks/install.yml 
---- 
-- name: Instala servidor Nginx no Debian/Ubuntu 
-  when: ansible_os_family == "Debian" 
-  apt: 
-    name: nginx 
-    state: present 
-    update_cache: true 
-  notify: 
-    - Start Nginx 
-  tags: balancer 
- 
-- name: Instala servidor Ngin no RedHat/CentOS 
-  when: ansible_os_family == "RedHat" 
-  yum: 
-    name: nginx 
-    state: present 
-  notify: 
-    - Start Nginx 
-  tags: balancer 
- 
-- name: Inicia e ativa na inicializacao o servico nginx 
-  when: ansible_os_family == "RedHat" 
-  systemd: 
-    name: nginx 
-    state: started 
-    enabled: true 
-  tags: balancer 
-</file> 
- 
-**Arquivo configure.yml:** 
-<file bash> 
-$ cat balancer/tasks/configure.yml 
---- 
-- name: Define o arquivo de configuracao do servidor Nginx no Debian/Ubuntu 
-  when: ansible_os_family == "Debian" 
-  template: 
-    src: nginx-debian.conf.j2 
-    dest: /etc/nginx/nginx.conf 
-    owner: root 
-    group: root 
-    mode: 0644 
-  notify: 
-    - Restart Nginx 
-  tags: balancer 
- 
-- name: Define o arquivo de configuracao do servidor Nginx no RedHat/CentOS 
-  when: ansible_os_family == "RedHat" 
-  template: 
-    src: nginx-redhat.conf.j2 
-    dest: /etc/nginx/nginx.conf 
-    owner: root 
-    group: root 
-    mode: 0644 
-  notify: 
-    - Restart Nginx 
-  tags: balancer 
-</file> 
- 
-FIXME Quando você utiliza o módulo template, é preciso adicionar a extensão ''.j2'' nos arquivos de origem. Exemplo: ''nginx-debian.conf.j2''. 
- 
-**Conteúdo do diretório meta:** 
-<file yaml> 
-$ cat balancer/meta/main.yml 
---- 
-galaxy_info: 
-  role_name: balancer 
-  author: 4Linux DevOps 
-  description: Instalacao e Configuracao do servidor Nginx Load Balancer 
-  company: 4Linux 
-  license: GPLv3 
-  min_ansible_version: 2.9 
-  platforms: 
-    - name: Ubuntu 
-      versions: 
-        - focal 
-    - name: EL 
-      versions: 
-        - 8 
-  galaxy_tags: 
-    - balancer 
-dependencies: 
-  - conf-base 
-</file> 
- 
-**Conteúdo do diretório handlers:** 
-<file yaml> 
-$ cat balancer/handlers/main.yml 
---- 
-- name: Start Nginx 
-  service: 
-    name: nginx 
-    state: started 
- 
-- name: Restart Nginx 
-  service: 
-    name: nginx 
-    state: restarted 
-</file> 
- 
-**Conteúdo do diretório templates:** 
-<file j2> 
-$ cat balancer/templates/nginx-redhat.conf.j2 
-user nginx; 
-worker_processes auto; 
-error_log /var/log/nginx/error.log; 
-pid /run/nginx.pid; 
- 
-include /usr/share/nginx/modules/*.conf; 
- 
-events { 
-    worker_connections 1024; 
-} 
- 
-http { 
-    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
-                      '$status $body_bytes_sent "$http_referer" ' 
-                      '"$http_user_agent" "$http_x_forwarded_for"'; 
- 
-    access_log  /var/log/nginx/access.log  main; 
- 
-    sendfile            on; 
-    tcp_nopush          on; 
-    tcp_nodelay         on; 
-    keepalive_timeout   65; 
-    types_hash_max_size 2048; 
- 
-    include             /etc/nginx/mime.types; 
-    default_type        application/octet-stream; 
- 
-    include /etc/nginx/conf.d/*.conf; 
- 
-   upstream cluster { 
-   server {{ webserver01 }} weight=1; 
-   server {{ webserver02 }} weight=1; 
-  } 
- 
-   server { 
-     listen {{ ansible_enp0s8.ipv4.address }}:80; 
-     server_name www.dexter.com.br dexter.com.br; 
-     location / { 
-       proxy_pass http://cluster; 
-       proxy_redirect off; 
-       proxy_set_header Host $host; 
-       proxy_set_header X-Real-IP $remote_addr; 
-       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
-       proxy_buffers 8 32k; 
- 
-       default_type "text/html; charset=utf-8"; 
-       error_page 501 502 404 405 = @fallback; 
-  } 
- 
-    location @fallback { 
-        proxy_pass http://cluster; 
-        proxy_set_header Host $host; 
-        proxy_set_header X-Real-IP $remote_addr; 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
-    } 
-  } 
-} 
-</file> 
- 
-**Conteúdo do diretório defaults:** 
- 
-**Arquivo main.yml** 
-<file yaml> 
-$ cat balancer/defaults/main.yml 
---- 
-ol-vm-02: 10.240.0.202 
-de-vm-03: 10.240.0.203 
-</file> 
- 
-Para finalizar, é preciso criar um arquivo responsável em carregar a Role e definir em qual máquina ela será aplicada. 
-<file yaml> 
-$ cat ~/roles/playbooks/balancer.yml 
---- 
-- hosts: ol-vm-02 
-  vars: 
-    ansible_python_interpreter: /usr/bin/python3.9 
-  roles: 
-    -  balancer 
-</file> 
- 
-<file bash> 
-$ sudo ansible-playbook --syntax-check ~/roles/playbooks/balancer.yml 
-$ sudo ansible-playbook ~/roles/playbooks/balancer.yml 
-</file> 
ansible_template.1753560543.txt.gz · Last modified: by wikiadm