2

When we say network automation, what "automation" are we talking about? What is that being automated?

I've heard that in network automation we do not have to configure each individual devices because there is a central controller where we can manage the whole network. If that's the case then since Ubiquiti has Unifi Controller is that already a network automation?

If yes then why do we have to know programming if we can just use a GUI?

How exactly is network automation different from normal networking?

3
  • It sounds like you generally know the answer; maybe you're looking for some additional examples? An example of what I do is, use ansible to manage common config-fragments on hundreds of routers & switches so my clients don't have to login to them individually to make updates to ACLs, routing policies, etc. by hand. ansible is one tool for this; in some environments I use different ones. Interface & route provisioning tools are another form of automation used widely in large and mid-size networks. Aug 4 '20 at 18:49
  • The question of network automation is often also beyond just the network itself. For example - a new server (virtual or physical) is commissioned. IPAM needs to be queried/programmed, DHCP/DNS provisioned, possibly load balancers and firewalls. Depending on what's happening the various routers, switches and IDS/IPS might have to be configured. Monitoring tools need to be provisioned accodingly. Perhaps all those processes are automated and are, in turn, driven by a user requesting an additional web server (..and all of the app and OS automation tasks required as well).
    – rnxrx
    Aug 5 '20 at 1:32
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can post and accept your own answer.
    – Ron Maupin
    Dec 17 '20 at 20:27
2

If that's the case then since Ubiquiti has Unifi Controller is that already a network automation?

Essentially, yes. You could also consider it a form of Software Defined Networking (SDN).

If yes then why do we have to know programming if we can just use a GUI?

For one product from a single manufacturer, you probably don't. But large networks can have hundreds or thousands of devices from several different manufacturers. Making a change may require changes on several different systems that require staff with differing expertise.

Here's one example: to deploy a new application you may need to:

  1. Create a new virtual server (maybe more than one).
  2. Install software on that server
  3. Configure the software a certain way
  4. Assign the server an IP address
  5. Create a DNS entry for that address
  6. Adjust firewall rules for that new server
  7. Possibly adjust a load balancer for that server
  8. Add the new server (and application) to your monitoring system(s).

All these tasks require several people, and all the systems are from different manufacturers. If you need to do this frequently, it makes sense to automate this process as much as possible to reduce costs and make the deployment faster.

Here's the real reason you need to learn programming:

Automation in networking is in its infancy. There are few standards, too many different ways of doing things, competition between manufacturers for who is in "control," etc. Engineers have to build their own automation tools to get their jobs done because no comprehensive systems exist yet.

1
  • Ok, so it all boils down to being universal. So meaning if you know Python for example then you can configure any networking device from any manufacturer even without knowing the manufacturer's way of configuration, is that correct?
    – Noob_Guy
    Aug 14 '20 at 8:37
2

If yes then why do we have to know programming if we can just use a GUI?

Documenting what you clicked in a GUI is very hard and time consuming. Even with documentation it is sometimes hard to remember how you accomplished something a couple of month before.

Writing a script (and would not consider this programming) is more work in the beginning but you even without comments you have some form of documentation what you have done and a template for changes you have to do later.

Putting those scripts under version control (e.g. git) also provides you with some form of automatic documentation when which changes are made.

So if you setup a device only once and then never change it a GUI is okay. If you do changes on a regular basis start scripting. Tools like ansible are not that hard to learn and provide good support for all kinds of networking (and other) systems.

With scripting you can even move simple but time consuming tasks to other people. They don't need to know how to configure a device, they just need to know how to run a script (or, if you want something fancy program a small web interface for them).

Another think you can accomplish with scripting is to generate your configs from your documentation. So instead of changing something and then documenting (which will probably forgotten) document the what you want to change and let some scripts to the actual work.

2
  • Ok, so it all boils down to being universal. So meaning if you know Python for example then you can configure any networking device from any manufacturer even without knowing the manufacturer's way of configuration, is that correct?
    – Noob_Guy
    Aug 14 '20 at 8:37
  • Knowing Python helps as many as the tools to abstract the configuration are written in Python. But you still have to know how a vendor implements stuff and if your automation fails you have to know how to troubleshoot on a device. There are some frameworks like napalm-automation.net which offer one API for different vendors.
    – user2084
    Aug 14 '20 at 14:04
1

Network automation is word we are frequently hearing nowadays, and companies are even looking forward to automating their network infrastructure operation.

For example, big organizations like banks will have their own data centers and end to end infrastructure that is maintained by the bank only. Every day lots of changes will happen in they network according to their business requirements. So the IT department has to do changes manually.
For example, every day deploying new applications, business expansion, DR drills activities, taking devices configuration backup, taking DHCP logs, traffic logs, and creating policies in firewalls (every day about 200 policies need to be changed or deleted). To do this job requires a number of skilled engineers. Organizations want to automate such tasks so that they can reduce manpower and lower costs.

2
  • Ok, so it all boils down to being universal. So meaning if you know Python for example then you can configure any networking device from any manufacturer even without knowing the manufacturer's way of configuration, is that correct?
    – Noob_Guy
    Aug 14 '20 at 8:37
  • That would be nice, wouldn't it?. That's the goal with things like YANG models, but we're not there yet. You still need to know the particulars of a vendor's device.
    – Ron Trunk
    Aug 14 '20 at 15:17
0

You're already on the right track. "Network automation" is any way you manage multiple network devices at once. You might use a proprietary tool that only works with one vendor's devices or just a single series, or you might use a more powerful tool that works with different devices and even different vendors.

Since configuration logic may sometimes be quite different between device series and even between vendors, a cross-platform management may require active programming to make your general configuration policies work on all your devices. So, depending on your device zoo, network automation can be quite easy, but it may also require some very sophisticated work.

2
  • Ok, so it all boils down to being universal. So meaning if you know Python for example then you can configure any networking device from any manufacturer even without knowing the manufacturer's way of configuration, is that correct?
    – Noob_Guy
    Aug 14 '20 at 8:38
  • @Noob_Guy Only if you've got a framework with an abstraction layer that hides the manufacturer's way from you. Many frameworks only help you with the SSH/telnet console and error handling and you still have to write the actual commands yourself. Unless you use something general like OpenFlow, syntax and logic differences between vendors may be vast and (more or less) subtle between different series from the same vendor.
    – Zac67
    Aug 14 '20 at 9:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.