Beginning any activity we need to take stock of what tools we have at our disposal and what ones we are missing. As a network engineer of over 25 years my tools are very basic...
Putty anyone? Now you may prefer SecureCRT or something similar. Whatever you prefer is fine. They all do the same thing... get you access via serial or SSH to a network device.
As we start down the road of network automation there will be other tools that we will need to start using. The first two that you will add to your toolbox are...
This can be as fancy as Visual Studio or as simple as notepad. Here are my list of features to look for.
- Syntax highlighting
- Line numbers - really. You'll be tracking down errors based upon line number.
- Auto Bracket pairing - trying to find a missing ] ) or } in a sea of brackets... PITA.
- Integration of code repositories
If your editor doesn't have builtin capabilities for communicating/creating a code repository you need to get access to a code repository and use the manual tools. If you still don't know where to start, start with git. I would be careful to not to immediately create a github.com account. I think github is a great service, but as you start on the journey of turning your network configurations into code you will make mistakes. (information disclosures, passwords in clear text, etc). It is better that you don't post those mistakes to a public service. Once you are familiar with how code repositories work, then if it still makes sense, use github.
Finally the core of automation is the automation environment. Fortunately, there are now several good environment to choose from. Both opensource and commercial options exists.
Here are several opensource project to get started with:
You organization may already have a preferred environment. If so that is probably the one to choose because a) someone else is already managing that environment and you will not inherit yet another job, and b) you have someone who is more experienced to go to for questions (which you will have).
Whichever one you choose, spend some time and even $ on training. There are tons of free and paid training on all of these products. I understand the temptation to start trying to immediately get the "hello world" script working. However, spend some time understanding what this environment actually is and how it does what it does. Spending time here will pay off.
Finally you will want a test environment. Ideally you'll want to have an environment setup like common sites with the same equipment. As you start testing your automation scripts there will be issues. Most of them you'll cause, but some will be because of the way a particular version of code handles (or doesn't) the commands you are trying to give it. Virtual environments are also good (they will get you 90% the way there) if a physical environment isn't practical for some reason.
In the next article I'll explore using the new tools and knowledge to create automation.