Making Small Command Modules using Ansible

Hello,

I’ve question related to a scenario which I can accomplish using Python but would like to achieve the same using Ansible.

In the scenario, I first execute “show run int” command to see if it has IP address allocated, if ip is not allocated then a new IP address is allocated to the interface else no action is taken. Finally I again do the “show ip int” command and verify whether the IP is allocated. For the scenario, I’ve used Paramiko library, I’ve made a connect class which gives me the connection object, and I’ve defined small function for various commands and its outputs, these functions used the connection object to run the command on the devices. Is it possible to achieve the same using Ansible?

Thank You

Kind Regards,

Ashwajit

Yes, you can use command module to run commands on targets that has python interpreter,
or use raw module if python interpreter is not available on target mashine.
check out example section:
https://docs.ansible.com/ansible/latest/modules/list_of_commands_modules.html
https://docs.ansible.com/ansible/latest/modules/raw_module.html#raw-module

You don’t need to worry about the type of ssh client.
Ansible is going to take care of it, as long as you have proper ansible.cfg configuration file in place.

https://docs.ansible.com/ansible/latest/user_guide/connection_details.html

Hi,

Thank you for your reply. I’m very much new to ansible and hav been running only raw commands which I’ve learned from online tutorials. I’ve made a small modular program in python which uses the paramiko library. Below is the structure of the code which I’ve written in python to change the ip address of some interfaces (the code has other modules as well which write the results of these executions on excel). In the program, i’ve created a class to create ssh connection with a server, and then use the connection object in next class to connect to devices and then send commands to my devices and get the relevant outputs.
I just wanted to know how this functionality can be achieved with the help of ansible? It would be a great help for me if someone could provide me the solution. Thank you in advance for the support.

import paramiko

class connection():

def init(self, address, username, password):
#connection module

def openShell(self):
#invoke shell module

def sendShell(self, command, show=“show”):
#send shell module

def getdata(self):
#get shell data module

def closeConnection(self):
#close connection

class connectToDevices():

def init(self, var1, var2):
#connect to jumphost

def assign_ip(int, address):
#get existing ip
#comare with provided ip
#assign IP if different else do nothing

def get_ip(int, address):
#capture existing ip

Thank You,

Kind Regards,
Ashwajit

Hi,
https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html

Refer this link. It will show how to create custom modules.