Forum Discussion

Y4ssine's avatar
Y4ssine
Icon for Nimbostratus rankNimbostratus
Aug 12, 2022
Solved

F5 network automation: Python vs Golang

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.

  • 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 🙂

4 Replies

  • 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 🙂

  • xuwen's avatar
    xuwen
    Icon for Cumulonimbus rankCumulonimbus

    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

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