cancel
Showing results for 
Search instead for 
Did you mean: 

F5 network automation: Python vs Golang

Y4ssine
Nimbostratus
Nimbostratus

Hello everyone.

I always have a passion for F5 and I see myself becoming an expert in this field, only thing I am currently struggling with is choosing my network automation programming language. I see there are a lot of packeges libaries and existing code with Python for F5, but I don't see so much about Go. 

From my research it seems that Go would be a better choice in the field of Network automation, Network Security (Ethical Hacking)/Pentesting) etc.. But like I mentiond, I also want it to be useful for my F5 skills.

So, focussing on F5 skills.. Should I specialize in Go or Python ? Would it be a bad choice to go for Go even if there is not much documentation ? Looking forward to your feedback.

1 ACCEPTED SOLUTION

AaronJB
F5 SIRT
F5 SIRT

IMHO, if you are early in your career, I would caution against specialising in either language - build a working understanding of both and make sure you are at least conversant in them and every other language you can get your hands on..

Speaking to current BIG-IP products (LTM, ASM and so on), Python is an easily accessible route to automation - as @xuwen says, it makes it very easy to talk to iControl REST. It's also a great language for quick & dirty pentest tools, doing analysis on datasets, knocking together quick web apps for testing or internal use etc. What it's not so great at (IMHO) is talking directly to the network stack..

Moving forward into cloud orchestration then Go can be a useful tool. It's also better (again, IMHO) at dealing with the network stack and more easily extensible if you need to put together a tool to test out very specific corner cases (like hunting for SSL stack vulnerabilities). It helps that Kubernetes is mostly Go, of course.

While I'm here, though, I'd say more important than thinking about language use is thinking about where you want to go in your career. 

 

If you want to focus on automation (network automation, F5 automation etc) then I would lean toward Python. Make sure you have a strong understanding of bash scripting as well!

If you want to focus on security and look toward penetration testing then the deeper you want to go into this topic, the more languages you're probably going to want to be familiar with - at least until/if you pick a specialty. A lot of people are never going to be in a position to specialise in a single language, however, so get famliar with at least the big guns: C, C++, Java. Having an understanding of assembly language will also take you a long way as you get deeper into pentesting and exploit development (x86 is relatively easy to learn, ARM is coming on strong of course).

Finally.. Rust is starting to gain some significant traction, so keep your eye on that one, too!

When it comes to security, it pays to be a polyglot 🙂

View solution in original post

4 REPLIES 4

xuwen
Cirrostratus
Cirrostratus

The GO language seems to be strong in the automation of docker containers and k8s cloud platforms. F5's energy seems to be transferred to a multi-cloud environment, instead of the original LTM, GTM traditional concept modules, F5 automation, using go and python languages, nothing more than the main Generate an http uri request from icontrol rest and push it to the device, or parse the properties of the json data returned by the device

Millie
Altostratus
Altostratus

Though Python has been on the front seat of network automationGo programming language can help the network engineers as well as organization

AaronJB
F5 SIRT
F5 SIRT

IMHO, if you are early in your career, I would caution against specialising in either language - build a working understanding of both and make sure you are at least conversant in them and every other language you can get your hands on..

Speaking to current BIG-IP products (LTM, ASM and so on), Python is an easily accessible route to automation - as @xuwen says, it makes it very easy to talk to iControl REST. It's also a great language for quick & dirty pentest tools, doing analysis on datasets, knocking together quick web apps for testing or internal use etc. What it's not so great at (IMHO) is talking directly to the network stack..

Moving forward into cloud orchestration then Go can be a useful tool. It's also better (again, IMHO) at dealing with the network stack and more easily extensible if you need to put together a tool to test out very specific corner cases (like hunting for SSL stack vulnerabilities). It helps that Kubernetes is mostly Go, of course.

While I'm here, though, I'd say more important than thinking about language use is thinking about where you want to go in your career. 

 

If you want to focus on automation (network automation, F5 automation etc) then I would lean toward Python. Make sure you have a strong understanding of bash scripting as well!

If you want to focus on security and look toward penetration testing then the deeper you want to go into this topic, the more languages you're probably going to want to be familiar with - at least until/if you pick a specialty. A lot of people are never going to be in a position to specialise in a single language, however, so get famliar with at least the big guns: C, C++, Java. Having an understanding of assembly language will also take you a long way as you get deeper into pentesting and exploit development (x86 is relatively easy to learn, ARM is coming on strong of course).

Finally.. Rust is starting to gain some significant traction, so keep your eye on that one, too!

When it comes to security, it pays to be a polyglot 🙂

Thanks for your clear answer!