ansible_template
Differences
This shows you the differences between two versions of the page.
| ansible_template [2025/07/26 17:09] – - Imported by DokuWiki Advanced Plugin wikiadm | ansible_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 }} | ||
| - | </ | ||
| - | |||
| - | Incorporar declarações: | ||
| - | <file bash> | ||
| - | {{ ansible_default_ipv4 }} | ||
| - | </ | ||
| - | |||
| - | ===== Gerenciar Roles com templates ===== | ||
| - | <file bash> | ||
| - | $ cd / | ||
| - | $ sudo ansible-galaxy role init balancer | ||
| - | - Role balancer was created successfully | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | $ sudo ansible-galaxy role list | ||
| - | # / | ||
| - | - balancer, (unknown version) | ||
| - | - conf-base, 1.0.0 | ||
| - | - nfs-server, 1.0.0 | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | $ sudo cp -r ~/ | ||
| - | $ sudo cp -r ~/ | ||
| - | </ | ||
| - | |||
| - | **Conteúdo do diretório tasks:** | ||
| - | - **main.yml: | ||
| - | - **install.yml: | ||
| - | - **configure.yml: | ||
| - | |||
| - | Arquivo main.yml: | ||
| - | <file yaml> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | - name: Define instalacao do servidor Nginx | ||
| - | import_tasks: | ||
| - | |||
| - | - name: Define configuracao do servidor Nginx | ||
| - | import_tasks: | ||
| - | </ | ||
| - | |||
| - | **Arquivo install.yml: | ||
| - | <file yaml> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | - name: Instala servidor Nginx no Debian/ | ||
| - | when: ansible_os_family == " | ||
| - | apt: | ||
| - | name: nginx | ||
| - | state: present | ||
| - | update_cache: | ||
| - | notify: | ||
| - | - Start Nginx | ||
| - | tags: balancer | ||
| - | |||
| - | - name: Instala servidor Ngin no RedHat/ | ||
| - | when: ansible_os_family == " | ||
| - | yum: | ||
| - | name: nginx | ||
| - | state: present | ||
| - | notify: | ||
| - | - Start Nginx | ||
| - | tags: balancer | ||
| - | |||
| - | - name: Inicia e ativa na inicializacao o servico nginx | ||
| - | when: ansible_os_family == " | ||
| - | systemd: | ||
| - | name: nginx | ||
| - | state: started | ||
| - | enabled: true | ||
| - | tags: balancer | ||
| - | </ | ||
| - | |||
| - | **Arquivo configure.yml: | ||
| - | <file bash> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | - name: Define o arquivo de configuracao do servidor Nginx no Debian/ | ||
| - | when: ansible_os_family == " | ||
| - | template: | ||
| - | src: nginx-debian.conf.j2 | ||
| - | dest: / | ||
| - | owner: root | ||
| - | group: root | ||
| - | mode: 0644 | ||
| - | notify: | ||
| - | - Restart Nginx | ||
| - | tags: balancer | ||
| - | |||
| - | - name: Define o arquivo de configuracao do servidor Nginx no RedHat/ | ||
| - | when: ansible_os_family == " | ||
| - | template: | ||
| - | src: nginx-redhat.conf.j2 | ||
| - | dest: / | ||
| - | owner: root | ||
| - | group: root | ||
| - | mode: 0644 | ||
| - | notify: | ||
| - | - Restart Nginx | ||
| - | tags: balancer | ||
| - | </ | ||
| - | |||
| - | FIXME Quando você utiliza o módulo template, é preciso adicionar a extensão '' | ||
| - | |||
| - | **Conteúdo do diretório meta:** | ||
| - | <file yaml> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | galaxy_info: | ||
| - | role_name: balancer | ||
| - | author: 4Linux DevOps | ||
| - | description: | ||
| - | company: 4Linux | ||
| - | license: GPLv3 | ||
| - | min_ansible_version: | ||
| - | platforms: | ||
| - | - name: Ubuntu | ||
| - | versions: | ||
| - | - focal | ||
| - | - name: EL | ||
| - | versions: | ||
| - | - 8 | ||
| - | galaxy_tags: | ||
| - | - balancer | ||
| - | dependencies: | ||
| - | - conf-base | ||
| - | </ | ||
| - | |||
| - | **Conteúdo do diretório handlers:** | ||
| - | <file yaml> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | - name: Start Nginx | ||
| - | service: | ||
| - | name: nginx | ||
| - | state: started | ||
| - | |||
| - | - name: Restart Nginx | ||
| - | service: | ||
| - | name: nginx | ||
| - | state: restarted | ||
| - | </ | ||
| - | |||
| - | **Conteúdo do diretório templates: | ||
| - | <file j2> | ||
| - | $ cat balancer/ | ||
| - | user nginx; | ||
| - | worker_processes auto; | ||
| - | error_log / | ||
| - | pid / | ||
| - | |||
| - | include / | ||
| - | |||
| - | events { | ||
| - | worker_connections 1024; | ||
| - | } | ||
| - | |||
| - | http { | ||
| - | log_format | ||
| - | ' | ||
| - | '" | ||
| - | |||
| - | access_log | ||
| - | |||
| - | sendfile | ||
| - | tcp_nopush | ||
| - | tcp_nodelay | ||
| - | keepalive_timeout | ||
| - | types_hash_max_size 2048; | ||
| - | |||
| - | include | ||
| - | default_type | ||
| - | |||
| - | include / | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | } | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | | ||
| - | | ||
| - | } | ||
| - | |||
| - | location @fallback { | ||
| - | proxy_pass http:// | ||
| - | proxy_set_header Host $host; | ||
| - | proxy_set_header X-Real-IP $remote_addr; | ||
| - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | **Conteúdo do diretório defaults:** | ||
| - | |||
| - | **Arquivo main.yml** | ||
| - | <file yaml> | ||
| - | $ cat balancer/ | ||
| - | --- | ||
| - | ol-vm-02: 10.240.0.202 | ||
| - | de-vm-03: 10.240.0.203 | ||
| - | </ | ||
| - | |||
| - | Para finalizar, é preciso criar um arquivo responsável em carregar a Role e definir em qual máquina ela será aplicada. | ||
| - | <file yaml> | ||
| - | $ cat ~/ | ||
| - | --- | ||
| - | - hosts: ol-vm-02 | ||
| - | vars: | ||
| - | ansible_python_interpreter: | ||
| - | roles: | ||
| - | - balancer | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | $ sudo ansible-playbook --syntax-check ~/ | ||
| - | $ sudo ansible-playbook ~/ | ||
| - | </ | ||
ansible_template.1753560543.txt.gz · Last modified: by wikiadm
