SUPONO.
NetAuto โ€ข Kursus PraktisiPanduan Praktik Hands-On

Modul Bab 3: Ansible & Jinja2 Templating untuk RouterOS

Konsep Infrastructure as Code (IaC), koleksi community.routeros, variabel dinamis, dan template Jinja2.

Format: Markdown (.MD)โ€ขFile: bab_3_ansible_dan_jinja2_templating.mdโ€ขSasaran: Praktisi & DevOps
Filter Versi CLI:

Ansible adalah orchestration tool tanpa agent (agentless) yang mengeksekusi otomatisasi melalui koneksi SSH atau REST API. Menggabungkan Ansible dengan template Jinja2 memungkinkan network engineer menerapkan prinsip Infrastructure as Code (IaC), di mana konfigurasi router ratusan cabang dapat dikelola secara terpusat melalui version control (Git).

graph TD subgraph Repo["Git Repository / IaC Source of Truth"] INV["hosts.ini
(Inventory Branch Router)"] VARS["group_vars/branch.yml
(Subnet, ASN, VLAN)"] J2["template_base.j2
(Jinja2 RouterOS Jinja)"] end subgraph Controller["Ansible Engine"] PLAY["deploy_routeros.yml
(Ansible Playbook)"] end subgraph Devices["Branch Office Fleets"] R1["Branch Jakarta (RB4011)"] R2["Branch Surabaya (CCR2004)"] R3["Branch Medan (L009UiGS)"] end INV --> PLAY VARS --> PLAY J2 --> PLAY PLAY -->|SSH / RouterOS API| R1 PLAY -->|SSH / RouterOS API| R2 PLAY -->|SSH / RouterOS API| R3

3.1 Konsep Agentless & Koleksi community.routeros #

Ansible tidak memerlukan software tambahan di router MikroTik. Komunikasi dilakukan menggunakan modul resmi community.routeros yang didukung oleh Ansible Galaxy.

BASH
# Instalasi koleksi RouterOS di host Ansible
ansible-galaxy collection install community.routeros

3.2 Variabel & Dynamic Jinja2 Templating #

Dengan Jinja2, kita memisahkan logika script dari nilai konfigurasi:

JINJA2
# template_base.j2
/system identity set name="{{ hostname }}"

{% for vlan in vlans %}
/interface vlan add name="{{ vlan.name }}" vlan-id={{ vlan.id }} interface=bridge-lan
/ip address add address={{ vlan.ip }} interface={{ vlan.name }}
{% endfor %}

/ip dns set servers={{ dns_primary }},{{ dns_secondary }}