Halo semua kembali lagi disini, Pada kesempatan kali ini kita akan belajar series Network Automation menggunakan Ansible. Kita akan belajar Ansible  mulai dari pemahaman apa itu Ansible, Getting Started with Ansible, Remote host, dan lain sebagainya, Semoga bisa berkelanjutan yaa.. Oke langsung saja kita masuk pada materi kali ini, Apa itu Ansible?

Ansible

Ansible is an open-source software provisioning, configuration management, and application-deployment tool enabling infrastructure as code. - Wiki

Mudahnya Ansible merupakan automation tools atau infrastructure as a code yang tersedia secara open source. Tidak hanya networking, Dengan ansible sebagai IAAS kita dapat melakukan berbagai macam hal seperti membuat dan menghapus server, management aplikasi, Atau lebih khusus pada network kita dapat melakukan konfigurasi pada beberapa router pada waktu yang bersamaan. 

Pada network tradisional Control Plane, Data Plane, dan Management Plane masih menjadi satu kesatuan di dalam perangkat, Sehingga jika kita ingin melakukan remote dan konfigurasi pada 10 router, Kita akan melakukan nya perangkat demi perangkat.

Solusi lain adalah dengan menggunakan Software-Defined Network seperti, ACI, SDA, Ataupun SD-WAN yang menerapkan konsep ZTP. Namun kita tetap perlu memahami beberapa tools automation baik Ansible itu sendiri ataupun menggunakan Python. Karena dengan menggunakan tools tersebut Software-Defined Network pun dapat kita Automate Lhoo.

Getting Started with Ansible

Pada Ansible terdapat 3 komponen utama yaitu :

  • Control Node
    Host yang diinstal Ansible, Dimana Control Node ini yang akan mengeksekusi script Ansible.

  • Managed Node
    Remote host yang di kontrol oleh ansible, Managed Node dapat berupa Server, Application, Networking devices such a router or switches.

  • Inventory
    Sebuah list dari Managed Node yang dikelola untuk diterapkan kontrol menggunakan Ansible. 

Baik selanjutnya langkah yang perlu kita lakukan adalah installasi Ansible pada host kita, Disini saya menggunakan Ubuntu 20.04 Focal Fossa. Untuk OS lain kalian bisa lihat documentation nya disini

Installing Ansible Ubuntu 20.04

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

tegar@Dominator:~$cd /etc/ansible
tegar@Dominator:/etc/ansible$ ansible --version
[WARNING]: Ansible is being run in a world writable directory (/etc/ansible), ignoring it as an ansible.cfg source. For
more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
ansible [core 2.12.7]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/tegar/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/tegar/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0]
  jinja version = 2.10.1
  libyaml = True

Run First Command Using Ansible

Sampai sini kita telah berhasil melakukan installasi Ansible, Kita akan coba melakukan remote pada salah satu perangkat, Semisal disini saya memiliki R1 dengan IP-MGMT 192.168.174.130/24.


Biasanya kita akan melakukan remote SSH ke perangkat dengan cara seperti gambar diatas, Mari kita lakukan dengan Ansible.
 
ansible all -i vyos.example.net, -c ansible.netcommon.network_cli -u my_vyos_user -k -m vyos.vyos.vyos_facts -e ansible_network_os=vyos.vyos.vyos
Pada contoh kita terdapat beberapa parameter diantaranya :
  • the inventory (-i, Merupakan inventory dari device target)
  • the connection method (-c, Merupakan metode untuk koneksi dan melakukan eksekusi ansible)
  • the user (-u, Username pada koneksi SSH)
  • the ssh connection method (-k, Please prompt the password)
  • the module (-m, Ansible module yang dapat dijalankan menggunakan Fully Qualified  Domain Name (FQDN)
  • the extra variable (-e, Digunakan untuk extra variable, Pada case ini digunakan untuk OS Value)
Selanjutnya kalian bisa ganti -i menjadi host -u masukan user kalian dan additional OS nya sesuaikan perangkat yang digunakan (Disini saya menggunakan IOS). 

Kemudian pada -m merujuk pada Modules yang disediakan oleh Ansible, Misalnya disini kita menggunakan Module ios_facts dimana akan mengambil kumpulan informasi dasar IOS. Untuk Modules lain nya kalian bisa lihat list Ansible Network Modules disini. Mari kita coba..


Dapat kita lihat disini, Control Node kita sudah dapat melakukan login ke Perangkat router, Dimana terdapat berbagai macam informasi dasar dari module ios_facts yang kita gunakan seperti IP pada interfaces, Interface satatus, Mac Address, MTU, Hostname, OS Version, Dan berbagai informasi dasar lainyaa.

Oke sampai sini dulu penjelasan penggunaan Ansible kali ini, Semoga bermanfaat..


Stay Curious

0 Comments